Beispiel #1
0
        public OOB.Resultado ReconversionMonetaria_Actualizar(OOB.LibSistema.ReconversionMonetaria.Actualizar.Ficha ficha)
        {
            var rt = new OOB.Resultado();

            var fichaDTO = new DtoLibSistema.ReconversionMonetaria.Actualizar.Ficha()
            {
                codUsuario        = ficha.codUsuario,
                equipoEstacion    = ficha.equipoEstacion,
                factorReconverion = ficha.factorReconverion,
                idUsuario         = ficha.idUsuario,
                tasaDivisa        = ficha.tasaDivisa,
                tasaDivisaPos     = ficha.tasaDivisaPos,
                usuario           = ficha.usuario,
                Producto          = ficha.Producto.Select(s =>
                {
                    var prd = new DtoLibSistema.ReconversionMonetaria.Actualizar.ItemPrd()
                    {
                        autoId       = s.autoId,
                        nombre       = s.nombre,
                        costo        = s.costo,
                        costoProm    = s.costoProm,
                        costoPrv     = s.costoPrv,
                        costoUnd     = s.costoUnd,
                        costoPromUnd = s.costoPromUnd,
                        costoPrvUnd  = s.costoPrvUnd,
                        precio1      = s.precio1,
                        precio2      = s.precio2,
                        precio3      = s.precio3,
                        precio4      = s.precio4,
                        precio5      = s.precio5,
                    };
                    return(prd);
                }).ToList(),
                Proveedor = ficha.Proveedor.Select(s =>
                {
                    var prv = new DtoLibSistema.ReconversionMonetaria.Actualizar.ItemProv()
                    {
                        autoId     = s.autoId,
                        nombre     = s.nombre,
                        anticipos  = s.anticipos,
                        debitos    = s.debitos,
                        creditos   = s.creditos,
                        saldo      = s.saldo,
                        disponible = s.disponible,
                    };
                    return(prv);
                }).ToList(),
                SaldoPorPagar = ficha.SaldoPorPagar.Select(s =>
                {
                    var cxp = new DtoLibSistema.ReconversionMonetaria.Actualizar.ItemSaldoPorPagar()
                    {
                        autoDoc   = s.autoDoc,
                        docNumero = s.docNumero,
                        importe   = s.importe,
                        acumulado = s.acumulado,
                        resta     = s.resta,
                    };
                    return(cxp);
                }).ToList(),
                HistoricoCosto = ficha.HistoricoCosto.Select(s =>
                {
                    var cost = new DtoLibSistema.ReconversionMonetaria.Actualizar.ItemHistCosto()
                    {
                        autoPrd        = s.autoPrd,
                        costo          = s.costo,
                        costoDivisa    = s.costoDivisa,
                        documento      = s.documento,
                        estacionEquipo = s.estacionEquipo,
                        nota           = s.nota,
                        serie          = s.serie,
                        tasaDivisa     = s.tasaDivisa,
                        usuario        = s.usuario,
                    };
                    return(cost);
                }).ToList(),
                HistoricoPrecio = ficha.HistoricoPrecio.Select(s =>
                {
                    var prec = new DtoLibSistema.ReconversionMonetaria.Actualizar.ItemHistPrecio()
                    {
                        autoPrd        = s.autoPrd,
                        estacionEquipo = s.estacionEquipo,
                        idPrecio       = s.idPrecio,
                        nota           = s.nota,
                        precio         = s.precio,
                        usuario        = s.usuario,
                    };
                    return(prec);
                }).ToList(),
            };

            var r01 = MyData.ReconversionMonetaria_Actualizar(fichaDTO);

            if (r01.Result == DtoLib.Enumerados.EnumResult.isError)
            {
                rt.Mensaje = r01.Mensaje;
                rt.Result  = OOB.Enumerados.EnumResult.isError;
                return(rt);
            }

            return(rt);
        }
        public DtoLib.Resultado ReconversionMonetaria_Actualizar(DtoLibSistema.ReconversionMonetaria.Actualizar.Ficha ficha)
        {
            var rt = new DtoLib.Resultado();

            try
            {
                using (var cnn = new sistemaEntities(_cnSist.ConnectionString))
                {
                    using (var ts = cnn.Database.BeginTransaction())
                    {
                        try
                        {
                            var fechaSistema = cnn.Database.SqlQuery <DateTime>("select now()").FirstOrDefault();

                            var ent = cnn.sistema_configuracion.FirstOrDefault(f => f.codigo == "GLOBAL12");
                            if (ent == null)
                            {
                                rt.Mensaje = "[ ID ] CONFIGURACION NO ENCONTRADO" + Environment.NewLine + "TASA DIVISA";
                                rt.Result  = DtoLib.Enumerados.EnumResult.isError;
                                return(rt);
                            }
                            ent.usuario = ficha.tasaDivisa.ToString();
                            cnn.SaveChanges();

                            var entTasaPos = cnn.sistema_configuracion.FirstOrDefault(f => f.codigo == "GLOBAL48");
                            if (entTasaPos == null)
                            {
                                rt.Mensaje = "[ ID ] CONFIGURACION NO ENCONTRADO" + Environment.NewLine + "TASA DIVISA POS";
                                rt.Result  = DtoLib.Enumerados.EnumResult.isError;
                                return(rt);
                            }
                            entTasaPos.usuario = ficha.tasaDivisaPos.ToString();
                            cnn.SaveChanges();

                            var entRec = new reconversion_monetaria()
                            {
                                fecha = fechaSistema.Date,
                                hora  = fechaSistema.ToShortTimeString(),
                                factor_reconversion        = ficha.factorReconverion,
                                factor_divisa              = ficha.tasaDivisa,
                                usuario                    = ficha.usuario,
                                codigo_usuario             = ficha.codUsuario,
                                idUsuario                  = ficha.idUsuario,
                                equipo_estacion            = ficha.equipoEstacion,
                                items_afectados            = ficha.ItemsAfectados,
                                proveedores_afectados      = ficha.ProvAfectados,
                                saldos_por_pagar_afectados = ficha.SaldoPorPagarAfectados,
                            };
                            cnn.reconversion_monetaria.Add(entRec);
                            cnn.SaveChanges();

                            foreach (var rg in ficha.Producto)
                            {
                                var entPrd = cnn.productos.Find(rg.autoId);
                                if (entPrd == null)
                                {
                                    rt.Mensaje = "[ ID ] Producto No Encontrado: " + rg.autoId + Environment.NewLine + rg.nombre;
                                    rt.Result  = DtoLib.Enumerados.EnumResult.isError;
                                    return(rt);
                                }
                                entPrd.costo_proveedor     = rg.costoPrv;
                                entPrd.costo_proveedor_und = rg.costoPrvUnd;
                                entPrd.costo_promedio      = rg.costoProm;
                                entPrd.costo_promedio_und  = rg.costoPromUnd;
                                entPrd.costo        = rg.costo;
                                entPrd.costo_und    = rg.costoUnd;
                                entPrd.fecha_cambio = fechaSistema.Date;
                                entPrd.precio_1     = rg.precio1;
                                entPrd.precio_2     = rg.precio2;
                                entPrd.precio_3     = rg.precio3;
                                entPrd.precio_4     = rg.precio4;
                                entPrd.precio_pto   = rg.precio5;
                                cnn.SaveChanges();
                            }

                            foreach (var rg in ficha.Proveedor)
                            {
                                var entPrv = cnn.proveedores.Find(rg.autoId);
                                if (entPrv == null)
                                {
                                    rt.Mensaje = "[ ID ] Proveedor No Encontrado: " + rg.autoId + Environment.NewLine + rg.nombre;
                                    rt.Result  = DtoLib.Enumerados.EnumResult.isError;
                                    return(rt);
                                }
                                entPrv.anticipos  = rg.anticipos;
                                entPrv.debitos    = rg.debitos;
                                entPrv.creditos   = rg.creditos;
                                entPrv.saldo      = rg.saldo;
                                entPrv.disponible = rg.disponible;
                                cnn.SaveChanges();
                            }

                            foreach (var rg in ficha.SaldoPorPagar)
                            {
                                var entCxP = cnn.cxp.Find(rg.autoDoc);
                                if (entCxP == null)
                                {
                                    rt.Mensaje = "[ ID ] Saldo Por Pagar No Encontrado: " + rg.autoDoc + Environment.NewLine + rg.docNumero;
                                    rt.Result  = DtoLib.Enumerados.EnumResult.isError;
                                    return(rt);
                                }
                                entCxP.importe   = rg.importe;
                                entCxP.acumulado = rg.acumulado;
                                entCxP.resta     = rg.resta;
                                cnn.SaveChanges();
                            }

                            cnn.Configuration.AutoDetectChangesEnabled = false;
                            var lentHist = new List <productos_costos>();
                            foreach (var rg in ficha.HistoricoCosto)
                            {
                                var entHist = new productos_costos()
                                {
                                    auto_producto = rg.autoPrd,
                                    costo         = rg.costo,
                                    costo_divisa  = rg.costoDivisa,
                                    divisa        = rg.tasaDivisa,
                                    documento     = rg.documento,
                                    estacion      = rg.estacionEquipo,
                                    fecha         = fechaSistema.Date,
                                    hora          = fechaSistema.ToShortTimeString(),
                                    nota          = rg.nota,
                                    serie         = rg.serie,
                                    usuario       = rg.usuario,
                                };
                                lentHist.Add(entHist);
                            }
                            cnn.productos_costos.AddRange(lentHist);
                            cnn.SaveChanges();

                            var lentHist_2 = new List <productos_precios>();
                            foreach (var rg in ficha.HistoricoPrecio)
                            {
                                var entHist = new productos_precios()
                                {
                                    auto_producto = rg.autoPrd,
                                    estacion      = rg.estacionEquipo,
                                    fecha         = fechaSistema.Date,
                                    hora          = fechaSistema.ToShortTimeString(),
                                    usuario       = rg.usuario,
                                    nota          = rg.nota,
                                    precio        = rg.precio,
                                    precio_id     = rg.idPrecio,
                                };
                                lentHist_2.Add(entHist);
                            }
                            cnn.productos_precios.AddRange(lentHist_2);
                            cnn.SaveChanges();

                            ts.Commit();
                        }
                        catch (DbEntityValidationException e)
                        {
                            var msg = "";
                            foreach (var eve in e.EntityValidationErrors)
                            {
                                foreach (var ve in eve.ValidationErrors)
                                {
                                    msg += ve.ErrorMessage;
                                }
                            }
                            rt.Mensaje = msg;
                            rt.Result  = DtoLib.Enumerados.EnumResult.isError;
                        }
                        catch (System.Data.Entity.Infrastructure.DbUpdateException e)
                        {
                            var msg = "";
                            foreach (var eve in e.Entries)
                            {
                                //msg += eve.m;
                                foreach (var ve in eve.CurrentValues.PropertyNames)
                                {
                                    msg += ve.ToString();
                                }
                            }
                            rt.Mensaje = msg;
                            rt.Result  = DtoLib.Enumerados.EnumResult.isError;
                        }
                        finally
                        {
                            cnn.Configuration.AutoDetectChangesEnabled = false;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                rt.Mensaje = e.Message;
                rt.Result  = DtoLib.Enumerados.EnumResult.isError;
            }

            return(rt);
        }
 public DtoLib.Resultado ReconversionMonetaria_Actualizar(DtoLibSistema.ReconversionMonetaria.Actualizar.Ficha ficha)
 {
     return(ServiceProv.ReconversionMonetaria_Actualizar(ficha));
 }