Beispiel #1
0
        public async Task <ReciboResponse> GraboRecibo(Vtrrch recibo, string tipoOperacion)
        {
            Vtmclh cliente = await Context.Vtmclh.Where(c => c.VtmclhNrocta == recibo.Vtrmvh_Nrocta).FirstOrDefaultAsync();

            if (cliente == null)
            {
                Logger.Error($"El cliente {recibo.Vtrmvh_Nrocta} no existe.");
                return(new ReciboResponse("Bad Request", 0, $"El cliente {recibo.Vtrmvh_Nrocta} no existe."));
            }


            oVtrrch.instancioObjeto(tipoOperacion);

            oVtrrch.asignoaTMWizard("VIRT_TIPPRC", "M", Logger);

            oVtrrch.MoveNext();

            Type typeRecibo = recibo.GetType();

            IEnumerable <PropertyInfo> listaPropiedades = typeRecibo.GetProperties();


            foreach (PropertyInfo propiedad in listaPropiedades)
            {
                if (propiedad.PropertyType == typeof(List <Vtrrcc01>))
                {
                    foreach (Vtrrcc01 item in recibo.Aplicaciones)
                    {
                        oVtrrch.asignoaTM("VTRRCC01", "", item, 2, Logger);
                    }
                }
                else if (propiedad.PropertyType == typeof(List <Vtrrcc04>))
                {
                    foreach (Vtrrcc04 item in recibo.MediosDeCobro)
                    {
                        oVtrrch.asignoaTM("VTRRCC04", "", item, 2, Logger);
                    }
                }
                else
                {
                    {
                        oVtrrch.asignoaTM("VTRRCH", propiedad.Name, propiedad.GetValue(recibo, null), 1, Logger);
                        //Logger.Information($"Campos {propiedad.Name} asignado con el valor {propiedad.GetValue(recibo, null)}");
                    }
                }
            }
            Save PerformedOperation = oVtrrch.save();

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

            oVtrrch.closeObjectInstance();

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

            return(new ReciboResponse("OK", 0, PerformedOperation.ComprobanteGenerado, "Comprobante generado"));
        }
        private async Task <bool> ValidoVTMCLH(string codigoCliente)
        {
            Vtmclh cliente = await Context.Vtmclh.FindAsync(new object[] { codigoCliente });

            if (cliente != null)
            {
                return(true);
            }
            return(false);
        }
        public async Task <ActionResult <List <ClienteResponse> > > Put([FromBody] List <ClienteDTO> clientes)
        {
            bool hayError = false;

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

            List <ClienteResponse> responseList = new List <ClienteResponse>();


            foreach (ClienteDTO cliente in clientes)
            {
                Logger.Information($"Se recibio actualizacion de datos del cliente{cliente.NumeroCliente} - {cliente.RazonSocial} - Id de operacion: {cliente.IdOperacion}");

                int idOperacion = cliente.IdOperacion;

                if (Env.IsProduction())
                {
                    if (int.TryParse(cliente.NumeroCliente, out _))
                    {
                        cliente.NumeroCliente = string.Format("{0:00000000}", int.Parse(cliente.NumeroCliente));
                    }
                    ;
                    if (int.TryParse(cliente.NumeroSubcuenta, out _))
                    {
                        cliente.NumeroSubcuenta = string.Format("{0:00000000}", int.Parse(cliente.NumeroSubcuenta));
                    }
                }

                Vtmclh clienteFormat = Mapper.Map <ClienteDTO, Vtmclh>(cliente);

                //ClienteResponse response = Repository.GraboCliente(clienteFormat, "OPEN");
                ClienteResponse response = await Repository.ActualizoCliente(clienteFormat);

                response.IdOperacion = idOperacion;
                if (response.Estado != 200)
                {
                    hayError = true;
                }

                responseList.Add(response);
            }

            if (hayError)
            {
                return(BadRequest(responseList));
            }

            return(Ok(responseList));
        }
