using Sap.Data.Hana; using System.Data; namespace Net.Data.HelperData.HelperProcesoPermitido { public class HelperProcesoPiciking { public static void Set(string Proceso, int IdEstado, int DocEntry, string CodMotivo, string Code) { using (HanaConnection con = new HanaConnection(LocalData.ConnectionString)) { con.Open(); HanaCommand cmd = new HanaCommand(); // Parametrizado (antes interpolaba el string directo - SQL injection // real, ver docs/PORTE_FUNCIONALIDAD_NUEVA.md hallazgo #6): Proceso y // CodMotivo vienen del body del request HTTP sin validar. cmd.CommandText = $"CALL \"{LocalData.Schema}\".\"ITCA_WMS_SAP_SetProcesoPicking\"(?, ?, ?, ?, ?, ?, ?)"; cmd.Parameters.Add("Proceso", HanaDbType.VarChar).Value = Proceso; cmd.Parameters.Add("IdEstado", HanaDbType.Integer).Value = IdEstado; cmd.Parameters.Add("DocEntry", HanaDbType.Integer).Value = DocEntry; cmd.Parameters.Add("HoraInicio", HanaDbType.VarChar).Value = ""; cmd.Parameters.Add("HoraFin", HanaDbType.VarChar).Value = ""; cmd.Parameters.Add("CodMotivo", HanaDbType.VarChar).Value = CodMotivo; cmd.Parameters.Add("Code", HanaDbType.VarChar).Value = Code; cmd.CommandType = System.Data.CommandType.Text; cmd.Connection = con; cmd.ExecuteNonQuery(); con.Close(); } } public static void Set(string Proceso, int IdEstado, int DocEntry, int? HoraInicio, int? HoraFin, string CodMotivo, string Code) { using (HanaConnection con = new HanaConnection(LocalData.ConnectionString)) { con.Open(); HanaCommand cmd = new HanaCommand(); // Ver nota de parametrizacion en la sobrecarga de arriba. cmd.CommandText = $"CALL \"{LocalData.Schema}\".\"ITCA_WMS_SAP_SetProcesoPicking\"(?, ?, ?, ?, ?, ?, ?)"; cmd.Parameters.Add("Proceso", HanaDbType.VarChar).Value = Proceso; cmd.Parameters.Add("IdEstado", HanaDbType.Integer).Value = IdEstado; cmd.Parameters.Add("DocEntry", HanaDbType.Integer).Value = DocEntry; cmd.Parameters.Add("HoraInicio", HanaDbType.VarChar).Value = HoraInicio?.ToString() ?? ""; cmd.Parameters.Add("HoraFin", HanaDbType.VarChar).Value = HoraFin?.ToString() ?? ""; cmd.Parameters.Add("CodMotivo", HanaDbType.VarChar).Value = CodMotivo; cmd.Parameters.Add("Code", HanaDbType.VarChar).Value = Code; cmd.CommandType = System.Data.CommandType.Text; cmd.Connection = con; cmd.ExecuteNonQuery(); con.Close(); } } } }