public DtoLib.ResultadoId VentaDocumento_Agregar(DtoLibPosOffLine.VentaDocumento.Agregar ficha)
 {
     if (ficha.TipoDocumento == 1)
     {
         if (ficha.Items == null)
         {
             return(new DtoLib.ResultadoId()
             {
                 Id = -1, Mensaje = "ITEMS NO DEFINIDO", Result = DtoLib.Enumerados.EnumResult.isError
             });
         }
         if (ficha.Items.Count == 0)
         {
             return(new DtoLib.ResultadoId()
             {
                 Id = -1, Mensaje = "NO HAY ITEMS QUE REGISTRAR", Result = DtoLib.Enumerados.EnumResult.isError
             });
         }
         if (ficha.ItemsLimpiar == null)
         {
             return(new DtoLib.ResultadoId()
             {
                 Id = -1, Mensaje = "ITEMS A ELIMINAR NO DEFINIDO", Result = DtoLib.Enumerados.EnumResult.isError
             });
         }
         if (ficha.ItemsLimpiar.Count == 0)
         {
             return(new DtoLib.ResultadoId()
             {
                 Id = -1, Mensaje = "NO HAY ITEMS QUE ELIMINAR", Result = DtoLib.Enumerados.EnumResult.isError
             });
         }
         if (ficha.IsCredito == "N")
         {
             if (ficha.MetodosPago == null)
             {
                 return(new DtoLib.ResultadoId()
                 {
                     Id = -1, Mensaje = "METODOS DE PAGO NO DEFINIDO", Result = DtoLib.Enumerados.EnumResult.isError
                 });
             }
             if (ficha.MetodosPago.Count == 0)
             {
                 return(new DtoLib.ResultadoId()
                 {
                     Id = -1, Mensaje = "NO HAY METODOS DE PAGO QUE REGISTRAR", Result = DtoLib.Enumerados.EnumResult.isError
                 });
             }
         }
     }
     return(ServiceProv.VentaDocumento_Agregar(ficha));
 }
        public DtoLib.ResultadoId VentaDocumento_Agregar(DtoLibPosOffLine.VentaDocumento.Agregar ficha)
        {
            var result = new DtoLib.ResultadoId();

            try
            {
                using (var cnn = new LibEntitySqLitePosOffLine.LeonuxPosOffLineEntities(_cnn.ConnectionString))
                {
                    using (var ts = cnn.Database.BeginTransaction())
                    {
                        var fechaSistema = DateTime.Now.Date; //cnn.Database.SqlQuery<DateTime>("select date('now')").FirstOrDefault();
                        var mesRelacion  = fechaSistema.Month.ToString().Trim().PadLeft(2, '0');
                        var anoRelacion  = fechaSistema.Year.ToString();

                        var entSerie = cnn.Serie.FirstOrDefault(f => f.serie1.Trim().ToUpper() == ficha.Serie.Trim().ToUpper());
                        if (entSerie == null)
                        {
                            result.Mensaje = "SERIE DOCUMENTO NO ENCONTRADO";
                            result.Result  = DtoLib.Enumerados.EnumResult.isError;
                            return(result);
                        }

                        entSerie.correlativo += 1;
                        cnn.SaveChanges();
                        var _documento = entSerie.correlativo.ToString().Trim().PadLeft(10, '0');


                        var entVenta = new LibEntitySqLitePosOffLine.Venta()
                        {
                            idJornada         = ficha.IdJornada,
                            idOperador        = ficha.IdOperador,
                            documento         = _documento,
                            fecha             = fechaSistema.ToShortDateString(),
                            idCliente         = ficha.ClienteId,
                            nombreRazonSocial = ficha.ClienteNombreRazonSocial,
                            dirFiscal         = ficha.ClienteDirFiscal,
                            ciRif             = ficha.ClienteCiRif,
                            montoExento       = ficha.MontoExento,
                            montoBase         = ficha.MontoBase,
                            montoImpuesto     = ficha.MontoImpuesto,
                            base1             = ficha.MontoBase_1,
                            base2             = ficha.MontoBase_2,
                            base3             = ficha.MontoBase_3,
                            impuesto1         = ficha.MontoIva_1,
                            impuesto2         = ficha.MontoIva_2,
                            impuesto3         = ficha.MontoIva_3,
                            tasaIva1          = ficha.TasaIva_1,
                            tasaIva2          = ficha.TasaIva_2,
                            tasaIva3          = ficha.TasaIva_3,
                            mesRelacion       = mesRelacion,
                            control           = ficha.Control,
                            descuentoMonto1   = ficha.MontoDescuento_1,
                            descuentoMonto2   = ficha.MontoDescuento_2,
                            cargoMonto1       = ficha.MontoCargo_1,
                            descuentoPorc1    = ficha.PorcDescuento_1,
                            descuentoPorc2    = ficha.PorcDescuento_2,
                            cargoPorc_1       = ficha.PorcCargo_1,
                            estatusActivo     = 1,
                            tipoDocumento     = ficha.TipoDocumento,
                            aplica            = ficha.Aplica,
                            montoSubTotalNeto = ficha.MontoSubTotalNeto,
                            telefono          = ficha.ClienteTelefono,
                            factorCambio      = ficha.FactorCambio,
                            usuario           = ficha.UsuarioDescripcion,
                            usuarioCodigo     = ficha.UsuarioCodigo,
                            hora                  = ficha.HoraEmision,
                            montoDivisa           = ficha.MontoDivisa,
                            estacion              = ficha.Estacion,
                            renglones             = ficha.Renglones,
                            anoRelacion           = anoRelacion,
                            autoUsuario           = ficha.AutoUsuario,
                            signo                 = ficha.SignoDocumento,
                            serie                 = ficha.Serie,
                            montoSubTotalImpuesto = ficha.MontoSubTotalImpuesto,
                            montoSubTotal         = ficha.MontoSubTotal,
                            montoVentaNeta        = ficha.MontoVentaNeta,
                            montoCostoVenta       = ficha.MontoCostoVenta,
                            montoUtilidad         = ficha.MontoUtilidad,
                            montoUtilidadPorc     = ficha.PorcUtilidad,
                            montoTotal            = ficha.MontoTotal,
                            codigoSucursal        = ficha.CodigoSucursal,
                            prefijo               = ficha.Prefijo,
                            autoDeposito          = ficha.AutoDeposito,
                            codigoDeposito        = ficha.CodigoDeposito,
                            deposito              = ficha.DescripcionDeposito,
                            autoVendedor          = ficha.AutoVendedor,
                            codigoVendedor        = ficha.CodigoVendedor,
                            vendedor              = ficha.NombreVendedor,
                            autoCobrador          = ficha.AutoCobrador,
                            codigoCobrador        = ficha.CodigoCobrador,
                            cobrador              = ficha.NombreCobrador,
                            autoTransporte        = ficha.AutoTransporte,
                            codigoTransporte      = ficha.CodigoTransporte,
                            transporte            = ficha.NombreTransporte,
                            montoRecibido         = ficha.MontoRecibido,
                            cambioDar             = ficha.CambioDar,
                            esCredito             = ficha.IsCredito,
                            tarifa                = ficha.Tarifa,
                            saldoPendiente        = ficha.SaldoPendiente,
                            autoConceptoMov       = ficha.AutoConceptoMov,
                            codigoConceptoMov     = ficha.CodigoConceptoMov,
                            nombreConceptoMov     = ficha.NombreConceptoMov,
                        };
                        cnn.Venta.Add(entVenta);
                        cnn.SaveChanges();


                        foreach (var rg in ficha.Items)
                        {
                            var entItem = new LibEntitySqLitePosOffLine.VentaDetalle()
                            {
                                idVenta            = entVenta.id,
                                autoDepartamento   = rg.AutoDepartamento,
                                autoGrupo          = rg.AutoGrupo,
                                autoProducto       = rg.AutoProducto,
                                autoSubGrupo       = rg.AutoSubGrupo,
                                autoTasa           = rg.AutoTasa,
                                cantidad           = rg.Cantidad,
                                cantidadUnd        = rg.CantidadUnd,
                                categoria          = rg.Categoria,
                                codigoProducto     = rg.CodigoPrd,
                                costoCompraUnd     = rg.CostoCompraUnd,
                                costoPromedioUnd   = rg.CostoPromedioUnd,
                                costoVenta         = rg.CostoVenta,
                                decimales          = rg.Decimales,
                                diaEmpaqueGarantia = rg.DiasEmpaqueGarantia,
                                empaqueContenido   = rg.EmpaqueContenido,
                                empaqueDescripcion = rg.EmpaqueDescripcion,
                                empaqueCodigo      = rg.EmpaqueCodigo,
                                montoDesc1         = rg.MontoDscto_1,
                                montoDesc2         = rg.MontoDscto_2,
                                montoDesc3         = rg.MontoDscto_3,
                                montoIva           = rg.MontoIva,
                                NombreProducto     = rg.NombrePrd,
                                notas          = rg.Notas,
                                porctDesc1     = rg.PorcDscto_1,
                                porctDesc2     = rg.PorcDscto_2,
                                porctDesc3     = rg.PorcDscto_3,
                                precioFinal    = rg.PrecioFinal,
                                precioItem     = rg.PrecioItem,
                                precioNeto     = rg.PrecioNeto,
                                precioSugerido = rg.PrecioSugerido,
                                precioUnd      = rg.PrecioUnd,
                                tarifa         = rg.TarifaPrecio,
                                tasaIva        = rg.TasaIva,
                                total          = rg.Total,
                                totalNeto      = rg.TotalNeto,
                                utilidadMonto  = rg.MontoUtilidad,
                                utilidadPorct  = rg.PorctUtilidad,
                                totalDescuento = rg.TotalDescuento,
                                tipoIva        = rg.TipoIva,
                                esPesado       = rg.EsPesado,
                                costoCompra    = rg.CostoCompra,
                                costoPromedio  = rg.CostoPromedio,
                            };
                            cnn.VentaDetalle.Add(entItem);
                            cnn.SaveChanges();
                        }

                        if (ficha.MetodosPago != null)
                        {
                            foreach (var mt in ficha.MetodosPago)
                            {
                                var entMetodo = new LibEntitySqLitePosOffLine.VentaPago()
                                {
                                    idVenta           = entVenta.id,
                                    tipoMedioCobro    = mt.tipoMedioPago,
                                    autoMedioCobro    = mt.autoMedioPago,
                                    codioMedioCobro   = mt.codigoMedioPago,
                                    descripMedioCobro = mt.descripcionMedioPago,
                                    importe           = mt.Importe,
                                    montoRecibido     = mt.MontoRecibido,
                                    tasa       = mt.Tasa,
                                    lote       = mt.Lote,
                                    referencia = mt.Referencia,
                                };
                                cnn.VentaPago.Add(entMetodo);
                                cnn.SaveChanges();
                            }
                        }

                        foreach (var ie in ficha.ItemsLimpiar)
                        {
                            var entItemEliminar = cnn.Item.Find(ie.Id);
                            if (entItemEliminar == null)
                            {
                                result.Result  = DtoLib.Enumerados.EnumResult.isError;
                                result.Mensaje = "ITEM VENTA NO ENCONTRADO ";
                                return(result);
                            }
                            ;
                            cnn.Item.Remove(entItemEliminar);
                            cnn.SaveChanges();
                        }

                        ts.Commit();
                        result.Id = (int)entVenta.id;
                    }
                }
            }
            catch (Exception e)
            {
                result.Mensaje = e.Message;
                result.Result  = DtoLib.Enumerados.EnumResult.isError;
            }

            return(result);
        }
