public OOB.ResultadoAuto Producto_Movimiento_Cargo_Insertar(OOB.LibInventario.Movimiento.Cargo.Insertar.Ficha ficha) { var rt = new OOB.ResultadoAuto(); var xficha = ficha.mov; var movDTO = new DtoLibInventario.Movimiento.Cargo.Insertar.FichaMov() { autoConcepto = xficha.autoConcepto, autoDepositoDestino = xficha.autoDepositoDestino, autoDepositoOrigen = xficha.autoDepositoOrigen, autoRemision = xficha.autoRemision, autorizado = xficha.autorizado, autoUsuario = xficha.autoUsuario, cierreFtp = xficha.cierreFtp, codConcepto = xficha.codConcepto, codDepositoDestino = xficha.codDepositoDestino, codDepositoOrigen = xficha.codDepositoOrigen, codigoSucursal = xficha.codigoSucursal, codUsuario = xficha.codUsuario, desConcepto = xficha.desConcepto, desDepositoDestino = xficha.desDepositoDestino, desDepositoOrigen = xficha.desDepositoOrigen, documentoNombre = xficha.documentoNombre, estacion = xficha.estacion, estatusAnulado = xficha.estatusAnulado, estatusCierreContable = xficha.estatusCierreContable, nota = xficha.nota, renglones = xficha.renglones, situacion = xficha.situacion, tipo = xficha.tipo, total = xficha.total, usuario = xficha.usuario, factorCambio = xficha.factorCambio, montoDivisa = xficha.montoDivisa, }; var detDTO = ficha.movDetalles.Select(s => { var dt = new DtoLibInventario.Movimiento.Cargo.Insertar.FichaMovDetalle() { autoDepartamento = s.autoDepartamento, autoGrupo = s.autoGrupo, autoProducto = s.autoProducto, cantidad = s.cantidad, cantidadBono = s.cantidadBono, cantidadUnd = s.cantidadUnd, categoria = s.categoria, codigoProducto = s.codigoProducto, contEmpaque = s.contEmpaque, costoCompra = s.costoCompra, costoUnd = s.costoUnd, decimales = s.decimales, empaque = s.empaque, estatusAnulado = s.estatusAnulado, estatusUnidad = s.estatusUnidad, nombreProducto = s.nombreProducto, signo = s.signo, tipo = s.tipo, total = s.total, }; return(dt); }).ToList(); var kardexDTO = ficha.movKardex.Select(s => { var dt = new DtoLibInventario.Movimiento.Cargo.Insertar.FichaMovKardex() { autoConcepto = s.autoConcepto, autoDeposito = s.autoDeposito, autoProducto = s.autoProducto, cantidad = s.cantidad, cantidadBono = s.cantidadBono, cantidadUnd = s.cantidadUnd, codigoMov = s.codigoMov, codigoSucursal = s.codigoSucursal, costoUnd = s.costoUnd, entidad = s.entidad, estatusAnulado = s.estatusAnulado, modulo = s.modulo, nota = s.nota, precioUnd = s.precioUnd, siglasMov = s.siglasMov, signoMov = s.signoMov, total = s.total, codigoConcepto = s.codigoConcepto, nombreConcepto = s.nombreConcepto, codigoDeposito = s.codigoDeposito, nombreDeposito = s.nombreDeposito, }; return(dt); }).ToList(); var depDTO = ficha.movDeposito.Select(s => { var dt = new DtoLibInventario.Movimiento.Cargo.Insertar.FichaMovDeposito() { autoProducto = s.autoProducto, nombreProducto = s.nombreProducto, autoDeposito = s.autoDeposito, cantidadUnd = s.cantidadUnd, nombreDeposito = s.nombreDeposito, }; return(dt); }).ToList(); var listPrdCosto = ficha.prdCosto.Select(s => { var dt = new DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrdCosto() { autoProducto = s.autoProducto, cantidadEntranteUnd = s.cantidadEntranteUnd, costoDivisa = s.costoDivisa, costoFinal = s.costoFinal, costoFinalUnd = s.costoFinalUnd, }; return(dt); }).ToList(); var listPrdCostoHistorico = ficha.prdCostoHistorico.Select(s => { var dt = new DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrdCostoHistorico() { autoProducto = s.autoProducto, costo = s.costo, divisa = s.divisa, nota = s.nota, tasaCambio = s.tasaCambio, serie = s.serie, }; return(dt); }).ToList(); var listPrdPrecio = ficha.prdPrecio.Select(s => { DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrecio p1 = null; DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrecio p2 = null; DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrecio p3 = null; DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrecio p4 = null; DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrecio p5 = null; if (s.precio_1 != null) { p1 = new DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrecio() { precioNeto = s.precio_1.precioNeto, precio_divisa_full = s.precio_1.precio_divisa_full }; } ; if (s.precio_2 != null) { p2 = new DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrecio() { precioNeto = s.precio_2.precioNeto, precio_divisa_full = s.precio_2.precio_divisa_full }; } ; if (s.precio_3 != null) { p3 = new DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrecio() { precioNeto = s.precio_3.precioNeto, precio_divisa_full = s.precio_3.precio_divisa_full }; } ; if (s.precio_4 != null) { p4 = new DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrecio() { precioNeto = s.precio_4.precioNeto, precio_divisa_full = s.precio_4.precio_divisa_full }; } ; if (s.precio_5 != null) { p5 = new DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrecio() { precioNeto = s.precio_5.precioNeto, precio_divisa_full = s.precio_5.precio_divisa_full }; } ; var dt = new DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrdPrecio() { autoProducto = s.autoProducto, precio_1 = p1, precio_2 = p2, precio_3 = p3, precio_4 = p4, precio_5 = p5, }; return(dt); }).ToList(); var listPrdPrecioMargen = ficha.prdPrecioMargen.Select(s => { DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrecioMargen p1 = null; DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrecioMargen p2 = null; DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrecioMargen p3 = null; DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrecioMargen p4 = null; DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrecioMargen p5 = null; if (s.precio_1 != null) { p1 = new DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrecioMargen() { utilidad = s.precio_1.utilidad }; } ; if (s.precio_2 != null) { p2 = new DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrecioMargen() { utilidad = s.precio_2.utilidad }; } ; if (s.precio_3 != null) { p3 = new DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrecioMargen() { utilidad = s.precio_3.utilidad }; } ; if (s.precio_4 != null) { p4 = new DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrecioMargen() { utilidad = s.precio_4.utilidad }; } ; if (s.precio_5 != null) { p5 = new DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrecioMargen() { utilidad = s.precio_5.utilidad }; } ; var dt = new DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrdPrecioMargen() { autoProducto = s.autoProducto, precio_1 = p1, precio_2 = p2, precio_3 = p3, precio_4 = p4, precio_5 = p5, }; return(dt); }).ToList(); var listPrdPrecioHistorico = ficha.prdPrecioHistorico.Select(s => { var dt = new DtoLibInventario.Movimiento.Cargo.Insertar.FichaPrdPrecioHistorico() { autoProducto = s.autoProducto, precio = s.precio, precio_id = s.precio_id, nota = s.nota, }; return(dt); }).ToList(); var fichaDTO = new DtoLibInventario.Movimiento.Cargo.Insertar.Ficha() { mov = movDTO, movDeposito = depDTO, movDetalles = detDTO, movKardex = kardexDTO, prdCosto = listPrdCosto, prdCostoHistorico = listPrdCostoHistorico, prdPrecio = listPrdPrecio, prdPrecioHistorico = listPrdPrecioHistorico, prdPrecioMargen = listPrdPrecioMargen, }; var r01 = MyData.Producto_Movimiento_Cargo_Insertar(fichaDTO); if (r01.Result == DtoLib.Enumerados.EnumResult.isError) { rt.Mensaje = r01.Mensaje; rt.Result = OOB.Enumerados.EnumResult.isError; return(rt); } rt.Auto = r01.Auto; return(rt); }
private bool RegistrarDocumento() { var movOOB = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaMov() { autoConcepto = Concepto.id, autoDepositoDestino = DepositoOrigen.id, autoDepositoOrigen = DepositoOrigen.id, autoRemision = "", autorizado = miData.AutorizadoPor, autoUsuario = Sistema.UsuarioP.autoUsu, cierreFtp = "", codConcepto = Concepto.codigo, codDepositoDestino = DepositoOrigen.codigo, codDepositoOrigen = DepositoOrigen.codigo, codigoSucursal = Sucursal.codigo, codUsuario = Sistema.UsuarioP.codigoUsu, desConcepto = Concepto.descripcion, desDepositoDestino = DepositoOrigen.descripcion, desDepositoOrigen = DepositoOrigen.descripcion, documentoNombre = "CARGOS", estacion = Environment.MachineName, estatusAnulado = "0", estatusCierreContable = "0", nota = miData.Motivo, renglones = _gestionDetalle.TotalItems, situacion = "Procesado", tipo = "01", total = MontoMovimiento, usuario = Sistema.UsuarioP.nombreUsu, factorCambio = tasaCambio, montoDivisa = Math.Round(MontoMovimiento / tasaCambio, 2, MidpointRounding.AwayFromZero), }; var detOOB = _gestionDetalle.Detalle.ListaItems.Select(s => { var rg = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaMovDetalle() { autoDepartamento = s.FichaPrd.identidad.autoDepartamento, autoGrupo = s.FichaPrd.identidad.autoGrupo, autoProducto = s.FichaPrd.AutoId, cantidad = s.Cantidad, cantidadBono = 0, cantidadUnd = s.CantidadUnd, categoria = s.FichaPrd.Categoria, codigoProducto = s.FichaPrd.CodigoPrd, contEmpaque = s.FichaPrd.identidad.contenidoCompra, costoCompra = s.CostoMonedaLocal, costoUnd = s.CostoUndMonedaLocal, decimales = s.FichaPrd.Decimales, empaque = s.FichaPrd.identidad.empaqueCompra, estatusAnulado = "0", estatusUnidad = s.TipoEmpaqueSeleccionado == enumerados.enumTipoEmpaque.PorUnidad ? "1" : "0", nombreProducto = s.DescripcionPrd, signo = 1, tipo = "01", total = s.ImporteMonedaLocal, }; return(rg); }).ToList(); var gr3 = _gestionDetalle.Detalle.ListaItems.GroupBy (g => new { g.FichaPrd.AutoId, g.DescripcionPrd }). Select(g2 => new { id = g2.Key.AutoId, desc = g2.Key.DescripcionPrd, cnt = g2.Sum(s => s.CantidadUnd * s.Signo) }).ToList(); var depOOB = gr3.Select(s => { var rg = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaMovDeposito() { autoDeposito = DepositoOrigen.id, nombreProducto = s.desc, autoProducto = s.id, cantidadUnd = s.cnt, nombreDeposito = DepositoOrigen.descripcion, }; return(rg); }).ToList(); var lCosto = _gestionDetalle.Detalle.ListaItems.Select(s => { var rg = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrdCosto() { autoProducto = s.FichaPrd.AutoId, cantidadEntranteUnd = s.CantidadUnd, costoDivisa = s.CostoDivisa, costoFinal = s.CostoMonedaLocal, costoFinalUnd = s.CostoUndMonedaLocal, }; return(rg); }).ToList(); var lCostoHistorico = _gestionDetalle.Detalle.ListaItems.Select(s => { var rg = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrdCostoHistorico() { autoProducto = s.FichaPrd.AutoId, costo = s.CostoMonedaLocal, divisa = s.CostoDivisa, nota = "", tasaCambio = s.TasaCambio, serie = "DOC", }; return(rg); }).ToList(); var kardexOOB = _gestionDetalle.Detalle.ListaItems.Select(s => { var rg = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaMovKardex() { autoConcepto = Concepto.id, autoDeposito = DepositoOrigen.id, autoProducto = s.FichaPrd.AutoId, cantidad = s.Cantidad, cantidadBono = 0.0m, cantidadUnd = s.CantidadUnd, codigoMov = "01", codigoConcepto = Concepto.codigo, codigoDeposito = DepositoOrigen.codigo, codigoSucursal = Sucursal.codigo, costoUnd = s.CostoUndMonedaLocal, entidad = "", estatusAnulado = "0", modulo = "Inventario", nombreConcepto = Concepto.descripcion, nombreDeposito = DepositoOrigen.descripcion, nota = "", precioUnd = 0.0m, siglasMov = "CAR", signoMov = 1, total = s.ImporteMonedaLocal, }; return(rg); }).ToList(); var rt1 = Sistema.MyData.Configuracion_MetodoCalculoUtilidad(); if (rt1.Result == OOB.Enumerados.EnumResult.isError) { Helpers.Msg.Error(rt1.Mensaje); return(false); } var rt3 = Sistema.MyData.Configuracion_PreferenciaRegistroPrecio(); if (rt3.Result == OOB.Enumerados.EnumResult.isError) { Helpers.Msg.Error(rt3.Mensaje); return(false); } var rt4 = Sistema.MyData.Configuracion_ForzarRedondeoPrecioVenta(); if (rt4.Result == OOB.Enumerados.EnumResult.isError) { Helpers.Msg.Error(rt4.Mensaje); return(false); } var lMargen = new List <OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrdPrecioMargen>(); var LPrecio = new List <OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrdPrecio>(); var lPrecioHistorico = new List <OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrdPrecioHistorico>(); foreach (var it in _gestionDetalle.Detalle.ListaItems) { if (it.EsAdmDivisa) { var rt2 = Sistema.MyData.Producto_GetPrecio(it.FichaPrd.AutoId); if (rt2.Result == OOB.Enumerados.EnumResult.isError) { Helpers.Msg.Error(rt2.Mensaje); return(false); } var rg = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrdPrecio(); rg.autoProducto = it.FichaPrd.AutoId; rg.precio_1 = null; rg.precio_2 = null; rg.precio_3 = null; rg.precio_4 = null; rg.precio_5 = null; if (rt2.Entidad.precioNeto1 > 0) { var p = Helpers.Utilitis.RecalcularPrecio(it.CostoUndMonedaLocal, rt2.Entidad.utilidad1, rt2.Entidad.tasaIva, rt3.Entidad, rt4.Entidad, rt1.Entidad, tasaCambio); rg.precio_1 = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrecio() { precioNeto = p.neto, precio_divisa_full = p.fullDivisa }; var ph = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrdPrecioHistorico() { autoProducto = it.FichaPrd.AutoId, nota = "", precio = p.neto, precio_id = "1", }; lPrecioHistorico.Add(ph); } if (rt2.Entidad.precioNeto2 > 0) { var p = Helpers.Utilitis.RecalcularPrecio(it.CostoUndMonedaLocal, rt2.Entidad.utilidad2, rt2.Entidad.tasaIva, rt3.Entidad, rt4.Entidad, rt1.Entidad, tasaCambio); rg.precio_2 = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrecio() { precioNeto = p.neto, precio_divisa_full = p.fullDivisa }; var ph = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrdPrecioHistorico() { autoProducto = it.FichaPrd.AutoId, nota = "", precio = p.neto, precio_id = "2", }; lPrecioHistorico.Add(ph); } if (rt2.Entidad.precioNeto3 > 0) { var p = Helpers.Utilitis.RecalcularPrecio(it.CostoUndMonedaLocal, rt2.Entidad.utilidad3, rt2.Entidad.tasaIva, rt3.Entidad, rt4.Entidad, rt1.Entidad, tasaCambio); rg.precio_3 = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrecio() { precioNeto = p.neto, precio_divisa_full = p.fullDivisa }; var ph = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrdPrecioHistorico() { autoProducto = it.FichaPrd.AutoId, nota = "", precio = p.neto, precio_id = "3", }; lPrecioHistorico.Add(ph); } if (rt2.Entidad.precioNeto4 > 0) { var p = Helpers.Utilitis.RecalcularPrecio(it.CostoUndMonedaLocal, rt2.Entidad.utilidad4, rt2.Entidad.tasaIva, rt3.Entidad, rt4.Entidad, rt1.Entidad, tasaCambio); rg.precio_4 = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrecio() { precioNeto = p.neto, precio_divisa_full = p.fullDivisa }; var ph = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrdPrecioHistorico() { autoProducto = it.FichaPrd.AutoId, nota = "", precio = p.neto, precio_id = "4", }; lPrecioHistorico.Add(ph); } if (rt2.Entidad.precioNeto5 > 0) { var p = Helpers.Utilitis.RecalcularPrecio(it.CostoUndMonedaLocal, rt2.Entidad.utilidad5, rt2.Entidad.tasaIva, rt3.Entidad, rt4.Entidad, rt1.Entidad, tasaCambio); rg.precio_5 = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrecio() { precioNeto = p.neto, precio_divisa_full = p.fullDivisa }; var ph = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrdPrecioHistorico() { autoProducto = it.FichaPrd.AutoId, nota = "", precio = p.neto, precio_id = "PTO", }; lPrecioHistorico.Add(ph); } LPrecio.Add(rg); } else { var rt2 = Sistema.MyData.Producto_GetPrecio(it.FichaPrd.AutoId); if (rt2.Result == OOB.Enumerados.EnumResult.isError) { Helpers.Msg.Error(rt2.Mensaje); return(false); } var rg = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrdPrecioMargen(); rg.autoProducto = it.FichaPrd.AutoId; rg.precio_1 = null; rg.precio_2 = null; rg.precio_3 = null; rg.precio_4 = null; rg.precio_5 = null; if (rt2.Entidad.precioNeto1 > 0) { rg.precio_1 = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrecioMargen() { utilidad = ReCalcularMargen(rt2.Entidad.precioNeto1, it.CostoUndMonedaLocal, rt1.Entidad), }; } if (rt2.Entidad.precioNeto2 > 0) { rg.precio_2 = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrecioMargen() { utilidad = ReCalcularMargen(rt2.Entidad.precioNeto2, it.CostoUndMonedaLocal, rt1.Entidad), }; } if (rt2.Entidad.precioNeto3 > 0) { rg.precio_3 = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrecioMargen() { utilidad = ReCalcularMargen(rt2.Entidad.precioNeto3, it.CostoUndMonedaLocal, rt1.Entidad), }; } if (rt2.Entidad.precioNeto4 > 0) { rg.precio_4 = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrecioMargen() { utilidad = ReCalcularMargen(rt2.Entidad.precioNeto4, it.CostoUndMonedaLocal, rt1.Entidad), }; } if (rt2.Entidad.precioNeto5 > 0) { rg.precio_5 = new OOB.LibInventario.Movimiento.Cargo.Insertar.FichaPrecioMargen() { utilidad = ReCalcularMargen(rt2.Entidad.precioNeto5, it.CostoUndMonedaLocal, rt1.Entidad), }; } lMargen.Add(rg); } } var fichaOOB = new OOB.LibInventario.Movimiento.Cargo.Insertar.Ficha() { mov = movOOB, movDeposito = depOOB, movDetalles = detOOB, movKardex = kardexOOB, prdCosto = lCosto, prdCostoHistorico = lCostoHistorico, prdPrecioMargen = lMargen, prdPrecio = LPrecio, prdPrecioHistorico = lPrecioHistorico, }; var r01 = Sistema.MyData.Producto_Movimiento_Cargo_Insertar(fichaOOB); if (r01.Result == OOB.Enumerados.EnumResult.isError) { Helpers.Msg.Error(r01.Mensaje); return(false); } Helpers.VisualizarDocumento.CargarVisualizarDocumento(r01.Auto); return(true); }