Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        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"));
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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"));
        }
Exemplo n.º 8
0
        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"));
        }