public PedidoResponse PostPedido(Fcrmvh _pedido, string _tipoOperacion, bool pagoEfectivo)
        {
            string companyName = pagoEfectivo ? Configuration["CompanyNameEfectivo"] : Configuration["CompanyName"];

            FC_RR_FCRMVH oFCRMVH = new FC_RR_FCRMVH("admin", Configuration["PasswordAdmin"], companyName, Configuration, Logger);

            oFCRMVH.InstancioObjeto(_tipoOperacion);

            Type typePedido = _pedido.GetType();

            System.Reflection.PropertyInfo[] listaPropiedades = typePedido.GetProperties();

            oFCRMVH.AsignoaTM <Fcrmvh>("FCRMVH", _pedido, 1);

            foreach (Fcrmvi item in _pedido.Items)
            {
                oFCRMVH.AsignoaTM <Fcrmvi>("FCRMVI", item, 2);
            }

            Save PerformedOperation = oFCRMVH.Save();

            bool   result       = PerformedOperation.Result;
            string mensajeError = PerformedOperation.errorMessage;


            oFCRMVH.CloseObjectInstance();

            if (result == false)
            {
                return(new PedidoResponse("Bad Request", mensajeError));
            }

            return(new PedidoResponse("Pedido Generado Exitosamente"));
        }
        public async Task <ActionResult <FacturaResponse> > Post([FromBody] FacturasDTO factura)
        {
            Logger.Information($"Se recibio posteo de nueva factura {factura.CircuitoOrigen} - {factura.CircuitoAplicacion} - " +
                               $"Id de operacion: {factura.IdOperacion}");

            int idOperacion = factura.IdOperacion;

            if (Env.IsProduction())
            {
                if (int.TryParse(factura.Cliente, out _))
                {
                    factura.Cliente = string.Format("{0:00000000}", int.Parse(factura.Cliente));
                }
                ;
                if (int.TryParse(factura.CodigoSubcuenta, out _))
                {
                    factura.CodigoSubcuenta = string.Format("{0:00000000}", int.Parse(factura.CodigoSubcuenta));
                }
            }


            Fcrmvh facturaFormat = Mapper.Map <FacturasDTO, Fcrmvh>(factura);

            if (!ModelState.IsValid)
            {
                ModelState.AddModelError("Error", "Error de formato");
            }

            FacturaResponse response = await Repository.GraboFactura(facturaFormat, "NEW");

            response.IdOperacion = idOperacion;

            if (response.Estado != 200)
            {
                return(BadRequest(response));
            }

            return(Ok(response));
        }
示例#3
0
        public async Task <FacturaResponse> GraboFactura(Fcrmvh factura, string tipoOperacion)
        {
            Vtmclh cliente = await Context.Vtmclh.Where(c => c.VtmclhNrocta == factura.Fcrmvh_Nrocta).FirstOrDefaultAsync();

            if (cliente == null)
            {
                return(new FacturaResponse("Bad Request", 0, $"El cliente {factura.Fcrmvh_Nrocta} no existe."));
            }

            oFcrmvh.instancioObjeto(tipoOperacion);

            oFcrmvh.asignoaTMWizard("VIRT_CIRCOM", factura.Virt_Circom, Logger);
            oFcrmvh.asignoaTMWizard("VIRT_CIRAPL", factura.Virt_Cirapl, Logger);
            oFcrmvh.asignoaTMWizard("VIRT_CODCVT", factura.Virt_Codcvt, Logger);

            oFcrmvh.MoveNext();

            Type typeFactura = factura.GetType();

            IEnumerable <PropertyInfo> listaPropiedades = typeFactura.GetProperties()
                                                          .Where(e => e.Name != "Virt_Circom" &&
                                                                 e.Name != "Virt_Cirapl" &&
                                                                 e.Name != "Virt_Codcvt");



            foreach (PropertyInfo propiedad in listaPropiedades)
            {
                if (propiedad.PropertyType != typeof(ICollection <Fcrmvi07>))
                {
                    if (propiedad.PropertyType == typeof(ICollection <Fcrmvi>))
                    {
                        foreach (Fcrmvi item in factura.Items)
                        {
                            oFcrmvh.asignoaTM("FCRMVI", "", item, 2, Logger);
                        }
                    }
                    else
                    {
                        oFcrmvh.asignoaTM("FCRMVH", propiedad.Name, propiedad.GetValue(factura, null), 1, Logger);
                    }
                }
            }
            string mensajeError = oFcrmvh.completaImpuestos(factura.Impuestos);

            if (mensajeError != "")
            {
                return(new FacturaResponse("Bad Request", 0, mensajeError));
            }

            Save PerformedOperation = oFcrmvh.save();

            //bool result = false;
            //string mensajeError = "Prueba sin grabar";
            bool result = PerformedOperation.Result;

            mensajeError = PerformedOperation.errorMessage;

            oFcrmvh.closeObjectInstance();

            if (result == false)
            {
                return(new FacturaResponse("Bad Request", 0, mensajeError));
            }


            PerformedOperation.ComprobanteGenerado.Impuestos.AddRange(await RecuperoImpuestosComprobante(PerformedOperation.ComprobanteGenerado.ModuloComprobante,
                                                                                                         PerformedOperation.ComprobanteGenerado.CodigoComprobante,
                                                                                                         PerformedOperation.ComprobanteGenerado.NumeroComprobante));

            PerformedOperation.ComprobanteGenerado.ImporteTotal = await RecuperoTotalComprobante(PerformedOperation.ComprobanteGenerado.ModuloComprobante,
                                                                                                 PerformedOperation.ComprobanteGenerado.CodigoComprobante,
                                                                                                 PerformedOperation.ComprobanteGenerado.NumeroComprobante);

            using (SqlConnection sql = new SqlConnection(Configuration.GetConnectionString("DefaultConnectionString")))
            {
                using (SqlCommand cmd = new SqlCommand("Alm_ActualizaImpuVTRMVI", sql))
                {
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    cmd.Parameters.Add(new SqlParameter("@Modfor", PerformedOperation.ComprobanteGenerado.ModuloComprobante));
                    cmd.Parameters.Add(new SqlParameter("@Codfor", PerformedOperation.ComprobanteGenerado.CodigoComprobante));
                    cmd.Parameters.Add(new SqlParameter("@Nrofor", PerformedOperation.ComprobanteGenerado.NumeroComprobante));
                    await sql.OpenAsync();

                    await cmd.ExecuteNonQueryAsync();
                }
            }


            return(new FacturaResponse("OK", 0, PerformedOperation.ComprobanteGenerado, "Comprobante generado"));
        }