Exemple #1
0
        public CostoVersionDTO(CostosDTO c, decimal version)
        {
            this.c = c;

            IdentifEspacio    = c.IdentifEspacio;
            VigDesde          = c.VigDesde;
            VigHasta          = c.VigHasta;
            Frecuencia        = c.Frecuencia;
            IdentifFrecuencia = c.IdentifFrecuencia;
            Horario           = c.Horario;
            Confirmado        = c.Confirmado;
            FecConfirmado     = c.FecConfirmado.Value;
            Version           = version;
        }
        public CostoVersionDTO(CostosDTO c, decimal version)
        {
            this.c = c;

            IdentifEspacio = c.IdentifEspacio;
            VigDesde = c.VigDesde;
            VigHasta = c.VigHasta;
            Frecuencia = c.Frecuencia;
            IdentifFrecuencia = c.IdentifFrecuencia;
            Horario = c.Horario;
            Confirmado = c.Confirmado;
            FecConfirmado = c.FecConfirmado.Value;
            Version = version;
        }
        public static 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;
                }
            }
        }
        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);
                    }
                }
            }
        }
        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;
                }
            }
        }
 public static 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")));
 }
 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")));
 }
 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")));
 }
        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);
        }