示例#1
0
        void IdentifEspacio0_SelectedIndexChanged(object sender, EventArgs e)
        {
            string sWhere    = "IdentifEspacio = '" + this.UcIdentifEspacio0.SelectedValue + "' ORDER BY VIGHASTA DESC";
            string oldFDesde = string.Empty;
            string oldFHasta = string.Empty;

            var oCosto      = DTOHelper.InstanciarObjetoPorNombreDeTabla("Costos");
            var oFrecuencia = DTOHelper.InstanciarObjetoPorNombreDeTabla("CostosFrecuencia");
            var oProveedor  = DTOHelper.InstanciarObjetoPorNombreDeTabla("CostosProveedor");

            DAOBase <DTO.CostosDTO> M = new CostosDAO();
            CostosDTO costo           = M.ReadUnique(sWhere);

            FechaDesde = costo.VigHasta.AddDays(1).ToShortDateString();
            oldFDesde  = costo.VigDesde.ToShortDateString();

            if (Convert.ToDateTime(FechaDesde).Month < 12)
            {
                FechaHasta = new DateTime(Convert.ToDateTime(FechaDesde).Year, Convert.ToDateTime(FechaDesde).Month + 1, 1).AddDays(-1).ToShortDateString();
            }
            else
            {
                FechaHasta = new DateTime(Convert.ToDateTime(FechaDesde).Year, 12, 31).ToShortDateString();
            }

            deVigDesde0.Text = FechaDesde;
            deVigHasta0.Text = FechaHasta;

            miCosto = costo;

            sWhere = "RECID > 0 ORDER BY RECID DESC";
            costo  = M.ReadUnique(sWhere);

            miCosto.RecId         = costo.RecId + 1;
            miCosto.Confirmado    = "";
            miCosto.FecConfirmado = null;
            miCosto.VigDesde      = Convert.ToDateTime(FechaDesde);
            miCosto.VigHasta      = Convert.ToDateTime(FechaHasta);
            miCosto.Version       = null;

            sWhere = "IdentifEspacio = '" + this.UcIdentifEspacio0.SelectedValue + "' AND  YEAR(VIGDESDE)  = " + Convert.ToDateTime(oldFDesde).Year +
                     " AND MONTH(VIGDESDE)  = " + Convert.ToDateTime(oldFDesde).Month +
                     " AND   DAY(VIGDESDE)  = " + Convert.ToDateTime(oldFDesde).Day;
            DAOBase <DTO.CostosProveedorDTO> O = new CostosProveedorDAO();

            CostosProveedor = O.ReadAll(sWhere);

            DAOBase <DTO.CostosFrecuenciaDTO> N = new CostosFrecuenciaDAO();

            CostosFrecuencia = N.ReadAll(sWhere);
        }
示例#2
0
        public static void Update(CostosDTO costo, List <CostosFrecuenciaDTO> frecuenciaList, List <CostosProveedorDTO> proveedorList)
        {
            using (SqlTransaction tran = dao.IniciarTransaccion())
            {
                try
                {
                    dao.Update(costo, costo.RecId, tran);

                    //Elimino todos los frecuencia y proveedores y los re-creo.
                    daoFrecuencia.Delete(string.Format("IdentifEspacio = '{0}' AND VigDesde = '{1}' AND VigHasta = '{2}' AND DatareaId = {3}", costo.IdentifEspacio, costo.VigDesde.ToString("yyyyMMdd"), costo.VigHasta.ToString("yyyyMMdd"), costo.DatareaId), tran);

                    daoProveedor.Delete(string.Format("IdentifEspacio = '{0}' AND VigDesde = '{1}' AND VigHasta = '{2}' AND DatareaId = {3}", costo.IdentifEspacio, costo.VigDesde.ToString("yyyyMMdd"), costo.VigHasta.ToString("yyyyMMdd"), costo.DatareaId), tran);

                    foreach (CostosFrecuenciaDTO frecuencia in frecuenciaList)
                    {
                        frecuencia.RecId          = 0;
                        frecuencia.DatareaId      = costo.DatareaId;
                        frecuencia.IdentifEspacio = costo.IdentifEspacio;
                        frecuencia.VigDesde       = costo.VigDesde;
                        frecuencia.VigHasta       = costo.VigHasta;

                        daoFrecuencia.Create(frecuencia, tran);
                    }

                    foreach (CostosProveedorDTO proveedor in proveedorList)
                    {
                        proveedor.RecId          = 0;
                        proveedor.DatareaId      = costo.DatareaId;
                        proveedor.IdentifEspacio = costo.IdentifEspacio;
                        proveedor.VigDesde       = costo.VigDesde;
                        proveedor.VigHasta       = costo.VigHasta;

                        daoProveedor.Create(proveedor, tran);
                    }

                    dao.CommitTransaccion(tran);
                }
                catch (Exception)
                {
                    dao.RollbackTransaccion(tran);
                    throw;
                }
            }
        }
