private async Task <bool> ValidoGRCCBH(Cvmcth contrato) { Grccbh comprobanteVT = await Context.Grccbh.FindAsync(new object[] { "VT", contrato.Cvmcth_Codcvt }); if (comprobanteVT != null) { return(true); } return(false); }
public async Task <ActionResult <List <ContratoResponse> > > Put([FromBody] List <ContratosDTO> contratos) { bool hayError = false; if (!ModelState.IsValid) { ModelState.AddModelError("Error", "Error de formato"); } List <ContratoResponse> responseList = new List <ContratoResponse>(); foreach (ContratosDTO contrato in contratos) { Logger.Information($"Se recibio actualizacion de datos del contrato{contrato.TipoContrato} - " + $"'{contrato.CodigoContrato} - Id de operacion: {contrato.IdOperacion}"); int idOperacion = contrato.IdOperacion; if (Env.IsProduction()) { if (int.TryParse(contrato.Cliente, out _)) { contrato.Cliente = string.Format("{0:00000000}", int.Parse(contrato.Cliente)); } ; if (int.TryParse(contrato.CodigoDeSubcuenta, out _)) { contrato.CodigoDeSubcuenta = string.Format("{0:00000000}", int.Parse(contrato.CodigoDeSubcuenta)); } } Cvmcth contratoFormat = Mapper.Map <ContratosDTO, Cvmcth>(contrato); //ClienteResponse response = Repository.GraboCliente(clienteFormat, "OPEN"); ContratoResponse response = await Repository.ActualizoContrato(contratoFormat); response.IdOperacion = idOperacion; if (response.Estado != 200) { hayError = true; } responseList.Add(response); } if (hayError) { return(BadRequest(responseList)); } return(Ok(responseList)); }
public async Task Patch(string codemp, string codcon, string nrocon, int nroext, DateTime fechacierreot, JsonPatchDocument patchDocument) { Cvmcth contrato = await Repository.RecuperaContrato(codemp, codcon, nrocon, nroext); if (contrato is null) { throw new NotFoundException("Contrato inexistente"); } object nuevoEstado = patchDocument.Operations[0].value; Logger.Information($"Nuevo estado a asignar: {nuevoEstado}"); ResultadoPatchContrato resultadoPatch = await Repository.Patch(contrato, fechacierreot, nuevoEstado.ToString()); if (resultadoPatch.actualizado == "N") { throw new BadRequestException(resultadoPatch.errmsg); } }
public async Task <ActionResult <ClienteResponse> > Post([FromBody] ContratosDTO contrato) { Logger.Information($"Se recibio posteo de nuevo contrato{contrato.TipoContrato} - {contrato.CodigoContrato} - " + $"Id de operacion: {contrato.IdOperacion}"); int idOperacion = contrato.IdOperacion; if (Env.IsProduction()) { if (int.TryParse(contrato.Cliente, out _)) { contrato.Cliente = string.Format("{0:00000000}", int.Parse(contrato.Cliente)); } ; if (int.TryParse(contrato.CodigoDeSubcuenta, out _)) { contrato.CodigoDeSubcuenta = string.Format("{0:00000000}", int.Parse(contrato.CodigoDeSubcuenta)); } } Cvmcth contratoFormat = Mapper.Map <ContratosDTO, Cvmcth>(contrato); if (!ModelState.IsValid) { ModelState.AddModelError("Error", "Error de formato"); } ContratoResponse response = await Repository.GraboContrato(contratoFormat, "NEW"); response.IdOperacion = idOperacion; if (response.Estado != 200) { return(BadRequest(response)); } return(Ok(response)); }
public async Task <ContratoResponse> GraboContrato(Cvmcth contrato, string tipoOperacion) { oCvmcth.instancioObjeto(tipoOperacion); Type typeContrato = contrato.GetType(); System.Reflection.PropertyInfo[] listaPropiedades = typeContrato.GetProperties(); foreach (System.Reflection.PropertyInfo propiedad in listaPropiedades) { if (propiedad.PropertyType == typeof(ICollection <Cvmcti>)) { oCvmcth.limpioGrilla("CVMCTI01"); foreach (Cvmcti item in contrato.Items) { oCvmcth.asignoaTM("CVMCTI01", "", item, 2, Logger); } } else { oCvmcth.asignoaTM("CVMCTH01", propiedad.Name, propiedad.GetValue(contrato, null), 1, Logger); } } Save PerformedOperation = oCvmcth.save(); bool result = PerformedOperation.Result; string mensajeError = PerformedOperation.errorMessage; oCvmcth.closeObjectInstance(); if (result == false) { return(new ContratoResponse("Bad Request", 0, mensajeError)); } return(new ContratoResponse("OK", 0, null, "Contrato generado")); }
public async Task <ResultadoPatchContrato> Patch(Cvmcth contrato, DateTime fechacierreot, string nuevoEstado) { string actualizado = "N"; string errmsg = ""; using (SqlConnection sql = new SqlConnection(Connectionstring)) { using (SqlCommand cmd = new SqlCommand("ALM_WS_CambioEstadoContrato", sql)) { cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@Codemp", contrato.CvmcthCodemp)); cmd.Parameters.Add(new SqlParameter("@Codcon", contrato.CvmcthCodcon)); cmd.Parameters.Add(new SqlParameter("@Nrocon", contrato.CvmcthNrocon)); cmd.Parameters.Add(new SqlParameter("@Nroext", contrato.CvmcthNroext)); cmd.Parameters.Add(new SqlParameter("@FchcieOT", fechacierreot)); cmd.Parameters.Add(new SqlParameter("@NewEst", nuevoEstado)); await sql.OpenAsync(); using (var reader = await cmd.ExecuteReaderAsync()) { while (await reader.ReadAsync()) { actualizado = (string)reader["actualizado"]; errmsg = (string)reader["errmsg"]; } } } } ResultadoPatchContrato resultado = new ResultadoPatchContrato(); resultado.actualizado = actualizado; resultado.errmsg = errmsg; return(resultado); }
public async Task <ContratoResponse> ActualizoContrato(Cvmcth contrato) { Cvmcth contratoAActualizar = await Context.Cvmcth .FindAsync(new object[] { contrato.Cvmcth_Codcon, contrato.Cvmcth_Nrocon, contrato.Cvmcth_Nroext }); if (contratoAActualizar == null) { return(new ContratoResponse("Not Found", 0, $"El contrato no existe")); } Type typeContrato = contrato.GetType(); System.Reflection.PropertyInfo[] listaPropiedades = typeContrato.GetProperties(); foreach (System.Reflection.PropertyInfo propiedad in listaPropiedades) { var value = propiedad.GetValue(contrato, null); if (propiedad.PropertyType == typeof(string)) { if ((string)value != "null" && (string)value != "NULL" && value != null && propiedad.Name != "Cvmcth_Codcon" && propiedad.Name != "Cvmcth_Nrocon" && propiedad.Name != "Cvmcth_Nroext" && propiedad.Name != "Items") { switch (propiedad.Name) { case "Cvmcth_Desfre": short valorAAsignar = 0; switch (value) { case "A": valorAAsignar = 360; break; case "M": valorAAsignar = 30; break; case "B": valorAAsignar = 60; break; case "T": valorAAsignar = 40; break; case "C": valorAAsignar = 30; break; case "S": valorAAsignar = 180; break; default: break; } contratoAActualizar.Cvmcth_Frefac = valorAAsignar; break; case "Cvmcth_Nrocta": case "Cvmcth_Nrosub": string codigoCliente = propiedad.Name == "Cvmcth_Nrocta" ? contrato.Cvmcth_Nrocta : contrato.Cvmcth_Nrosub; bool ExisteCliente = await ValidoVTMCLH(codigoCliente); if (ExisteCliente == false) { return(new ContratoResponse("Bad Request", 0, $"El codigo {codigoCliente} no se encuentra creado como cliente.")); } typeContrato.InvokeMember(propiedad.Name, BindingFlags.SetProperty, null, contratoAActualizar, new object[] { value }); break; case "Cvmcth_Codcvt": bool ExisteComprobante = await ValidoGRCCBH(contrato); if (ExisteComprobante == false) { return(new ContratoResponse("Bad Request", 0, $"El comprobante de ventas {contrato.Cvmcth_Codcvt} no existe.")); } typeContrato.InvokeMember(propiedad.Name, BindingFlags.SetProperty, null, contratoAActualizar, new object[] { value }); break; default: typeContrato.InvokeMember(propiedad.Name, BindingFlags.SetProperty, null, contratoAActualizar, new object[] { value }); break; } } } } contratoAActualizar.Cvmcth_Fecmod = DateTime.Now; contratoAActualizar.Cvmcth_Ultopr = "M"; contratoAActualizar.Cvmcth_Userid = "API"; try { await Context.SaveChangesAsync(); } catch (Exception e) { return(new ContratoResponse("Bad Request", 0, e.InnerException.Message)); } foreach (Cvmcti items in contrato.Items) { items.Cvmcti_Codcon = contrato.Cvmcth_Codcon; items.Cvmcti_Nrocon = contrato.Cvmcth_Nrocon; items.Cvmcti_Nroext = contrato.Cvmcth_Nroext; ContratoResponse response = await this.actualizoItem(items, contrato); if (response.Estado != 200) { return(response); } } return(new ContratoResponse("OK", 0, null, "Contrato actualizado")); }
private async Task <ContratoResponse> actualizoItem(Cvmcti item, Cvmcth contrato) { Cvmcti ItemAActualizar = await Context.Cvmcti .FindAsync(new object[] { item.Cvmcti_Codcon, item.Cvmcti_Nrocon, item.Cvmcti_Nroext, item.Cvmcti_Nroitm }); if (ItemAActualizar == null) { Cvmcti nuevoItem = new Cvmcti { }; Type typeItem = item.GetType(); System.Reflection.PropertyInfo[] listaPropiedades = typeItem.GetProperties(); foreach (System.Reflection.PropertyInfo propiedad in listaPropiedades) { object value = propiedad.GetValue(item, null); switch (propiedad.GetValue(item, null)) { case string: if ((string)value != "null" && (string)value != "NULL" && value != null) { typeItem.InvokeMember(propiedad.Name, BindingFlags.SetProperty, null, nuevoItem, new object[] { value }); } break; case int: if ((int)value != 0) { typeItem.InvokeMember(propiedad.Name, BindingFlags.SetProperty, null, nuevoItem, new object[] { value }); } break; case short: if ((short)value != 0) { typeItem.InvokeMember(propiedad.Name, BindingFlags.SetProperty, null, nuevoItem, new object[] { value }); } break; case decimal: if ((decimal)value != 0) { typeItem.InvokeMember(propiedad.Name, BindingFlags.SetProperty, null, nuevoItem, new object[] { value }); } break; default: break; } } nuevoItem.Cvmcti_Preaju = 0; nuevoItem.Cvmcti_Auxaju = 0; nuevoItem.Cvmcti_Modcpt = "VT"; nuevoItem.Cvmcti_Tipcpt = "A"; nuevoItem.Cvmcti_Codcpt = "V001"; nuevoItem.Cvmcti_Stocks = "N"; nuevoItem.Cvmcti_Cuenta = "41010101"; nuevoItem.Cvmcti_Unimed = "UN"; nuevoItem.Cvmcti_Debhab = "H"; nuevoItem.Cvmcti_Fecalt = DateTime.Now; nuevoItem.Cvmcti_Fecmod = DateTime.Now; nuevoItem.Cvmcti_Debaja = "N"; nuevoItem.Cvmcti_Oalias = "CVMCTI01"; nuevoItem.Cvmcti_Ultopr = "M"; nuevoItem.Cvmcti_Userid = "API"; Context.Cvmcti.Add(nuevoItem); try { await Context.SaveChangesAsync(); } catch (Exception e) { return(new ContratoResponse("Bad Request", 0, e.InnerException.Message)); } } else { Type typeItem = item.GetType(); System.Reflection.PropertyInfo[] listaPropiedades = typeItem.GetProperties(); foreach (System.Reflection.PropertyInfo propiedad in listaPropiedades) { if (propiedad.Name != "Cvmcti_Codcon" && propiedad.Name != "Cvmcti_Nrocon" && propiedad.Name != "Cvmcti_Nroext" && propiedad.Name != "Cvmcti_Nroitm") { object value = propiedad.GetValue(item, null); switch (propiedad.GetValue(item, null)) { case string: if ((string)value != "null" && (string)value != "NULL" && value != null) { typeItem.InvokeMember(propiedad.Name, BindingFlags.SetProperty, null, ItemAActualizar, new object[] { value }); } break; case int: if ((int)value != 0) { typeItem.InvokeMember(propiedad.Name, BindingFlags.SetProperty, null, ItemAActualizar, new object[] { value }); } break; case short: if ((short)value != 0) { typeItem.InvokeMember(propiedad.Name, BindingFlags.SetProperty, null, ItemAActualizar, new object[] { value }); } break; case decimal: if ((decimal)value != 0) { typeItem.InvokeMember(propiedad.Name, BindingFlags.SetProperty, null, ItemAActualizar, new object[] { value }); } break; default: break; } } } ItemAActualizar.Cvmcti_Fecmod = DateTime.Now; ItemAActualizar.Cvmcti_Ultopr = "M"; ItemAActualizar.Cvmcti_Userid = "API"; try { await Context.SaveChangesAsync(); } catch (Exception e) { return(new ContratoResponse("Bad Request", 0, e.InnerException.Message)); } } return(new ContratoResponse("OK", 0, contrato, "Contrato actualizado")); }