Beispiel #1
0
        public void Procesar(Totalizar totalizar)
        {
            var tarifa = "";

            switch (Cliente.TarifaPrecio)
            {
            case OOB.LibVenta.Cliente.Enumerados.enumTarifaPrecio.Tarifa_1:
                tarifa = "1";
                break;

            case OOB.LibVenta.Cliente.Enumerados.enumTarifaPrecio.Tarifa_2:
                tarifa = "2";
                break;

            case OOB.LibVenta.Cliente.Enumerados.enumTarifaPrecio.Tarifa_3:
                tarifa = "3";
                break;

            case OOB.LibVenta.Cliente.Enumerados.enumTarifaPrecio.Tarifa_4:
                tarifa = "4";
                break;
            }

            var ficha = new OOB.LibVenta.Venta.Generar.Agregar()
            {
                AutoCliente               = Cliente.Auto,
                AutoCobrador              = Cobrador.Auto,
                AutoUsuario               = Usuario.Auto,
                AutoVendedor              = Vendedor.Auto,
                AutoTransporte            = Transporte.Auto,
                ClienteCiRif              = Cliente.CiRif,
                ClienteCodigo             = Cliente.Codigo,
                ClienteDenominacionFiscal = Cliente.DenominacionFiscalDescripcion,
                ClienteDirFiscal          = Cliente.DireccionFiscal,
                ClienteNombre             = Cliente.Nombre,
                ClienteTarifa             = tarifa,
                ClienteTelefono           = Cliente.Telefono_1,
                CobradorCodigo            = Cobrador.Codigo,
                CobradorNombre            = Cobrador.Nombre,
                CodigoSucursal            = Sucursal.Codigo,
                Estacion                 = Environment.MachineName.ToString(),
                FactorCambio             = _factorCambioParaRecibirDivisa,
                MontoRecibido            = 0.0m,
                Renglones                = Renglones,
                UsuarioCodigo            = Usuario.Codigo,
                UsuarioNombre            = Usuario.Descripcion,
                VendedorCodigo           = Vendedor.Codigo,
                VendedorNombre           = Vendedor.Nombre,
                TransporteCodigo         = Transporte.Codigo,
                TransporteNombre         = Transporte.Nombre,
                CondicionPago            = IsContado ? OOB.LibVenta.Venta.Enumerados.enumCondicionPago.Contado : OOB.LibVenta.Venta.Enumerados.enumCondicionPago.Credito,
                DiasCredito              = DiasCredito,
                Notas                    = NotasDocumento,
                SerialFiscal             = "",
                CondicionPagoDescripcion = IsContado ? "CONTADO":"CREDITO",
                DocumentoCodigo          = "01",
                DocumentoSituacion       = "Procesado",
                DocumentoTipo            = "Ventas",
                DocumentoNombre          = "VENTA",
                DocumentoSigno           = 1,
                MesRelacion              = MesRelacion,
                AnoRelacion              = AnoRelacion,
                CambioDar                = 0,
            };

            var encabezado = new OOB.LibVenta.Venta.Generar.AgregarEncabezado()
            {
                AutoRemision      = "",
                DepachadoPor      = "",
                DireccionDespacho = DireccionDespacho,
                DocumentoRemision = "",
                FechaPedido       = FechaPedido,
                OrdenCompra       = OrdenCompraNro,
                Pedido            = PedidoNro,
                Serie             = "",
                TipoRemision      = "",
            };

            ficha.AgregarEncabezado = encabezado;

            foreach (Detalle dt in Items)
            {
                dt.setDescuentoGlobal(totalizar.DsctGlobal);
                dt.setCargoGlobal(totalizar.CargoGlobal);
            }

            var _montoDivisa = 0.0m;

            if (_factorCambioParaRecibirDivisa > 0)
            {
                _montoDivisa = totalizar.Total / _factorCambioParaRecibirDivisa;
            }
            var _saldoPendiente = totalizar.Total;

            if (IsContado)
            {
                _saldoPendiente = 0.0m;
            }
            var _ventaNeta      = Items.Sum(sm => sm.VentaNeta);
            var _costoVenta     = Items.Sum(sm => sm.CostoVenta);
            var _utilidad       = Items.Sum(sm => sm.UtilidadMonto);
            var _utilidadMargen = Items.Average(sm => sm.UtilidadMargen);

            var totales = new OOB.LibVenta.Venta.Generar.AgregarTotal()
            {
                VentaNeta    = _ventaNeta,
                CostoVenta   = _costoVenta,
                Utilidad     = _utilidad,
                UtilidadPorc = _utilidadMargen,

                SubTotalNeto     = SubTotalNeto,
                DescuentoMonto_1 = totalizar.MontoDsctGlobal,
                DescuentoMonto_2 = 0.0m,
                DescuentoPorct_1 = totalizar.DsctGlobal,
                DescuentoPorct_2 = 0.0m,
                CargoMonto       = totalizar.MontoCargoGlobal,
                CargoPorct       = totalizar.CargoGlobal,

                SubTotal         = (totalizar.Total - MontoIva),
                SubTotalImpuesto = MontoIva,

                MontoTotal    = totalizar.Total,
                MontoBase     = MontoBase,
                MontoImpuesto = MontoIva,
                MontoExento   = MontoExento,
                MontoBase1    = MontoBaseX("1"),
                MontoBase2    = MontoBaseX("2"),
                MontoBase3    = MontoBaseX("3"),
                MontoImp1     = MontoIvaX("1"),
                MontoImp2     = MontoIvaX("2"),
                MontoImp3     = MontoIvaX("3"),
                Tasa1         = _tasasFiscales.Tasa1,
                Tasa2         = _tasasFiscales.Tasa2,
                Tasa3         = _tasasFiscales.Tasa3,

                MontoDivisa    = _montoDivisa,
                SaldoPendiente = _saldoPendiente,
            };

            ficha.AgregarTotales = totales;


            var cxc = new OOB.LibVenta.Venta.Generar.AgregarCxc()
            {
                AutoCliente         = Cliente.Auto,
                AutoVendedor        = Vendedor.Auto,
                ClienteCiRif        = Cliente.CiRif,
                ClienteCodigo       = Cliente.Codigo,
                ClienteNombre       = Cliente.Nombre,
                DocumentoVentaSerie = "",
                DocumentoVentaTipo  = "FAC",
                IsCancelado         = IsContado?true:false,
                MontoAcumulado      = IsContado?totalizar.Total:0.00m,
                MontoImporteNeto    = (totalizar.Total - MontoIva),
                MontoImporteTotal   = totalizar.Total,
                MontoResta          = IsContado?0.00m:totalizar.Total,
                Notas = "",
                Signo = 1,
            };

            ficha.AgregarCxc = cxc;


            var lmv  = new List <OOB.LibVenta.Venta.Generar.AgregarKardex>();
            var lapd = new List <OOB.LibVenta.Venta.Generar.AgregarActProductoDeposito>();
            var lc   = new List <OOB.LibVenta.Venta.Generar.AgregarCuerpo>();

            foreach (Detalle dt in Items)
            {
                var mv = new OOB.LibVenta.Venta.Generar.AgregarKardex()
                {
                    AutoProducto     = dt.Producto.Auto,
                    AutoConcepto     = ConceptoMovInv.Auto,
                    AutoDeposito     = Deposito.Auto,
                    Cantidad         = dt.Cantidad,
                    CantidadUnd      = dt.Cantidad,
                    CostoUndPromedio = dt.Producto.CostoPromedioUnidad,
                    Entidad          = ficha.ClienteNombre,
                    PrecioUnd        = dt.Precio.PrecioFinal,
                    TotalCostoVenta  = dt.CostoVenta,
                    Codigo           = "01",
                    Siglas           = "FAC",
                    Signo            = -1,
                    Notas            = "",
                    Modulo           = "Ventas",
                };
                lmv.Add(mv);

                var apd = new OOB.LibVenta.Venta.Generar.AgregarActProductoDeposito()
                {
                    AutoProducto = dt.Producto.Auto,
                    AutoDeposito = Deposito.Auto,
                    TotalUnd     = dt.Cantidad,
                };
                lapd.Add(apd);

                var reg = new OOB.LibVenta.Venta.Generar.AgregarCuerpo()
                {
                    AutoDeposito        = Deposito.Auto,
                    AutoDepartamento    = dt.Producto.AutoDepartamento,
                    AutoGrupo           = dt.Producto.AutoGrupo,
                    AutoProducto        = dt.Producto.Auto,
                    AutoSubGrupo        = dt.Producto.AutoSubGrupo,
                    AutoTasaImpuesto    = dt.Producto.AutoTasa,
                    AutoCliente         = Cliente.Auto,
                    AutoVendedor        = Vendedor.Auto,
                    Cantidad            = dt.Cantidad,
                    CantidadUnd         = dt.Cantidad,
                    Categoria           = dt.Producto.Categoria,
                    CodigoPrd           = dt.Producto.CodigoPrd,
                    CostoCompraPromedio = dt.Producto.CostoPromedioUnidad,
                    CostoPromedioUnd    = dt.Producto.CostoPromedioUnidad,
                    CostoUnd            = dt.Producto.CostoUnidad,
                    CostoVenta          = dt.CostoVenta,
                    Decimales           = dt.Precio.Decimales,
                    DescuentoMonto_1    = dt.Precio.DescuentoItemMonto,
                    DescuentoMonto_2    = 0.0m,
                    DescuentoMonto_3    = 0.0m,
                    DescuentoPorc_1     = dt.Precio.DescuentoItemPorcentaje,
                    DescuentoPorc_2     = 0.0m,
                    DescuentoPorc_3     = 0.0m,
                    DiasGarantia        = dt.Producto.DiasGarantia,
                    DepositoCodigo      = Deposito.Codigo,
                    DepositoDescripcion = Deposito.Nombre,
                    Empaque             = dt.Precio.DescEmpVenta,
                    EmpaqueContenido    = dt.Precio.ContEmpVenta,
                    IsGarantia          = dt.Producto.IsGarantia,
                    IsSerial            = dt.Producto.IsSerial,
                    MontoDescuento      = dt.DescuentoMontoTotal,
                    MontoImpuesto       = dt.ItemMontoIva,
                    MontoTotal          = dt.Total,
                    NombrePrd           = dt.Producto.NombrePrd,
                    Notas          = dt.Notas,
                    PrecioFinal    = dt.Precio.PrecioFinal,
                    PrecioItem     = dt.Precio.PrecioItem,
                    PrecioNeto     = dt.Precio.PrecioNeto,
                    PrecioUnd      = dt.Precio.PrecioFinal,
                    TarifaPrecio   = tarifa,
                    TasaIva        = dt.Producto.TasaImpuesto,
                    TotalNeto      = dt.Importe,
                    TotalItem      = dt.Total,
                    UtilidadMonto  = dt.UtilidadMonto,
                    UtilidadPorc   = dt.UtilidadMargen,
                    VendedorCodigo = Vendedor.Codigo,
                    Tipo           = "01",
                    Signo          = 1,
                };
                lc.Add(reg);
            }
            ficha.AgregarMovKardex           = lmv;
            ficha.AgregarActProductoDeposito = lapd;
            ficha.AgregarCuerpo = lc;

            var r01 = Program.MyData.Venta_AgregarDocumento(ficha);

            if (r01.Result == OOB.Enumerados.EnumResult.isError)
            {
                Helpers.Msg.Error(r01.Mensaje);
                return;
            }
            Helpers.Msg.AgregarOk();
            Notificar();
        }
