Пример #1
0
 public ResponseFactura ProcesarFactura(List <mod.Factura> facturas)
 {
     mod.ResponseFactura responseFactura = new ResponseFactura();
     try
     {
         if (facturas.Count > 0)
         {
             facturas.ForEach(itemfactura =>
             {
                 itemfactura.Mensaje  = Validar(itemfactura);
                 itemfactura.ValorIva = itemfactura.ValorTotal * (itemfactura.ValorIva / 100);
             });
             if (facturas.Where(x => x.Mensaje != string.Empty).Count() > 0)
             {
                 responseFactura.Facturas = facturas;
                 throw new System.Exception("Las facturas presentaron algunos errores por favor rebice cada item detalladamente");
             }
             else
             {
                 responseFactura.Facturas      = facturas;
                 responseFactura.TotalIva      = facturas.Sum(x => x.ValorIva);
                 responseFactura.TotalFacturas = facturas.Sum(x => x.ValorTotal);
             }
         }
         else
         {
             throw new System.Exception("No hay facturas por procesar");
         }
     }
     catch (System.Exception ex)
     {
         responseFactura.Mensaje = ex.Message;
         return(responseFactura);
     }
     return(responseFactura);
 }
Пример #2
0
        public ResponseFactura SimulacionFEEL(RequestFactura request)
        {
            // Thread.Sleep(500);
            request.Factura.Cabecera.CUF = "CUFprueba";
            ResponseFactura response = new ResponseFactura()
            {
                Factura = request.Factura,
                Proceso = new Proceso()
                {
                    CodEstado         = "123",
                    CodigoTipoFactura = (int)request.Factura.Tipo,
                    CUFD            = "CUFDPRUEBA",
                    IdDocFiscalERP  = request.IdDocFiscalERP,
                    IdDocFiscalFEEL = request.IdDocFiscalERP
                },
                Respuesta = new Respuesta()
                {
                    CodRespuesta = "0",
                    TxtRespuesta = "Exito"
                }
            };

            return(response);
        }