示例#3
0
        public static void Commit(int idCosto, UsuariosDTO usuario)
        {
            using (SqlTransaction tran = dao.IniciarTransaccion())
            {
                try
                {
                    CostosDTO costo = dao.Read(idCosto);

                    costo.FecConfirmado = DateTime.Now;
                    costo.Confirmado    = usuario.UserName;
                    costo.Version       = GetLastVersion(costo.IdentifEspacio, costo.VigDesde, costo.VigHasta) + 1;

                    //Incremento version, y actualizo datos de confirmacion en costo.
                    dao.Update(costo, costo.RecId, tran);

                    //Creo el nuevoregistro de Costo Version.
                    daoVer.Create(new CostoVersionDTO(costo, costo.Version.Value), tran);

                    //Creo todos los registros de FrecuenciaVersion.
                    foreach (CostosFrecuenciaDTO f in ReadAllFrecuencia(costo))
                    {
                        CostosFrecuenciaVersionDTO fv = new CostosFrecuenciaVersionDTO(f, costo.Version.Value);
                        daoFrecuenciaVer.Create(fv, tran);
                    }

                    //Creo todos los registros de ProveedorVersion.
                    foreach (CostosProveedorDTO p in ReadAllProveedor(costo))
                    {
                        CostosProveedorVersionDTO pv = new CostosProveedorVersionDTO(p, costo.Version.Value);
                        daoProveedorVer.Create(pv, tran);
                    }
                    dao.CommitTransaccion(tran);
                }
                catch (Exception)
                {
                    dao.RollbackTransaccion(tran);
                    throw;
                }
            }
        }
示例#4
0
        static public void Create(CostosDTO costo, List <CostosFrecuenciaDTO> frecuenciaList, List <CostosProveedorDTO> proveedorList)
        {
            using (SqlTransaction tran = dao.IniciarTransaccion())
            {
                try
                {
                    costo = dao.Create(costo, tran);

                    foreach (CostosFrecuenciaDTO frecuencia in frecuenciaList)
                    {
                        frecuencia.RecId          = 0;
                        frecuencia.DatareaId      = costo.DatareaId;
                        frecuencia.IdentifEspacio = costo.IdentifEspacio;
                        frecuencia.VigDesde       = costo.VigDesde;
                        frecuencia.VigHasta       = costo.VigHasta;

                        daoFrecuencia.Create(frecuencia, tran);
                    }

                    foreach (CostosProveedorDTO proveedor in proveedorList)
                    {
                        proveedor.RecId          = 0;
                        proveedor.DatareaId      = costo.DatareaId;
                        proveedor.IdentifEspacio = costo.IdentifEspacio;
                        proveedor.VigDesde       = costo.VigDesde;
                        proveedor.VigHasta       = costo.VigHasta;

                        daoProveedor.Create(proveedor, tran);
                    }
                    dao.CommitTransaccion(tran);
                }
                catch (Exception)
                {
                    dao.RollbackTransaccion(tran);
                    throw;
                }
            }
        }