Beispiel #2
0
        public OOB.ResultadoAuto Venta_AgregarDocumento(OOB.LibVenta.Venta.Generar.Agregar ficha)
        {
            var result = new OOB.ResultadoAuto();

            var f        = ficha;
            var fichaDTO = new DtoLibVenta.Venta.Agregar()
            {
                AutoCliente               = f.AutoCliente,
                AutoCobrador              = f.AutoCobrador,
                AutoUsuario               = f.AutoUsuario,
                AutoVendedor              = f.AutoVendedor,
                AutoTransporte            = f.AutoTransporte,
                ClienteCiRif              = f.ClienteCiRif,
                ClienteCodigo             = f.ClienteCodigo,
                ClienteDenominacionFiscal = f.ClienteDenominacionFiscal,
                ClienteDirFiscal          = f.ClienteDirFiscal,
                ClienteNombre             = f.ClienteNombre,
                ClienteTarifa             = f.ClienteTarifa,
                ClienteTelefono           = f.ClienteTelefono,
                CobradorCodigo            = f.CobradorCodigo,
                CobradorNombre            = f.CobradorNombre,
                CodigoSucursal            = f.CodigoSucursal,
                Estacion                 = f.Estacion,
                FactorCambio             = f.FactorCambio,
                MontoRecibido            = f.MontoRecibido,
                Renglones                = f.Renglones,
                UsuarioCodigo            = f.UsuarioCodigo,
                UsuarioNombre            = f.UsuarioNombre,
                VendedorCodigo           = f.VendedorCodigo,
                VendedorNombre           = f.VendedorNombre,
                TransporteCodigo         = f.TransporteCodigo,
                TransporteNombre         = f.TransporteNombre,
                CondicionPago            = (DtoLibVenta.Venta.Enumerados.enumCondicionPago)f.CondicionPago,
                DiasCredito              = f.DiasCredito,
                Notas                    = f.Notas,
                SerialFiscal             = f.SerialFiscal,
                CambioDar                = f.CambioDar,
                CondicionPagoDescripcion = f.CondicionPagoDescripcion,
                DocumentoCodigo          = f.DocumentoCodigo,
                DocumentoSituacion       = f.DocumentoSituacion,
                DocumentoTipo            = f.DocumentoTipo,
                DocumentoNombre          = f.DocumentoNombre,
                DocumentoSigno           = f.DocumentoSigno,
                MesRelacion              = f.MesRelacion,
                AnoRelacion              = f.AnoRelacion,
            };

            var e          = ficha.AgregarEncabezado;
            var encabezado = new DtoLibVenta.Venta.AgregarEncabezado()
            {
                AutoRemision      = e.AutoRemision,
                DepachadoPor      = e.DepachadoPor,
                DireccionDespacho = e.DireccionDespacho,
                DocumentoRemision = e.DocumentoRemision,
                FechaPedido       = e.FechaPedido,
                OrdenCompra       = e.OrdenCompra,
                Pedido            = e.Pedido,
                Serie             = e.Serie,
                TipoRemision      = e.TipoRemision,
            };

            fichaDTO.AgregarEncabezado = encabezado;

            var t       = ficha.AgregarTotales;
            var totales = new DtoLibVenta.Venta.AgregarTotal()
            {
                VentaNeta        = t.VentaNeta,
                CostoVenta       = t.CostoVenta,
                Utilidad         = t.Utilidad,
                UtilidadPorc     = t.UtilidadPorc,
                SubTotalNeto     = t.SubTotalNeto,
                DescuentoMonto_1 = t.DescuentoMonto_1,
                DescuentoMonto_2 = t.DescuentoMonto_2,
                DescuentoPorct_1 = t.DescuentoPorct_1,
                DescuentoPorct_2 = t.DescuentoPorct_2,
                CargoMonto       = t.CargoMonto,
                CargoPorct       = t.CargoPorct,
                SubTotal         = t.SubTotal,
                SubTotalImpuesto = t.SubTotalImpuesto,
                MontoTotal       = t.MontoTotal,
                MontoBase        = t.MontoBase,
                MontoImpuesto    = t.MontoImpuesto,
                MontoExento      = t.MontoExento,
                MontoBase1       = t.MontoBase1,
                MontoBase2       = t.MontoBase2,
                MontoBase3       = t.MontoBase3,
                MontoImp1        = t.MontoImp1,
                MontoImp2        = t.MontoImp2,
                MontoImp3        = t.MontoImp3,
                Tasa1            = t.Tasa1,
                Tasa2            = t.Tasa2,
                Tasa3            = t.Tasa3,
                MontoDivisa      = t.MontoDivisa,
                SaldoPendiente   = t.SaldoPendiente,
            };

            fichaDTO.AgregarTotales = totales;

            var cx  = ficha.AgregarCxc;
            var cxc = new DtoLibVenta.Venta.AgregarCxc()
            {
                AutoCliente         = cx.AutoCliente,
                AutoVendedor        = cx.AutoVendedor,
                ClienteCiRif        = cx.ClienteCiRif,
                ClienteCodigo       = cx.ClienteCodigo,
                ClienteNombre       = cx.ClienteNombre,
                DocumentoVentaSerie = cx.DocumentoVentaSerie,
                DocumentoVentaTipo  = cx.DocumentoVentaTipo,
                IsCancelado         = cx.IsCancelado,
                MontoAcumulado      = cx.MontoAcumulado,
                MontoImporteNeto    = cx.MontoImporteNeto,
                MontoImporteTotal   = cx.MontoImporteTotal,
                MontoResta          = cx.MontoResta,
                Notas = cx.Notas,
                Signo = cx.Signo,
            };

            fichaDTO.AgregarCxc = cxc;

            if (ficha.AgregarCuerpo != null && ficha.AgregarCuerpo.Count > 0)
            {
                var lc = ficha.AgregarCuerpo.Select(c =>
                {
                    return(new DtoLibVenta.Venta.AgregarCuerpo()
                    {
                        AutoDepartamento = c.AutoDepartamento,
                        AutoGrupo = c.AutoGrupo,
                        AutoProducto = c.AutoProducto,
                        AutoSubGrupo = c.AutoSubGrupo,
                        AutoTasaImpuesto = c.AutoTasaImpuesto,
                        AutoCliente = c.AutoCliente,
                        AutoDeposito = c.AutoDeposito,
                        AutoVendedor = c.AutoVendedor,
                        Cantidad = c.Cantidad,
                        CantidadUnd = c.CantidadUnd,
                        Categoria = c.Categoria,
                        CodigoPrd = c.CodigoPrd,
                        CostoPromedioCompra = c.CostoCompraPromedio,
                        CostoPromedioUnd = c.CostoPromedioUnd,
                        CostoUnd = c.CostoUnd,
                        CostoVenta = c.CostoVenta,
                        Decimales = c.Decimales,
                        DepositoCodigo = c.DepositoCodigo,
                        DepositoDescripcion = c.DepositoDescripcion,
                        DescuentoMonto_1 = c.DescuentoMonto_1,
                        DescuentoMonto_2 = c.DescuentoMonto_2,
                        DescuentoMonto_3 = c.DescuentoMonto_3,
                        DescuentoPorc_1 = c.DescuentoPorc_1,
                        DescuentoPorc_2 = c.DescuentoPorc_2,
                        DescuentoPorc_3 = c.DescuentoPorc_3,
                        DiasGarantia = c.DiasGarantia,
                        Empaque = c.Empaque,
                        EmpaqueContenido = c.EmpaqueContenido,
                        IsGarantia = c.IsGarantia,
                        IsSerial = c.IsSerial,
                        MontoDescuento = c.MontoDescuento,
                        MontoImpuesto = c.MontoImpuesto,
                        MontoTotal = c.MontoTotal,
                        NombrePrd = c.NombrePrd,
                        Notas = c.Notas,
                        PrecioFinal = c.PrecioFinal,
                        PrecioItem = c.PrecioItem,
                        PrecioNeto = c.PrecioNeto,
                        PrecioUnd = c.PrecioUnd,
                        Signo = c.Signo,
                        TarifaPrecio = c.TarifaPrecio,
                        TasaIva = c.TasaIva,
                        Tipo = c.Tipo,
                        TotalItem = c.TotalItem,
                        TotalNeto = c.TotalNeto,
                        UtilidadMonto = c.UtilidadMonto,
                        UtilidadPorc = c.UtilidadPorc,
                        VendedorCodigo = c.VendedorCodigo,
                    });
                }).ToList();
                fichaDTO.AgregarCuerpo = lc;
            }

            if (ficha.AgregarMovKardex != null && ficha.AgregarMovKardex.Count > 0)
            {
                var lmk = ficha.AgregarMovKardex.Select(mk =>
                {
                    return(new DtoLibVenta.Venta.AgregarKardex()
                    {
                        AutoConcepto = mk.AutoConcepto,
                        AutoDeposito = mk.AutoDeposito,
                        AutoProducto = mk.AutoProducto,
                        Cantidad = mk.Cantidad,
                        CantidadUnd = mk.CantidadUnd,
                        Codigo = mk.Codigo,
                        CostoPromedioUnd = mk.CostoUndPromedio,
                        Entidad = mk.Entidad,
                        Modulo = mk.Modulo,
                        Notas = mk.Notas,
                        PrecioUnd = mk.PrecioUnd,
                        Siglas = mk.Siglas,
                        Signo = mk.Signo,
                        TotalCostoVenta = mk.TotalCostoVenta,
                    });
                }).ToList();
                fichaDTO.AgregarKardex = lmk;
            }

            if (ficha.AgregarActProductoDeposito != null && ficha.AgregarActProductoDeposito.Count > 0)
            {
                var lmd = ficha.AgregarActProductoDeposito.Select(md =>
                {
                    return(new DtoLibVenta.Venta.AgregarActProductoDeposito()
                    {
                        AutoDeposito = md.AutoDeposito,
                        AutoProducto = md.AutoProducto,
                        TotalUnd = md.TotalUnd,
                    });
                }).ToList();
                fichaDTO.AgregarActProductoDeposito = lmd;
            }

            var r01 = MyData.VentaAgregar(fichaDTO);

            if (r01.Result == DtoLib.Enumerados.EnumResult.isError)
            {
                result.Mensaje = r01.Mensaje;
                result.Result  = OOB.Enumerados.EnumResult.isError;
                return(result);
            }

            return(result);
        }