Exemplo n.º 3
0
        public OOB.ResultadoId VentaDocumento_Agregar(OOB.LibVenta.PosOffline.VentaDocumento.Agregar ficha)
        {
            var rt = new OOB.ResultadoId();

            var agregarDTO = new DtoLibPosOffLine.VentaDocumento.Agregar()
            {
                IdJornada                = ficha.IdJornada,
                IdOperador               = ficha.IdOperador,
                Aplica                   = ficha.Aplica,
                AutoUsuario              = ficha.AutoUsuario,
                ClienteId                = ficha.ClienteId,
                ClienteCiRif             = ficha.ClienteCiRif,
                ClienteDirFiscal         = ficha.ClienteDirFiscal,
                ClienteNombreRazonSocial = ficha.ClienteNombreRazonSocial,
                ClienteTelefono          = ficha.ClienteTelefono,
                Control                  = ficha.Control,
                Documento                = ficha.Documento,
                Estacion                 = ficha.Estacion,
                EstatusDocumento         = ficha.IsDocumentoActivo ? 1 : 0,
                FactorCambio             = ficha.FactorCambio,
                MontoBase                = ficha.MontoBase,
                MontoBase_1              = ficha.MontoBase_1,
                MontoBase_2              = ficha.MontoBase_2,
                MontoBase_3              = ficha.MontoBase_3,
                MontoCargo_1             = ficha.MontoCargo_1,
                MontoCostoVenta          = ficha.MontoCostoVenta,
                MontoDescuento_1         = ficha.MontoDescuento_1,
                MontoDescuento_2         = ficha.MontoDescuento_2,
                MontoDivisa              = ficha.MontoDivisa,
                MontoExento              = ficha.MontoExento,
                MontoImpuesto            = ficha.MontoImpuesto,
                MontoIva_1               = ficha.MontoIva_1,
                MontoIva_2               = ficha.MontoIva_2,
                MontoIva_3               = ficha.MontoIva_3,
                MontoSubTotal            = ficha.MontoSubTotal,
                MontoSubTotalImpuesto    = ficha.MontoSubTotalImpuesto,
                MontoSubTotalNeto        = ficha.MontoSubTotalNeto,
                MontoTotal               = ficha.MontoTotal,
                MontoUtilidad            = ficha.MontoUtilidad,
                MontoVentaNeta           = ficha.MontoVentaNeta,
                PorcCargo_1              = ficha.PorcCargo_1,
                PorcDescuento_1          = ficha.PorcDescuento_1,
                PorcDescuento_2          = ficha.PorcDescuento_2,
                PorcUtilidad             = ficha.PorcUtilidad,
                Renglones                = ficha.Renglones,
                Serie               = ficha.Serie,
                SignoDocumento      = ficha.SignoDocumento,
                TasaIva_1           = ficha.TasaIva_1,
                TasaIva_2           = ficha.TasaIva_2,
                TasaIva_3           = ficha.TasaIva_3,
                TipoDocumento       = (int)ficha.TipoDocumento,
                UsuarioCodigo       = ficha.UsuarioCodigo,
                UsuarioDescripcion  = ficha.UsuarioDescripcion,
                CodigoSucursal      = ficha.CodioSucursal,
                Prefijo             = ficha.PrefijoSucursal,
                AutoDeposito        = ficha.AutoDeposito,
                CodigoDeposito      = ficha.CodigoDeposito,
                DescripcionDeposito = ficha.DescripcionDeposito,
                AutoVendedor        = ficha.AutoVendedor,
                CodigoVendedor      = ficha.CodigoVendedor,
                NombreVendedor      = ficha.NombreVendedor,
                AutoCobrador        = ficha.AutoCobrador,
                CodigoCobrador      = ficha.CodigoCobrador,
                NombreCobrador      = ficha.NombreCobrador,
                AutoTransporte      = ficha.AutoTransporte,
                CodigoTransporte    = ficha.CodigoTransporte,
                NombreTransporte    = ficha.NombreTransporte,
                MontoRecibido       = ficha.MontoRecibido,
                CambioDar           = ficha.CambioDar,
                IsCredito           = ficha.IsCredito,
                HoraEmision         = DateTime.Now.ToShortTimeString(),
                Tarifa              = ficha.Tarifa,
                SaldoPendiente      = ficha.SaldoPendiente,
                AutoConceptoMov     = ficha.AutoConceptoMov,
                CodigoConceptoMov   = ficha.CodigoConceptoMov,
                NombreConceptoMov   = ficha.NombreConceptoMov,
            };

            var agregarItemDto = ficha.Items.Select(s =>
            {
                var t = new DtoLibPosOffLine.VentaDocumento.AgregarItem()
                {
                    AutoDepartamento    = s.AutoDepartamento,
                    AutoGrupo           = s.AutoGrupo,
                    AutoProducto        = s.AutoProducto,
                    AutoSubGrupo        = s.AutoSubGrupo,
                    AutoTasa            = s.AutoTasa,
                    Cantidad            = s.Cantidad,
                    CantidadUnd         = s.CantidadUnd,
                    Categoria           = s.Categoria,
                    CodigoPrd           = s.CodigoPrd,
                    CostoCompraUnd      = s.CostoCompraUnd,
                    CostoPromedioUnd    = s.CostoPromedioUnd,
                    CostoVenta          = s.CostoVenta,
                    Decimales           = s.Decimales,
                    DiasEmpaqueGarantia = s.DiasEmpaqueGarantia,
                    EmpaqueCodigo       = s.EmpaqueCodigo,
                    EmpaqueContenido    = s.EmpaqueContenido,
                    EmpaqueDescripcion  = s.EmpaqueDescripcion,
                    MontoDscto_1        = s.MontoDscto_1,
                    MontoDscto_2        = s.MontoDscto_2,
                    MontoDscto_3        = s.MontoDscto_3,
                    MontoIva            = s.MontoIva,
                    MontoUtilidad       = s.MontoUtilidad,
                    NombrePrd           = s.NombrePrd,
                    Notas          = s.Notas,
                    PorcDscto_1    = s.PorcDscto_1,
                    PorcDscto_2    = s.PorcDscto_2,
                    PorcDscto_3    = s.PorcDscto_3,
                    PorctUtilidad  = s.PorctUtilidad,
                    PrecioFinal    = s.PrecioFinal,
                    PrecioItem     = s.PrecioItem,
                    PrecioNeto     = s.PrecioNeto,
                    PrecioSugerido = s.PrecioSugerido,
                    PrecioUnd      = s.PrecioUnd,
                    TarifaPrecio   = s.TarifaPrecio,
                    TasaIva        = s.TasaIva,
                    Total          = s.Total,
                    TotalNeto      = s.TotalNeto,
                    TotalDescuento = s.TotalDescuento,
                    EsPesado       = s.EsPesado?1:0,
                    TipoIva        = s.TipoIva,
                    CostoCompra    = s.CostoCompra,
                    CostoPromedio  = s.CostoPromedio,
                };

                return(t);
            }).ToList();

            agregarDTO.Items = agregarItemDto;


            var agregarMetodsPago = ficha.MetodosPago.Select(m =>
            {
                var _tipoMedioPago = -1;
                switch (m.TipoMedioPago)
                {
                case OOB.LibVenta.PosOffline.VentaDocumento.Enumerados.EnumTipoMedioPago.Efectivo:
                    _tipoMedioPago = 1;
                    break;

                case OOB.LibVenta.PosOffline.VentaDocumento.Enumerados.EnumTipoMedioPago.Divisa:
                    _tipoMedioPago = 2;
                    break;

                case OOB.LibVenta.PosOffline.VentaDocumento.Enumerados.EnumTipoMedioPago.Electronico:
                    _tipoMedioPago = 3;
                    break;

                case OOB.LibVenta.PosOffline.VentaDocumento.Enumerados.EnumTipoMedioPago.Otros:
                    _tipoMedioPago = 4;
                    break;
                }
                var nr = new DtoLibPosOffLine.VentaDocumento.AgregarMetodoPago()
                {
                    tipoMedioPago        = _tipoMedioPago,
                    autoMedioPago        = m.autoMedioPago,
                    codigoMedioPago      = m.codigoMedioPago,
                    descripcionMedioPago = m.descripcionMedioPago,
                    Importe       = m.Importe,
                    MontoRecibido = m.MontoRecibido,
                    Tasa          = m.Tasa,
                    Lote          = m.Lote,
                    Referencia    = m.Referencia,
                };
                return(nr);
            }).ToList();

            agregarDTO.MetodosPago = agregarMetodsPago;

            var agregarItemsEliminarDto = ficha.ItemsEliminar.Select(s =>
            {
                var nr = new DtoLibPosOffLine.VentaDocumento.AgregarItemLimpiar()
                {
                    Id = s.IdEliminar,
                };
                return(nr);
            }).ToList();

            agregarDTO.ItemsLimpiar = agregarItemsEliminarDto;


            var r01 = MyData.VentaDocumento_Agregar(agregarDTO);

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

            return(rt);
        }