示例#5
0
        public static void CalcularCosto(OrdenadoCabDTO ordenadoCAB, CostosDTO costoCab, List <OrdenadoDetDTO> lineas, string usuario)
        {
            decimal costo     = 0;
            decimal costoAcum = 0;

            //Lockeo la seccion para que otro thread no me descontrole los calculos.
            lock (typeof(Ordenado))
            {
                using (SqlTransaction tran = dao.IniciarTransaccion())
                {
                    try
                    {
                        //La recargo para asegurarme de tener la version mas reciente...
                        ordenadoCAB = dao.Read(string.Format("PautaId='{0}'", ordenadoCAB.PautaId));

                        if (ordenadoCAB == null)
                        {
                            throw new Exception("");
                        }

                        if (costoCab == null)
                        {
                            throw new Exception("No hay costos confirmados para realizar el costeo de la Pauta: " + ordenadoCAB.PautaId.ToString());
                        }

                        if (ordenadoCAB.UsuCierre != "" && ordenadoCAB.UsuCierre != null)
                        {
                            throw new Exception("El ordenado se encuentra cerrado");
                        }

                        //Inicializo en '0' los registros de trabajo.
                        dao.MoverCeros(ordenadoCAB.PautaId, tran);
                        daoDetalle.MoverCeros(ordenadoCAB.PautaId, tran);
                        daoSKU.MoverCeros(ordenadoCAB.PautaId, tran);

                        //•	Seleccionar la Tabla CostoProveedorVersion
                        var costosProveedorVersion = Costos.ReadAllProveedorVersiones(ordenadoCAB.IdentifEspacio, costoCab.VigDesde, costoCab.VigHasta, costoCab.Version.Value);

                        //Por cada registro seleccionado:
                        foreach (var costoProveedorVersion in costosProveedorVersion)
                        {
                            var tipoCambioValor = Monedas.GetTipoCambioValor(costoProveedorVersion.IdentifMon); //•	Calcular Tipo de cambio y moneda
                            var costoCur        = costoProveedorVersion.Costo * tipoCambioValor;                //•	Calcular Tipo de cambio y moneda
                            var costoGros       = costoCur * costoProveedorVersion.GrossingUp;                  //•	Calcular Impuestos

                            //•	Actualizar Tabla DET
                            var ordenadoDetalles = daoDetalle.ReadAll(string.Format("PautaId='{0}'", ordenadoCAB.PautaId));

                            foreach (var ordenadoDET in ordenadoDetalles)
                            {
                                if (costoProveedorVersion.TipoCosto == "FIJO_MENSUAL")
                                {
                                    if (ordenadoCAB.DuracionTot > 0)
                                    {
                                        if (ordenadoDET.Duracion.Value > 0)
                                        {
                                            costo = (costoGros / ordenadoCAB.DuracionTot) * ordenadoDET.Duracion.Value;
                                        }
                                        else
                                        {
                                            costo = 0;
                                        }
                                    }
                                    else
                                    {
                                        costo = costoGros;
                                    }
                                }
                                else if (costoProveedorVersion.TipoCosto == "SEGUNDO_FIJO")
                                {
                                    costo = costoGros * ordenadoDET.Duracion.Value;
                                }
                                else if (costoProveedorVersion.TipoCosto == "SALIDA" || costoProveedorVersion.TipoCosto == "UNIDAD_PAUTADA")
                                {
                                    costo = costoGros;
                                }
                                else
                                {
                                    throw new Exception("Proveedor.TipoCosto Desconocido.");
                                }

                                ordenadoDET.Costo += costo;

                                if (ordenadoDET.Duracion == null)
                                {
                                    ordenadoDET.CostoUni = ordenadoDET.Costo / 1;
                                }
                                else if (ordenadoDET.Duracion == 0)
                                {
                                    ordenadoDET.CostoUni = ordenadoDET.Costo / 1;
                                }
                                else if (ordenadoDET.Duracion != 0)
                                {
                                    ordenadoDET.CostoUni = ordenadoDET.Costo / ordenadoDET.Duracion.Value;
                                }

                                if (costoProveedorVersion.IncluidoOP)
                                {
                                    ordenadoDET.CostoOp += costo;
                                    if (ordenadoDET.Duracion == null)
                                    {
                                        ordenadoDET.CostoOpUni = ordenadoDET.CostoOp / 1; ///fek hay q validar que se pueda usar valor 1.
                                    }
                                    else if (ordenadoDET.Duracion == 0)
                                    {
                                        ordenadoDET.CostoOpUni = ordenadoDET.CostoOp / 1;     ///fek hay q validar que se pueda usar valor 1.
                                    }
                                    else if (ordenadoDET.Duracion != 0)
                                    {
                                        ordenadoDET.CostoOpUni = ordenadoDET.CostoOp / ordenadoDET.Duracion.Value;
                                    }
                                }

                                costoAcum += costo;

                                //o	Actualizar la Tabla DET
                                daoDetalle.Update(ordenadoDET, ordenadoDET.RecId, tran);
                            }

                            //•	Actualizar Tabla SKU
                            foreach (var ordenadoDET in ordenadoDetalles)
                            {
                                //o	Seleccionar la Tabla SKU con SKU.PautaID = PautaId enviado y SKU.IdentifAviso = DET.IdentifAviso
                                var ordenadoSKUs = daoSKU.ReadAll(string.Format("PautaId='{0}' AND IdentifAviso='{1}'", ordenadoCAB.PautaId, ordenadoDET.IdentifAviso));

                                //o	Seleccionar la Tabla Avisos con IdentifAviso... >>
                                var aviso = Avisos.Read(string.Format("IdentifAviso='{0}'", ordenadoDET.IdentifAviso));
                                var productosPiezaArte = PiezasArte.ReadAllProductos(aviso.IdentifPieza);


                                foreach (var ordenadoSKU in ordenadoSKUs)
                                {
                                    //o	>> ... y luego la tabla PiezasArteSKU con IdentifPieza, TipoProd = “Primario” y IdentifSKU = SKU.IdentifSKU
                                    var productoPiezaArte = productosPiezaArte.Find(x => x.TipoProd.Trim().ToUpper() == "PRIMARIO" && x.IdentifSKU == ordenadoSKU.IdentifSKU);

                                    ordenadoSKU.Costo += (productoPiezaArte.Coeficiente.Value * costo);
                                    if (ordenadoSKU.Duracion == null)
                                    {
                                        ordenadoSKU.CostoUni = (ordenadoSKU.Costo / 1);
                                    }
                                    else if (ordenadoSKU.Duracion == 0)
                                    {
                                        ordenadoSKU.CostoUni = (ordenadoSKU.Costo / 1);
                                    }
                                    else if (ordenadoSKU.Duracion != 0)
                                    {
                                        ordenadoSKU.CostoUni = (ordenadoSKU.Costo / ordenadoSKU.Duracion.Value);
                                    }


                                    //•	Si campo CostoProveedorVersion.IncluidoOP = “Si”
                                    if (costoProveedorVersion.IncluidoOP)
                                    {
                                        ordenadoSKU.CostoOp += (productoPiezaArte.Coeficiente.Value * costo);
                                        if (ordenadoSKU.Duracion == null)
                                        {
                                            ordenadoSKU.CostoOpUni = (ordenadoSKU.CostoOp / 1);
                                        }
                                        else if (ordenadoSKU.Duracion == 0)
                                        {
                                            ordenadoSKU.CostoOpUni = (ordenadoSKU.CostoOp / 1);
                                        }
                                        else if (ordenadoSKU.Duracion != 0)
                                        {
                                            ordenadoSKU.CostoOpUni = (ordenadoSKU.CostoOp / ordenadoSKU.Duracion.Value);
                                        }
                                    }

                                    //o	Actualizar Tabla SKU
                                    daoSKU.Update(ordenadoSKU, ordenadoSKU.RecId, tran);
                                }
                            }

                            ordenadoCAB.Costo = costoAcum;
                            if (ordenadoCAB.DuracionTot == 0)
                            {
                                ordenadoCAB.CostoUni = ordenadoCAB.Costo / 1;     ///fek hay q validar que se pueda usar valor 1.
                            }
                            else if (ordenadoCAB.DuracionTot == 0)
                            {
                                ordenadoCAB.CostoUni = ordenadoCAB.Costo / 1;         ///fek hay q validar que se pueda usar valor 1.
                            }
                            else if (ordenadoCAB.DuracionTot != 0)
                            {
                                ordenadoCAB.CostoUni = ordenadoCAB.Costo / ordenadoCAB.DuracionTot;
                            }


                            if (costoProveedorVersion.IncluidoOP)
                            {
                                ordenadoCAB.CostoOp = ordenadoCAB.Costo;
                                if (ordenadoCAB.DuracionTot == 0)
                                {
                                    ordenadoCAB.CostoOpUni = ordenadoCAB.CostoOp / 1; ///fek hay q validar que se pueda usar valor 1.
                                }
                                else if (ordenadoCAB.DuracionTot == 0)
                                {
                                    ordenadoCAB.CostoOpUni = ordenadoCAB.CostoOp / 1;
                                }
                                else if (ordenadoCAB.DuracionTot != 0)
                                {
                                    ordenadoCAB.CostoOpUni = ordenadoCAB.CostoOp / ordenadoCAB.DuracionTot;
                                }
                            }

                            ordenadoCAB.VersionCosto = costoCab.Version.Value;
                            ordenadoCAB.VigDesde     = costoCab.VigDesde;
                            ordenadoCAB.VigHasta     = costoCab.VigHasta;
                            ordenadoCAB.FecCosto     = DateTime.Now;
                            ordenadoCAB.UsuCosto     = usuario;

                            dao.Update(ordenadoCAB, ordenadoCAB.RecId, tran);
                        }

                        dao.CommitTransaccion(tran);
                    }
                    catch (Exception ex)
                    {
                        dao.RollbackTransaccion(tran);
                        throw new Exception("Error al Calcular Costo", ex);
                    }
                }
            }
        }