Beispiel #4
0
        public async Task <ClienteResponse> ActualizoCliente(Vtmclh cliente)
        {
            string errorAltaCodigoPostal = "";
            string situacionDeIvaActual  = "";

            errorAltaCodigoPostal = await GeneroCodigoPostal(cliente.VtmclhCodpai, cliente.VtmclhCodpos, cliente.VtmclhJurisd);

            if (errorAltaCodigoPostal != "")
            {
                return(new ClienteResponse("Bad Request", 0, errorAltaCodigoPostal));
            }

            errorAltaCodigoPostal = await GeneroCodigoPostal(cliente.VtmclhPaient, cliente.VtmclhCodent, cliente.VtmclhJurent);

            if (errorAltaCodigoPostal != "")
            {
                return(new ClienteResponse("Bad Request", 0, errorAltaCodigoPostal));
            }


            Vtmclh clienteAActualizar = await Context.Vtmclh
                                        .Where(c => c.VtmclhNrocta == cliente.VtmclhNrocta)
                                        .FirstOrDefaultAsync();

            if (clienteAActualizar == null)
            {
                return(new ClienteResponse("Bad Request", 0, $"El cliente {cliente.VtmclhNrocta} no existe"));
            }

            situacionDeIvaActual = clienteAActualizar.VtmclhCndiva;

            Type typeCliente = cliente.GetType();

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

            foreach (System.Reflection.PropertyInfo propiedad in listaPropiedades)
            {
                var value = propiedad.GetValue(cliente, null);

                if (propiedad.PropertyType == typeof(string))
                {
                    if ((string)value != "null" && (string)value != "NULL" &&
                        value != null && propiedad.Name != "VtmclhNrocta" &&
                        propiedad.Name != "Contactos")
                    {
                        if (propiedad.Name == "VtmclhFisjur")
                        {
                            if ((string)value != "J" && (string)value != "F")
                            {
                                return(new ClienteResponse("Bad Request", 0, $"El campo Tipo de Persona tiene un valor inválido"));
                            }
                        }


                        if (propiedad.Name == "VtmclhLanexp")
                        {
                            if ((string)value != "1" && (string)value != "2" && (string)value != "3")
                            {
                                return(new ClienteResponse("Bad Request", 0, $"El campo Idioma de referencia tiene un valor inválido"));
                            }
                        }

                        typeCliente.InvokeMember(propiedad.Name, BindingFlags.SetProperty, null, clienteAActualizar, new object[] { value });
                    }
                }
            }

            clienteAActualizar.VtmclhFecmod = DateTime.Now;
            clienteAActualizar.VtmclhUltopr = "M";
            clienteAActualizar.VtmclhUserid = "API";

            try
            {
                await Context.SaveChangesAsync();
            }
            catch (Exception e)
            {
                return(new ClienteResponse("Bad Request", 0, e.InnerException.Message));
            }

            foreach (Vtmclc contacto in cliente.Contactos)
            {
                contacto.VtmclcNrocta = cliente.VtmclhNrocta;
                ClienteResponse response = await this.actualizoContacto(contacto);

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

            foreach (Vtmcli impuesto in cliente.Impuestos)
            {
                impuesto.VtmcliNrocta = cliente.VtmclhNrocta;
                ClienteResponse response = await this.actualizoImpuesto(impuesto);

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

            //01/10/2021 - Se comenta dado que empiezan a informar impuestos desde app origen.
            //if (situacionDeIvaActual != clienteAActualizar.VtmclhCndiva)
            //{
            //    try
            //    {
            //        await Context.Database.BeginTransactionAsync();
            //        var rowsAffected = await Context.Database.ExecuteSqlRawAsync($"EXEC ALM_RegeneraVTMCLI @p0", parameters: new[] { cliente.VtmclhNrocta });
            //        await Context.Database.CommitTransactionAsync();
            //    }
            //    catch (Exception e)
            //    {
            //        return new ClienteResponse("Bad Request", 0, e.InnerException.Message);
            //    }

            //}

            return(new ClienteResponse("OK", 0, null, "Cliente actualizado"));
        }
Beispiel #5
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"));
        }