private void GrabarOrdenDeVenta(object sender, IList <OrdenDeVentaDetalle> detalle, string gps) { try { decimal total = 0; foreach (var itemOrden in OrdenDeVentaDetalles) { total += itemOrden.TOTAL_LINE; } OrdenDeVentaEncabezado ordenDeVentaEncabezado = new OrdenDeVentaEncabezado(); ordenDeVentaEncabezado.CLIENT_ID = UiListaCliente.GridView.GetRowValues(UiListaCliente.GridView.FocusedRowIndex, "CODE_CUSTOMER").ToString(); ordenDeVentaEncabezado.POS_TERMINAL = Usuario.SELLER_ROUTE; ordenDeVentaEncabezado.GPS_URL = gps; ordenDeVentaEncabezado.TOTAL_AMOUNT = total; ordenDeVentaEncabezado.POSTED_BY = Session["LOGIN"].ToString(); ordenDeVentaEncabezado.GPS_EXPECTED = UiListaCliente.GridView.GetRowValues(UiListaCliente.GridView.FocusedRowIndex, "GPS").ToString(); ordenDeVentaEncabezado.DELIVERY_DATE = UiFechaDeEntrega.Date; ordenDeVentaEncabezado.CODE_WAREHOUSE = Usuario.PRESALE_WAREHOUSE; ordenDeVentaEncabezado.DOC_SERIE = Usuario.DOC_SERIE; ordenDeVentaEncabezado.DOC_NUM = Usuario.DOC_NUM; ordenDeVentaEncabezado.DISCOUNT = UiSpinDescuentoAplicado.Number; ordenDeVentaEncabezado.REFERENCE_ID = (ordenDeVentaEncabezado.POS_TERMINAL + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + "-" + ordenDeVentaEncabezado.DOC_NUM); ordenDeVentaEncabezado.Detalles = detalle; UsuarioDeseaGrabarOrdenDeVenta?.Invoke(sender, new OrdenDeVentaArgumento { Data = ordenDeVentaEncabezado }); } catch (Exception ex) { EstablecerError(ex.Message, sender); } }
public Operacion CambiarFechaDeEntregaAOrdenDeVenta(OrdenDeVentaEncabezado ordenDeVentaEncabezado) { try { Operacion op; DbParameter[] parameters = { new OAParameter { ParameterName = "@DOC_SERIE", Value = ordenDeVentaEncabezado.DOC_SERIE } , new OAParameter { ParameterName = "@DOC_NUM", Value = ordenDeVentaEncabezado.DOC_NUM } , new OAParameter { ParameterName = "@DELIVERY_DATE", Value = ordenDeVentaEncabezado.DELIVERY_DATE } }; op = BaseDeDatosServicio.ExecuteQuery <Operacion>("SWIFT_SP_UPDATE_DELIVERY_DATE_BY_SALES_ORDER", CommandType.StoredProcedure, parameters)[0]; if (op.Resultado == ResultadoOperacionTipo.Error) { BaseDeDatosServicio.Rollback(); return(op); } return(op); } catch (DbException e) { BaseDeDatosServicio.Rollback(); return(new Operacion { Codigo = e.ErrorCode, Mensaje = e.HumanReadMessage(), Resultado = Tipos.ResultadoOperacionTipo.Error }); } catch (Exception ex) { BaseDeDatosServicio.Rollback(); return(new Operacion { Codigo = -1, Mensaje = ex.Message, Resultado = Tipos.ResultadoOperacionTipo.Error }); } }
private Operacion CrearPolizaDeDespachoDeUnaOrdenDeVenta(OrdenDeVentaEncabezado encabezado, string login, TipoFuenteDemandaDespacho tipoFuente) { var poliza = new Poliza { FECHA_LLEGADA = DateTime.Now, LAST_UPDATED_BY = login, LAST_UPDATED = DateTime.Now, CLIENT_CODE = encabezado.SOURCE_NAME, FECHA_DOCUMENTO = DateTime.Now, EXTERNAL_SOURCE_ID = encabezado.EXTERNAL_SOURCE_ID, SALES_ORDER_ID = encabezado.SALES_ORDER_ID }; var op = new Operacion(); DbParameter[] parameters = { new OAParameter { ParameterName = "@DOC_ID", Value = 0 }, new OAParameter { ParameterName = "@FECHA_LLEGADA", Value = poliza.FECHA_LLEGADA }, new OAParameter { ParameterName = "@LAST_UPDATED_BY", Value = poliza.LAST_UPDATED_BY }, new OAParameter { ParameterName = "@LAST_UPDATED", Value = poliza.LAST_UPDATED }, new OAParameter { ParameterName = "@CLIENT_CODE", Value = poliza.CLIENT_CODE }, new OAParameter { ParameterName = "@FECHA_DOCUMENTO", Value = poliza.FECHA_DOCUMENTO }, new OAParameter { ParameterName = "@TIPO", Value = poliza.TIPO }, new OAParameter { ParameterName = "@CODIGO_POLIZA", Value = poliza.SALES_ORDER_ID + "-" + Enums.GetStringValue(tipoFuente).Replace(" ", "") + '-' + poliza.CLIENT_CODE } }; op = BaseDeDatosServicio.ExecuteQuery <Operacion>(BaseDeDatosServicio.Esquema + ".OP_WMS_SP_INSERT_POLIZA_HEADER", CommandType.StoredProcedure, false, parameters)[0]; return(op); }
public IList <OrdenDeVentaDetalle> ObtenerDetalleDeOrdenesDeVenta(OrdenDeVentaEncabezado ordenDeVentaEncabezado) { DbParameter[] parameters = { new OAParameter { ParameterName = "@SALES_ORDERS_IDS", Value = ordenDeVentaEncabezado.SALES_ORDERS_IDS } }; return(BaseDeDatosServicio.ExecuteQuery <OrdenDeVentaDetalle>("SWIFT_SP_GET_DETAIL_SALES_ORDER_FOR_PICKING", CommandType.StoredProcedure, parameters)); }
public Operacion AutorizarOrdenDeVenta(OrdenDeVentaEncabezado ordenDeVentaEncabezado) { try { BaseDeDatosServicio.BeginTransaction(); Operacion op; DbParameter[] parameters = { new OAParameter { ParameterName = "@SALES_ORDER_ID", Value = ordenDeVentaEncabezado.SALES_ORDER_ID } , new OAParameter { ParameterName = "@LOGIN", Value = ordenDeVentaEncabezado.LOGIN } }; op = BaseDeDatosServicio.ExecuteQuery <Operacion>("SWIFT_SP_AUTHORIZE_SALES_ORDER", CommandType.StoredProcedure, parameters)[0]; if (op.Resultado == ResultadoOperacionTipo.Error) { BaseDeDatosServicio.Rollback(); return(op); } return(op); } catch (DbException e) { BaseDeDatosServicio.Rollback(); return(new Operacion { Codigo = e.ErrorCode, Mensaje = e.HumanReadMessage(), Resultado = Tipos.ResultadoOperacionTipo.Error }); } catch (Exception ex) { BaseDeDatosServicio.Rollback(); return(new Operacion { Codigo = -1, Mensaje = ex.Message, Resultado = Tipos.ResultadoOperacionTipo.Error }); } }
public IList <OrdenDeVentaDetalle> ObtenerDetallePorOrdenDeVenta(OrdenDeVentaEncabezado ordenDeVentaEncabezado) { DbParameter[] parameters = { new OAParameter { ParameterName = "@SALES_ORDER_ID", Value = ordenDeVentaEncabezado.SALES_ORDER_ID } }; return(BaseDeDatosServicio.ExecuteQuery <OrdenDeVentaDetalle>("SONDA_SP_GET_DETAIL_X_SALE_ORDER", CommandType.StoredProcedure, parameters)); }
private Poliza CrearPoliza(PickingArgumento argumento, OrdenDeVentaEncabezado encabezado) { var operacionPoliza = CrearPolizaDeDespachoDeUnaOrdenDeVenta(encabezado, argumento.Login, argumento.TipoDespacho); if (operacionPoliza.Resultado == ResultadoOperacionTipo.Error) { throw new Exception("Error. No se pudo crear la poliza de despacho " + encabezado.SALES_ORDER_ID + ": " + operacionPoliza.Mensaje); } var poliza = new Poliza { CODIGO_POLIZA = operacionPoliza.DbData }; return(poliza); }
public IList <OrdenDeVentaDetalle> ObtenerOrdenVentaDetalle(OrdenDeVentaEncabezado encabezado) { DbParameter[] parameters = { new OAParameter { ParameterName = "@SALES_ORDER_ID", Value = encabezado.SALES_ORDER_ID }, new OAParameter { ParameterName = "@EXTERNAL_SOURCE_ID", Value = encabezado.EXTERNAL_SOURCE_ID } }; return(BaseDeDatosServicio.ExecuteQuery <OrdenDeVentaDetalle>(BaseDeDatosServicio.Esquema + ".OP_WMS_SP_GET_SALE_ORDER_DETAIL_FROM_EXTERNAL", CommandType.StoredProcedure, parameters).ToList()); }
public Operacion MarcarOrdenDeVentaConPicking(OrdenDeVentaEncabezado ordenDeVenta) { BaseDeDatosServicio.BeginTransaction(); try { DbParameter[] parameters = { new OAParameter { ParameterName = "@SALES_ORDER_ID", Value = ordenDeVenta.SALES_ORDER_ID }, new OAParameter { ParameterName = "@EXTERNAL_SOURCE_ID", Value = ordenDeVenta.EXTERNAL_SOURCE_ID } }; var op = BaseDeDatosServicio.ExecuteQuery <Operacion>(BaseDeDatosServicio.Esquema + ".OP_WMS_SP_SET_SALE_ORDER_MAKE_PICKING_FROM_EXTERNAL_SOURCE", CommandType.StoredProcedure, parameters)[0]; BaseDeDatosServicio.Commit(); return(op); } catch (DbException e) { BaseDeDatosServicio.Rollback(); return(new Operacion { Codigo = e.ErrorCode, Mensaje = e.Message, Resultado = ResultadoOperacionTipo.Error }); } catch (Exception ex) { BaseDeDatosServicio.Rollback(); return(new Operacion { Codigo = -1, Mensaje = ex.Message, Resultado = ResultadoOperacionTipo.Error }); } }
public IList <OrdenDeVentaEncabezado> ObtenerOrdenDeVentaPorFecha(OrdenDeVentaEncabezado ordenDeVentaEncabezado) { DbParameter[] parameters = { new OAParameter { ParameterName = "@POSTED_DATETIME", Value = ordenDeVentaEncabezado.POSTED_DATETIME }, new OAParameter { ParameterName = "@CLOSED_ROUTE_DATETIME", Value = ordenDeVentaEncabezado.CLOSED_ROUTE_DATETIME }, new OAParameter { ParameterName = "@LOGIN", Value = ordenDeVentaEncabezado.LOGIN } }; return(BaseDeDatosServicio.ExecuteQuery <OrdenDeVentaEncabezado>("SONDA_SP_GET_SALE_X_DATE", CommandType.StoredProcedure, parameters)); }
/// <summary> /// Evento de vista de control /// </summary> protected void UiVisOrdenesVenta_CustomCallback(object sender, DevExpress.Web.ASPxGridViewCustomCallbackEventArgs e) { if (!ValidarConexionYUsuarioLogueado(sender)) { return; } OrdenDeVentaEncabezado ordenDeVentaEncabezado = new OrdenDeVentaEncabezado(); switch (e.Parameters.Split('-')[0]) { case "ObtenerOrdenesVenta": ordenDeVentaEncabezado.POSTED_DATETIME = DateTime.Parse(UiFechaInicio.Value.ToString()); ordenDeVentaEncabezado.CLOSED_ROUTE_DATETIME = DateTime.Parse(UiFechaFinal.Value.ToString()); ordenDeVentaEncabezado.LOGIN = Session["LOGIN"].ToString(); if (ordenDeVentaEncabezado.POSTED_DATETIME > ordenDeVentaEncabezado.CLOSED_ROUTE_DATETIME) { UiVisOrdenesVenta.JSProperties.Add("cpError", "La fecha inicio es mayor a la fecha final"); } else { UsuarioDesesaObtenerOrdenesDeVenta?.Invoke(sender, new OrdenVentaArgumento { Data = ordenDeVentaEncabezado }); } break; case "Anular": var ordenDeVentaAnular = UiVisOrdenesVenta.GetRowValues(int.Parse(e.Parameters.Split('-')[1]), "SALES_ORDER_ID;DOC_SERIE;DOC_NUM"); ordenDeVentaEncabezado.POSTED_DATETIME = DateTime.Parse(UiFechaInicio.Value.ToString()); ordenDeVentaEncabezado.CLOSED_ROUTE_DATETIME = DateTime.Parse(UiFechaFinal.Value.ToString()); ordenDeVentaEncabezado.LOGIN = Session["LOGIN"].ToString(); ordenDeVentaEncabezado.SALES_ORDER_ID = int.Parse(ordenDeVentaAnular.ToString().Split('|')[0]); ordenDeVentaEncabezado.DOC_SERIE = ordenDeVentaAnular.ToString().Split('|')[1]; ordenDeVentaEncabezado.DOC_NUM = int.Parse(ordenDeVentaAnular.ToString().Split('|')[2]); ordenDeVentaEncabezado.IS_VOID = "1"; UsuarioDeseaCancelarOrdenDeVenta?.Invoke(sender, new OrdenVentaArgumento { Data = ordenDeVentaEncabezado }); break; case "CambiarFechaDeEntrega": var ordenDeVentaVista = (OrdenDeVentaEncabezado)UiVisOrdenesVenta.GetRow(int.Parse(e.Parameters.Split('-')[1])); if (DateTime.Parse(UiFechaOrdenDeVenta.Value.ToString()).Date < DateTime.Today.Date) { UiVisOrdenesVenta.JSProperties.Add("cpErrorFecha", "La fecha tiene que ser mayor o igual a la fecha actual."); } else if (ordenDeVentaVista.DELIVERY_DATE != null && DateTime.Parse(UiFechaOrdenDeVenta.Value.ToString()).Date == DateTime.Today.Date && e.Parameters.Split('-')[2] == "0") { UiVisOrdenesVenta.JSProperties.Add("cpAdvertenciaFecha", "Selecciono la fecha hoy, no podra anular la orden de venta. Desea continuar?"); } else { ordenDeVentaEncabezado.POSTED_DATETIME = DateTime.Parse(UiFechaInicio.Value.ToString()); ordenDeVentaEncabezado.CLOSED_ROUTE_DATETIME = DateTime.Parse(UiFechaFinal.Value.ToString()); ordenDeVentaEncabezado.LOGIN = Session["LOGIN"].ToString(); ordenDeVentaEncabezado.SALES_ORDER_ID = ordenDeVentaVista.SALES_ORDER_ID; ordenDeVentaEncabezado.DOC_SERIE = ordenDeVentaVista.DOC_SERIE; ordenDeVentaEncabezado.DOC_NUM = ordenDeVentaVista.DOC_NUM; ordenDeVentaEncabezado.DELIVERY_DATE = DateTime.Parse(UiFechaOrdenDeVenta.Value.ToString()).Date; UsuarioDeseaCambiarFechaDeEntrega?.Invoke(sender, new OrdenVentaArgumento { Data = ordenDeVentaEncabezado }); UiVisOrdenesVenta.JSProperties.Add("cpCerrarPopupFecha", "Enabled"); } break; } }
public Operacion CrearOrdenDeVenta(OrdenDeVentaEncabezado ordenDeVentaEncabezado) { try { DbParameter[] parameters = { new OAParameter { ParameterName = "@CLIENT_ID", Value = ordenDeVentaEncabezado.CLIENT_ID }, new OAParameter { ParameterName = "@POS_TERMINAL", Value = ordenDeVentaEncabezado.POS_TERMINAL }, new OAParameter { ParameterName = "@GPS_URL", Value = ordenDeVentaEncabezado.GPS_URL } , new OAParameter { ParameterName = "@TOTAL_AMOUNT", Value = ordenDeVentaEncabezado.TOTAL_AMOUNT } , new OAParameter { ParameterName = "@POSTED_BY", Value = ordenDeVentaEncabezado.POSTED_BY } , new OAParameter { ParameterName = "@GPS_EXPECTED", Value = ordenDeVentaEncabezado.GPS_EXPECTED } , new OAParameter { ParameterName = "@DELIVERY_DATE", Value = ordenDeVentaEncabezado.DELIVERY_DATE } , new OAParameter { ParameterName = "@REFERENCE_ID", Value = ordenDeVentaEncabezado.REFERENCE_ID } , new OAParameter { ParameterName = "@WAREHOUSE", Value = ordenDeVentaEncabezado.CODE_WAREHOUSE } , new OAParameter { ParameterName = "@DOC_SERIE", Value = ordenDeVentaEncabezado.DOC_SERIE } , new OAParameter { ParameterName = "@DOC_NUM", Value = (ordenDeVentaEncabezado.DOC_NUM + 1) } , new OAParameter { ParameterName = "@DISCOUNT", Value = ordenDeVentaEncabezado.DISCOUNT } }; var op = BaseDeDatosServicio.ExecuteQuery <Operacion>("SWIFT_SP_INSERT_SALES_ORDER_HEADER", CommandType.StoredProcedure, parameters)[0]; if (op.Resultado == ResultadoOperacionTipo.Exito) { var id = op.DbData; foreach (OrdenDeVentaDetalle detalle in ordenDeVentaEncabezado.Detalles) { DbParameter[] parametersDetails = { new OAParameter { ParameterName = "@SALES_ORDER_ID", Value = id } , new OAParameter { ParameterName = "@SKU", Value = detalle.SKU } , new OAParameter { ParameterName = "@LINE_SEQ", Value = detalle.LINE_SEQ } , new OAParameter { ParameterName = "@QTY", Value = detalle.QTY } , new OAParameter { ParameterName = "@PRICE", Value = detalle.PRICE } , new OAParameter { ParameterName = "@DISCOUNT", Value = detalle.DISCOUNT } , new OAParameter { ParameterName = "@TOTAL_LINE", Value = detalle.TOTAL_LINE } , new OAParameter { ParameterName = "@COMBO_REFERENCE", Value = detalle.COMBO_REFERENCE } , new OAParameter { ParameterName = "@CODE_WAREHOUSE", Value = ordenDeVentaEncabezado.CODE_WAREHOUSE } }; op = BaseDeDatosServicio.ExecuteQuery <Operacion>("SWIFT_SP_INSERT_SALES_ORDER_DETAIL", CommandType.StoredProcedure, false, parametersDetails)[0]; if (op.Resultado == ResultadoOperacionTipo.Error) { BaseDeDatosServicio.Rollback(); return(op); } } if (op.Resultado == ResultadoOperacionTipo.Exito) { DbParameter[] parametersDocument = { new OAParameter { ParameterName = "@DOC_TYPE", Value = Enums.GetStringValue(DocumentoTipo.OrdenDeVenta) } , new OAParameter { ParameterName = "@DOC_SERIE", Value = ordenDeVentaEncabezado.DOC_SERIE } , new OAParameter { ParameterName = "@DOC_NUM", Value = (ordenDeVentaEncabezado.DOC_NUM + 1) } }; op = BaseDeDatosServicio.ExecuteQuery <Operacion>("SONDA_SP_UPDATE_DOCUMENT_SEQUENCE_BO", CommandType.StoredProcedure, false, parametersDocument)[0]; if (op.Resultado == ResultadoOperacionTipo.Error) { BaseDeDatosServicio.Rollback(); return(op); } BaseDeDatosServicio.Commit(); return(op); } BaseDeDatosServicio.Rollback(); return(op); } BaseDeDatosServicio.Rollback(); return(op); } catch (DbException e) { BaseDeDatosServicio.Rollback(); return(new Operacion { Codigo = e.ErrorCode, Mensaje = e.HumanReadMessage(), Resultado = Tipos.ResultadoOperacionTipo.Error }); } catch (Exception ex) { BaseDeDatosServicio.Rollback(); return(new Operacion { Codigo = -1, Mensaje = ex.Message, Resultado = Tipos.ResultadoOperacionTipo.Error }); } }
private int CrearDocumentoDemandaDespacho(PickingArgumento argumento, OrdenDeVentaEncabezado encabezado, int wavePickingId, IList <Picking> pickings) { var tipoDespacho = Enums.GetStringValue(TipoDemandaDespacho.OrdenVenta); if (argumento.TipoDespacho == TipoFuenteDemandaDespacho.SolicitudTrasladoErp || argumento.TipoDespacho == TipoFuenteDemandaDespacho.SolicitudTrasladoWms) { tipoDespacho = Enums.GetStringValue(TipoDemandaDespacho.SolicitudTraslado); } var demandaHeader = new DemandaDespachoHeader { IS_FROM_SONDA = encabezado.IS_FROM_SONDA, IS_FROM_ERP = encabezado.IS_FROM_ERP, LAST_UPDATE_BY = argumento.Login, CLIENT_CODE = encabezado.CLIENT_ID, CUSTOMER_NAME = encabezado.CUSTOMER_NAME, CODE_SELLER = encabezado.CODE_SELLER, CODE_ROUTE = encabezado.CODE_ROUTE, CODE_WAREHOUSE = argumento.Bodega, DOC_NUM = encabezado.SALES_ORDER_ID, DOC_NUM_SEQUENCE = encabezado.DOC_NUM, LAST_UPDATE = DateTime.Now, SERIAL_NUMBER = encabezado.DOC_SERIE, TOTAL_AMOUNT = encabezado.TOTAL_AMOUNT, WAVE_PICKING_ID = wavePickingId, IS_COMPLETED = encabezado.IS_COMPLETED, EXTERNAL_SOURCE_ID = encabezado.EXTERNAL_SOURCE_ID, DOC_ENTRY = encabezado.DOC_ENTRY, IS_CONSOLIDATED = argumento.EsConsolidado ? 1 : 0, PRIORITY = encabezado.Prioridad, CLIENT_OWNER = encabezado.CLIENT_OWNER, MASTER_ID_SELLER = encabezado.MASTER_ID_SELLER, SELLER_OWNER = encabezado.SELLER_OWNER, OWNER = encabezado.OWNER, SOURCE_TYPE = Enums.GetStringValue(argumento.TipoDespacho), DEMAND_TYPE = tipoDespacho, WAREHOUSE_FROM = encabezado.WAREHOUSE_FROM, WAREHOUSE_TO = encabezado.WAREHOUSE_TO, DELIVERY_DATE = encabezado.DELIVERY_DATE.GetValueOrDefault().Date, ADDRESS_CUSTOMER = encabezado.ADDRESS_CUSTOMER, STATE_CODE = encabezado.STATE_CODE, DISCOUNT = encabezado.DISCOUNT, TYPE_DEMAND_CODE = encabezado.TYPE_DEMAND_CODE, TYPE_DEMAND_NAME = encabezado.TYPE_DEMAND_NAME }; var op = CrearDemandaDespachoEncabezado(demandaHeader); if (op.Resultado == ResultadoOperacionTipo.Error) { throw new Exception("Error. No se pudo guardar la demanda de despacho de la orden de venta " + encabezado.SALES_ORDER_ID + ": " + op.Mensaje); } var pickingDocumentHeader = Convert.ToInt32(op.DbData); var demandaDetalle = encabezado.Detalles.Select(x => new DemandaDespachoDetalle { ERP_OBJECT_TYPE = x.ERP_OBJECT_TYPE, LINE_NUM = x.LINE_SEQ, MATERIAL_ID = x.SKU, PRICE = x.PRICE, PICKING_DEMAND_HEADER_ID = Convert.ToInt32(op.DbData), QTY = Convert.ToInt32(x.QTY), MASTER_ID_MATERIAL = x.MASTER_ID_MATERIAL, MATERIAL_OWNER = x.MATERIAL_OWNER, SOURCE_TYPE = Enums.GetStringValue(argumento.TipoDespacho), TONE = x.TONE, CALIBER = x.CALIBER, DISCOUNT = x.DISCOUNT, DISCOUNT_TYPE = x.DISCOUNT_TYPE, IS_BONUS = x.IS_BONUS }).ToList(); op = CrearDemandaDespachoDetalle(demandaDetalle, pickings); if (op.Resultado == ResultadoOperacionTipo.Error) { throw new Exception( "Error. No se pudo guardar el detalle de la demanda de despacho de la orden de venta " + encabezado.SALES_ORDER_ID + ": " + op.Mensaje); } return(pickingDocumentHeader); }
private Operacion CrearPickingDeOrdenDeVenta(OrdenDeVentaEncabezado encabezadoOrden, Poliza poliza , int wavePickingId, out IList <Picking> pickings, PickingArgumento argumento) { try { string transferRequestId = string.Empty; if (argumento.TipoDespacho == TipoFuenteDemandaDespacho.SolicitudTrasladoErp || argumento.TipoDespacho == TipoFuenteDemandaDespacho.SolicitudTrasladoWms) { transferRequestId = encabezadoOrden.SALES_ORDER_ID.ToString(); } pickings = (from detalle in encabezadoOrden.Detalles group detalle by detalle.SKU into g select new Picking { TASK_OWNER = argumento.Login, TASK_ASSIGNEDTO = argumento.ManejaLineaDePicking ? argumento.LineaDePicking : "", //Si es de linea se lo asigna si no se queda vacio para la asignación posterior QUANTITY_ASSIGNED = g.Sum(x => x.QTY), CODIGO_POLIZA_TARGET = poliza.CODIGO_POLIZA, MATERIAL_ID = g.Key, BARCODE_ID = g.Max(x => x.BARCODE_ID), ALTERNATE_BARCODE = g.Max(x => x.ALTERNATE_BARCODE), MATERIAL_NAME = g.Max(x => x.DESCRIPTION_SKU), CLIENT_OWNER = g.Max(x => x.MATERIAL_OWNER), CLIENT_NAME = g.Max(x => x.MATERIAL_OWNER), CODE_WAREHOUSE_SOURCE = argumento.Bodega, TONE = g.Max(x => x.TONE), CALIBER = g.Max(x => x.CALIBER), IN_PICKING_LINE = argumento.ManejaLineaDePicking ? (int)SiNo.Si : (int)SiNo.No }).ToList(); Operacion op = new Operacion(); if (!argumento.EsConsolidado) { wavePickingId = 0; } foreach (var picking in pickings) { DbParameter[] parameters = { new OAParameter { ParameterName = "@TASK_OWNER", Value = picking.TASK_OWNER }, new OAParameter { ParameterName = "@TASK_ASSIGNEDTO", Value = picking.TASK_ASSIGNEDTO }, new OAParameter { ParameterName = "@QUANTITY_ASSIGNED", Value = picking.QUANTITY_ASSIGNED }, new OAParameter { ParameterName = "@CODIGO_POLIZA_TARGET", Value = encabezadoOrden.SALES_ORDER_ID + "-" + Enums.GetStringValue(argumento.TipoDespacho).Replace(" ", "") + '-' + encabezadoOrden.SOURCE_NAME }, new OAParameter { ParameterName = "@MATERIAL_ID", Value = picking.MATERIAL_ID }, new OAParameter { ParameterName = "@BARCODE_ID", Value = picking.BARCODE_ID }, new OAParameter { ParameterName = "@ALTERNATE_BARCODE", Value = picking.ALTERNATE_BARCODE }, new OAParameter { ParameterName = "@MATERIAL_NAME", Value = picking.MATERIAL_NAME }, new OAParameter { ParameterName = "@CLIENT_OWNER", Value = picking.CLIENT_OWNER }, new OAParameter { ParameterName = "@CLIENT_NAME", Value = picking.CLIENT_NAME }, new OAParameter { ParameterName = "@IS_FROM_SONDA", Value = encabezadoOrden.IS_FROM_SONDA }, new OAParameter { ParameterName = "@CODE_WAREHOUSE", Value = picking.CODE_WAREHOUSE_SOURCE }, new OAParameter { ParameterName = "@IS_FROM_ERP", Value = encabezadoOrden.IS_FROM_ERP } , new OAParameter { ParameterName = "@WAVE_PICKING_ID", Value = wavePickingId }, new OAParameter { ParameterName = "@DOC_ID_TARGET", Value = picking.CODIGO_POLIZA_TARGET }, new OAParameter { ParameterName = "@LOCATION_SPOT_TARGET", Value = argumento.Ubicacion.LOCATION_SPOT } , new OAParameter { ParameterName = "@IS_CONSOLIDATED", Value = argumento.EsConsolidado }, new OAParameter { ParameterName = "@SOURCE_TYPE", Value = Enums.GetStringValue(argumento.TipoDespacho) } , new OAParameter { ParameterName = "@TRANSFER_REQUEST_ID", Value = transferRequestId == string.Empty ? null : transferRequestId } , new OAParameter { ParameterName = "@TONE", Value = picking.TONE == string.Empty ? null : picking.TONE } , new OAParameter { ParameterName = "@CALIBER", Value = picking.CALIBER == string.Empty ? null : picking.CALIBER }, new OAParameter { ParameterName = "@IN_PICKING_LINE", Value = picking.IN_PICKING_LINE } }; op = BaseDeDatosServicio.ExecuteQuery <Operacion> (BaseDeDatosServicio.Esquema + ".OP_WMS_SP_INSERT_TASKS_GENERAL_PICKING_DEMAND", CommandType.StoredProcedure, false, parameters)[0]; if (op.Resultado == ResultadoOperacionTipo.Error) { throw new Exception(op.Mensaje); } else { wavePickingId = Convert.ToInt32(op.DbData.Split('|')[0]); int QTY_MP = Convert.ToInt32(op.DbData.Split('|')?[1]); picking.WAS_IMPLODED = QTY_MP > 0 ? 1 : 0; picking.QTY_IMPLODED = QTY_MP; picking.WAVE_PICKING_ID = wavePickingId; } } return(op); } catch (Exception ex) { pickings = null; throw new Exception("Error. No se pudo Insertar Picking de la orden de venta " + encabezadoOrden.SALES_ORDER_ID + ": " + ex.Message); } }