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)); }
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")); }
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")); }