示例#6
0
 static public List <CostoVersionDTO> ReadAllVersiones(CostosDTO costo)
 {
     return(daoVer.ReadAll(string.Format("IdentifEspacio = '{0}' AND VigDesde = '{1}' AND VigHasta = '{2}'", costo.IdentifEspacio, costo.VigDesde.ToString("yyyyMMdd"), costo.VigHasta.ToString("yyyyMMdd"))));
 }
示例#7
0
 public static List <CostosFrecuenciaDTO> ReadAllFrecuencia(CostosDTO costos)
 {
     return(daoFrecuencia.ReadAll(string.Format("IdentifEspacio = '{0}' AND VigDesde = '{1}' AND VigHasta = '{2}'", costos.IdentifEspacio, costos.VigDesde.ToString("yyyyMMdd"), costos.VigHasta.ToString("yyyyMMdd"))));
 }
示例#8
0
 public static List <CostosProveedorDTO> ReadAllProveedor(CostosDTO costos)
 {
     return(daoProveedor.ReadAll(string.Format("IdentifEspacio = '{0}' AND VigDesde = '{1}' AND VigHasta = '{2}'", costos.IdentifEspacio, costos.VigDesde.ToString("yyyyMMdd"), costos.VigHasta.ToString("yyyyMMdd"))));
 }