Пример #3
0
        public void CambiarJsonNAMEprop()
        {
            Factura f1 = new FacturaEstandar()
            {
                Cabecera = new CabeceraFacturaEstandar()
                {
                    NumeroFactura = 102,
                    Direccion     = "GV",
                    FechaEmision  = "20190116180000",
                    CodigoTipoDocumentoIdentidad = "3",
                    CUF                   = null,
                    NumeroDocumento       = "5642111",
                    Complemento           = null,
                    CodigoSucursal        = 1,
                    CodigoPuntoVenta      = 123,
                    NombreRazonSocial     = "Juan Perez",
                    MontoTotal            = 50.5m,
                    MontoDescuento        = 0,
                    CodigoCliente         = "55421",
                    CodigoDocumentoSector = 1,
                    NITEmisor             = 305080026,
                    CodigoMetodoPago      = 1,
                    NumeroTarjeta         = 414,
                    Leyenda               = "Ley No 453: ",
                    Usuario               = "FTL",
                    CodigoMoneda          = 1,
                    MontoTotalMoneda      = 50.5m,
                    TipoCambio            = 6.96m
                },
                //ListaDetalle= new List<Detalle>()
            };

            ((FacturaEstandar)f1).ListaDetalle.Add(
                new DetalleFacturaEstandar()
            {
                ActividadEconomica    = 123123,
                CodigoProductoSIN     = 123,
                CodigoProducto        = 123,
                Descripcion           = "coca cola 1 litro",
                Cantidad              = 5,
                PrecioUnitario        = 10.1m,
                MontoDescuentoDetalle = 0,
                SubTotal              = 50.5m,
                NumeroSerie           = "ABC345",
                UnidadMedida          = "botella"
            });

            Factura f2 = new FacturaAlquiler()
            {
                Cabecera = new CabeceraFacturaAlquiler()
                {
                    NumeroFactura = 102,
                    Direccion     = "GV",
                    FechaEmision  = "20190116180000",
                    CodigoTipoDocumentoIdentidad = "3",
                    CUF                   = null,
                    NumeroDocumento       = "5642111",
                    Complemento           = null,
                    CodigoSucursal        = 1,
                    CodigoPuntoVenta      = 123,
                    NombreRazonSocial     = "Juan Perez",
                    MontoTotal            = 50.5m,
                    MontoDescuento        = 0,
                    CodigoCliente         = "55421",
                    CodigoDocumentoSector = 1,
                    NITEmisor             = 305080026,
                    CodigoMetodoPago      = 1,
                    PeriodoFacturado      = "string",
                    Leyenda               = "Ley No 453: ",
                    Usuario               = "FTL",
                    CodigoMoneda          = 1,
                    MontoTotalMoneda      = 50.5m,
                    TipoCambio            = 6.96m
                },
                //ListaDetalle = new List<Detalle>()
            };

            f2.ListaDetalle.Add(
                new Detalle()
            {
                ActividadEconomica    = 123123,
                CodigoProductoSIN     = 123,
                CodigoProducto        = 123,
                Descripcion           = "coca cola 1 litro",
                MontoDescuentoDetalle = 0,
                SubTotal     = 50.5m,
                UnidadMedida = "botella"
            });



            string r1 = @"{ ""respuesta"": null, ""proceso"":null, ""facturaEstandar"": " + f1.ToString() + "}";
            string r2 = @"{ ""respuesta"": null, ""proceso"": null, ""facturaAlquiler"": " + f2.ToString() + "}";
            string r3 = @"{ ""respuesta"": null, ""proceso"": null, ""fac"": null }";
            string r4 = @"{ ""respuesta"": {
                ""codRespuesta"": ""0"",
                ""txtRespuesta"": ""Exito""
                },
                ""proceso"": {
                                ""idDocFiscalFEEL"": 11,
                ""cufd"": ""42bf9913ec06745b7f3c5cc62b32a59e"",
                ""codEstado"": ""D1"",
                ""idDocFiscalERP"": ""3"",
                ""codigoTipoFactura"": 1
                },
                ""facturaEstandar"": {
                    ""cabecera"": {
                        ""numeroFactura"": 3,
                        ""direccion"": ""Gualberto villarroel 123"",
                        ""fechaEmision"": 20190101180000,
                        ""codigoTipoDocumentoIdentidad"": 1,
                        ""cuf"": ""B41ECAD147A6BE9D2AD905278126E6FB4B88B3E3"",
                        ""numeroDocumento"": ""5642111"",
                        ""complemento"": """",
                        ""codigoSucursal"": 0,
                        ""nombreRazonSocial"": ""Juan Perez"",
                        ""montoTotal"": 50.5,
                        ""codigoCliente"": ""55421"",
                        ""codigoDocumentoSector"": 1,
                        ""nitEmisor"": 1028305029,
                        ""codigoMetodoPago"": 1,
                        ""leyenda"": ""Ley N° 453: Los medios de comunicación deben promover el respeto de los derechos de los usuarios y consumidores."",
                        ""usuario"": ""FTL"",
                        ""codigoMoneda"": 1,
                        ""montoTotalMoneda"": 50.5,
                        ""tipoCambio"": 6.97,
                        ""numeroTarjeta"": 54321
                    },
                    ""detalle"": [
                        {
                            ""actividadEconomica"": 123123,
                            ""codigoProductoSin"": 123,
                            ""codigoProducto"": ""123"",
                            ""descripcion"": ""coca cola 1 litro"",
                            ""cantidad"": 5,
                            ""precioUnitario"": 10,
                            ""subTotal"": 10,
                            ""numeroSerie"": ""1234567ADC"",
                            ""unidadMedida"": ""botella""
                        },
                        {
                            ""actividadEconomica"": 123123,
                            ""codigoProductoSin"": 123,
                            ""codigoProducto"": ""123"",
                            ""descripcion"": ""Fanta 1 litro"",
                            ""cantidad"": 5,
                            ""precioUnitario"": 10,
                            ""subTotal"": 10,
                            ""numeroSerie"": ""1234567ADC"",
                            ""unidadMedida"": ""botella""
                        }
                    ]
                }
            }";
            string r5 = @"{ ""respuesta"": { ""codRespuesta"": ""1200"", ""txtRespuesta"": ""Error la facturaEstandar ya se encuentra registrada numeroFactura :3"" } }";

            RequestFactura reqq = new RequestFactura()
            {
                CodigoTipoFactura = 1,
                Contingencia      = false,
                Cufd           = "42bf9913ec06745b7f3c5cc62b32a59e",
                EsLote         = false,
                IdDocFiscalERP = "3",
                IdLoteERP      = "",
                UltFacturaLote = false,
                Factura        = f1
            };

            Debug.WriteLine(reqq);
            Debug.WriteLine(JObject.FromObject(reqq).ToString());

            ResponseFactura resp4 = new ResponseFactura(r4);

            Debug.WriteLine(resp4);
            Debug.WriteLine(((CabeceraFacturaEstandar)resp4.Factura.Cabecera).NumeroTarjeta);

            ResponseFactura resp5 = new ResponseFactura(r5);

            Debug.WriteLine(resp5);
            //ResponseFactura resp1 = JsonConvert.DeserializeObject<ResponseFactura>(r1, HelperJson.AdaptarResponseFactura(r1));
            //ResponseFactura resp2 = JsonConvert.DeserializeObject<ResponseFactura>(r2, HelperJson.AdaptarResponseFactura(r2));
            ////RequestFactura req3 = JsonConvert.DeserializeObject<RequestFactura>(r3, HelperJson.AdaptarResponseFactura(r3));

            //Debug.WriteLine(resp1.Factura.GetType().ToString());
            //Debug.WriteLine(resp2.Factura.GetType().ToString());
            //Debug.WriteLine((FacturaEstandar)resp1.Factura);
            //Debug.WriteLine((FacturaAlquiler)resp2.Factura);
        }
Пример #4
0
        private void GuardarResponseFactura(ResponseFactura response)
        {
            StringBuilder            sql        = new StringBuilder("UPDATE fehfe SET ");
            List <DBAxon.Parameters> parametros = new List <DBAxon.Parameters>();

            //Respuesta
            sql.Append("fehfecres=?, fehfetres=?, ");
            parametros.Add(new DBAxon.Parameters("cres", response.Respuesta.CodRespuesta, ParameterDirection.Input, DbType.String, 10));
            parametros.Add(new DBAxon.Parameters("tres", response.Respuesta.TxtRespuesta, ParameterDirection.Input, DbType.String, 200));

            //Proceso
            sql.Append("fehfeifee = ?, fehfecufd = ?, fehfecsta = ?, fehfectip = ?, ");
            parametros.Add(new DBAxon.Parameters("ifee", response.Proceso.IdDocFiscalFEEL, ParameterDirection.Input, DbType.String, 20));
            parametros.Add(new DBAxon.Parameters("cufd", response.Proceso.CUFD, ParameterDirection.Input, DbType.String, 100));
            parametros.Add(new DBAxon.Parameters("csta", response.Proceso.CodEstado, ParameterDirection.Input, DbType.String, 10));
            parametros.Add(new DBAxon.Parameters("ctip", response.Proceso.CodigoTipoFactura, ParameterDirection.Input, DbType.Int32));

            //Factura - Cabecera
            sql.Append("fehfefemi=?, fehfectdi=?, fehfeccuf=?, fehfecsuc=?, fehfecpve=?, fehfecdse=?, fehfecmpa=?, fehfeleye=?, fehfecmon=? , fehfestat=" + EstadoDocumentoFiscal.E102_ProcesadaCorrectamente.ToString() + " ");
            parametros.Add(new DBAxon.Parameters("femi", response.Factura.Cabecera.FechaEmision, ParameterDirection.Input, DbType.String, 20));
            parametros.Add(new DBAxon.Parameters("ctdi", response.Factura.Cabecera.CodigoTipoDocumentoIdentidad, ParameterDirection.Input, DbType.Int32));
            parametros.Add(new DBAxon.Parameters("ccuf", response.Factura.Cabecera.CUF, ParameterDirection.Input, DbType.String, 50));
            parametros.Add(new DBAxon.Parameters("csuc", response.Factura.Cabecera.CodigoSucursal, ParameterDirection.Input, DbType.Int32));
            parametros.Add(new DBAxon.Parameters("cpve", response.Factura.Cabecera.CodigoPuntoVenta, ParameterDirection.Input, DbType.Int32));
            parametros.Add(new DBAxon.Parameters("cdse", response.Factura.Cabecera.CodigoDocumentoSector, ParameterDirection.Input, DbType.Int32));
            parametros.Add(new DBAxon.Parameters("cmpa", response.Factura.Cabecera.CodigoMetodoPago, ParameterDirection.Input, DbType.Int16));
            parametros.Add(new DBAxon.Parameters("leye", response.Factura.Cabecera.Leyenda, ParameterDirection.Input, DbType.String, 200));
            parametros.Add(new DBAxon.Parameters("cmon", response.Factura.Cabecera.CodigoMoneda, ParameterDirection.Input, DbType.Int32));

            sql.Append(" WHERE fehfeiddf= ?;");
            parametros.Add(new DBAxon.Parameters("iddf", response.Proceso.IdDocFiscalERP, ParameterDirection.Input, DbType.Int32));

            //Factura - ListaDetalle
            dynamic factura = Convert.ChangeType(response.Factura, response.Factura.GetType());

            //sql.Append("UPDATE fedfe SET ");
            if (factura.Tipo != TipoFactura.notaExportacion)
            {
                foreach (var detalle in factura.ListaDetalle)
                {
                    sql.Append("UPDATE fedfe SET fedfeaeco=?, fedfecpsi=? WHERE fedfeiddf = ?;");
                    parametros.Add(new DBAxon.Parameters("aeco", detalle.ActividadEconomica, ParameterDirection.Input, DbType.Int32));
                    parametros.Add(new DBAxon.Parameters("cpsi", detalle.CodigoProductoSIN, ParameterDirection.Input, DbType.Int32));
                    parametros.Add(new DBAxon.Parameters("iddf", response.Proceso.IdDocFiscalERP, ParameterDirection.Input, DbType.Int32));
                }
            }
            else
            {
                foreach (var detalle in factura.ListaDetalle)
                {
                    sql.Append("UPDATE fedfe SET fedfeaeco=?, fedfecpsi=?, fedfecnan=? WHERE fedfeiddf = ?;");
                    parametros.Add(new DBAxon.Parameters("aeco", detalle.ActividadEconomica, ParameterDirection.Input, DbType.Int32));
                    parametros.Add(new DBAxon.Parameters("cpsi", detalle.CodigoProductoSIN, ParameterDirection.Input, DbType.Int32));
                    parametros.Add(new DBAxon.Parameters("cnan", detalle.CodigoNandina, ParameterDirection.Input, DbType.Int32));
                    parametros.Add(new DBAxon.Parameters("iddf", response.Proceso.IdDocFiscalERP, ParameterDirection.Input, DbType.Int32));
                }
            }

            //BD
            DBAxon db = new DBAxon();

            try
            {
                db.OpenFactoryConnection();
                db.BeginTransaction();
                db.SetLockModeToWait();
                db.PrepareCommand(true, CommandType.Text, sql.ToString(), parametros.ToArray());
                db.command.ExecuteNonQuery();
                db.CommitTransaction();
            }
            catch (Exception ex)
            {
                db.RollbackTransaction();
                db.ExecuteNonQuery(CommandType.Text, "UPDATE fehfe SET fehfestat=" + int.Parse(EstadoDocumentoFiscal.E100_PendienteDeEnvio.ToString()) + " WHERE fehfeiddf=" + response.Proceso.IdDocFiscalERP);
                throw new Exception("Excepcion: GuardarResponseFactura() - " + ex.Message);
            }
            finally
            {
                db.CloseFactoryConnection();
                db = null;
            }
        }