public csOP_CALENDARIO_NUMERICO( string Estado, string Origen, string PautaId, OrdenadoCabDTO Cabecera,List<OrdenadoDetDTO> Detalle, List<OrdenadoSKUDTO> SKUS   , EspacioContDTO Espacio )
 {
     _PautaId  = PautaId  ;
     _Origen   = Origen   ;
     _Estado   = Estado   ;
     _oCabecera = Cabecera;
     _oDetalle  = Detalle ;
     _oSKUS     = SKUS    ;
     _Espacio  = Espacio  ;
 }
 public csOP_PNT_SALIDA( string Estado, string Origen, string PautaId, OrdenadoCabDTO Cabecera,List<OrdenadoDetDTO> Detalle, List<OrdenadoSKUDTO> SKUS   , EspacioContDTO Espacio,string nomArchivo )
 {
     _PautaId  = PautaId  ;
     _Origen   = Origen   ;
     _Estado   = Estado   ;
     _oCabecera = Cabecera;
     _oDetalle  = Detalle ;
     _oSKUS     = SKUS    ;
     _Espacio  = Espacio  ;
 }
        //Constructor

        public csOP_Helper(string Estado, string Origen, string PautaId, OrdenadoCabDTO Cabecera, List<OrdenadoDetDTO> Detalles, List<OrdenadoSKUDTO> SKUS, EspacioContDTO Espacio, string filename)
        {
            _Estado   = Estado;
            _Origen   = Origen;
            _PautaId  = PautaId;
            _Cabecera = Cabecera;
            _Detalle  = Detalles;
            _SKUS     = SKUS;
            _Espacio  = Espacio;

            Imprimir(Espacio.FormatoOP, filename);
            ArmarCabecera(Espacio.FormatoOP, filename);
            ArmarDetalle(Espacio.FormatoOP, filename);
        }
示例#4
0
        public static void Update(OrdenadoCabDTO ordenado, List<OrdenadoDetDTO> lineas)
        {
            OrdenadoSKUDTO sku;

            using (SqlTransaction tran = dao.IniciarTransaccion())
            {
                try
                {
                    dao.Update(ordenado, ordenado.RecId, tran);

                    //Elimino toda las lineas del ordenado y las re-creo.
                    daoDetalle.Delete(
                        string.Format("PautaId = '{0}'",
                        ordenado.PautaId),
                        tran);

                    foreach (OrdenadoDetDTO linea in lineas)
                    {
                        linea.RecId = 0;
                        linea.DatareaId = ordenado.DatareaId;
                        linea.PautaId  = ordenado.PautaId;

                        daoDetalle.Create(linea, tran);
                    }

                    //Elimino toda las lineas del ordenado y las re-creo.
                    daoSKU.Delete(
                        string.Format("PautaId = '{0}'",
                        ordenado.PautaId),
                        tran);

                    var dtSKU = BuildAllSKU(lineas);
                    foreach (System.Data.DataRow dr in dtSKU.Rows)
                    {
                        sku = new OrdenadoSKUDTO();

                        sku.RecId = 0;
                        sku.DatareaId = ordenado.DatareaId;
                        sku.PautaId = ordenado.PautaId;

                        if (dr["Duracion"] != DBNull.Value)
                            sku.Duracion = Convert.ToDecimal(dr["Duracion"]);
                        else
                            sku.Duracion = null;

                        sku.CantSalidas = Convert.ToDecimal(dr["CantSalidas"]);
                        sku.IdentifAviso = Convert.ToString(dr["IdentifAviso"]);
                        sku.IdentifSKU = Convert.ToString(dr["IdentifSKU"]);

                        daoSKU.Create(sku, tran);
                    }

                    dao.CommitTransaccion(tran);
                }
                catch (Exception)
                {
                    dao.RollbackTransaccion(tran);
                    throw;
                }
            }
        }
示例#5
0
 public static List<OrdenadoSKUDTO> ReadAllSKUs(OrdenadoCabDTO ordenado)
 {
     return daoSKU.ReadAll(string.Format("PautaId = '{0}'", ordenado.PautaId));
 }
示例#6
0
 public static List<OrdenadoDetDTO> ReadAllLineas(OrdenadoCabDTO ordenado)
 {
     return daoDetalle.ReadAll(string.Format("PautaId = '{0}'", ordenado.PautaId));
 }
示例#7
0
        //(int id)
        public static void Delete(OrdenadoCabDTO ordenado)
        {
            using (SqlTransaction tran = dao.IniciarTransaccion())
            {
                try
                {   //Elimino toda las lineas del ordenado detalle
                    daoDetalle.Delete(
                        string.Format("PautaId = '{0}'",
                        ordenado.PautaId),
                        tran);
                    //Elimino toda las lineas del ordenado sku
                    daoSKU.Delete(
                        string.Format("PautaId = '{0}'",
                        ordenado.PautaId),
                        tran);
                    //eliminio ordenado.
                    dao.Delete(ordenado.RecId, tran);

                    dao.CommitTransaccion(tran);

                }
                catch (Exception)
                {
                    dao.RollbackTransaccion(tran);
                    throw;
                }
            }
        }
示例#8
0
        public static void Create(OrdenadoCabDTO ordenado, List<OrdenadoDetDTO> lineas)
        {
            OrdenadoSKUDTO sku;

            using (SqlTransaction tran = dao.IniciarTransaccion())
            {
                try
                {
                    ordenado.PautaId = SaveNextPautaId(tran).ToString();
                    ordenado         = dao.Create(ordenado, tran);

                    foreach (OrdenadoDetDTO linea in lineas)
                    {
                        linea.RecId     = 0;
                        linea.DatareaId = ordenado.DatareaId;
                        linea.PautaId   = ordenado.PautaId;

                        daoDetalle.Create(linea, tran);
                    }

                    var dtSKU = BuildAllSKU(lineas);
                    foreach (System.Data.DataRow dr in dtSKU.Rows)
                    {
                        sku = new OrdenadoSKUDTO();

                        sku.RecId     = 0;
                        sku.DatareaId = ordenado.DatareaId;
                        sku.PautaId   = ordenado.PautaId;

                        if (dr["Duracion"] != DBNull.Value)
                            sku.Duracion    = Convert.ToDecimal(dr["Duracion"]);
                        else
                            sku.Duracion = null;

                        sku.CantSalidas  = Convert.ToDecimal(dr["CantSalidas"]);
                        sku.IdentifAviso = Convert.ToString(dr["IdentifAviso"]);
                        sku.IdentifSKU   = Convert.ToString(dr["IdentifSKU"]);

                        daoSKU.Create(sku, tran);
                    }

                    dao.CommitTransaccion(tran);
                }
                catch (Exception)
                {
                    dao.RollbackTransaccion(tran);
                    throw;
                }
            }
        }
示例#9
0
        public static void CierreOrdenado(Estimado estimado, EstimadoVersion estimadoVer, OrdenadoCabDTO ordenadoCab)
        {
            using (SqlTransaction tran = dao.IniciarTransaccion())
            {
                try
                {
                    Create(estimado, tran);
                    Create(estimadoVer, tran);
                    daoOrdenadoCab.Update(ordenadoCab, ordenadoCab.RecId, tran);

                    dao.CommitTransaccion(tran);
                }
                catch (Exception)
                {
                    dao.RollbackTransaccion(tran);
                    throw;
                }
            }
        }
        protected void btnSave_Click(object sender, EventArgs e)
        {
            gv.Selection.UnselectAll();

            try
            {
                decimal duracionTot = 0;

                OrdenadoCabDTO ordenado = OrdenadoCab;

                ordenado.IdentifFrecuencia  = Convert.ToString(ucIdentifFrecuencia.SelectedValue);
                ordenado.HoraInicio         = FormsHelper.ConvertToTimeSpan(teHoraInicio.DateTime);
                ordenado.HoraFin            = FormsHelper.ConvertToTimeSpan(teHoraFin.DateTime);
                ordenado.IdentifIntervalo   = Convert.ToString(ucIdentifIntervalo.SelectedValue);

                //Sumatoria de duracion en registros de la tabla OrdenadoDet.
                {
                    Lineas.ForEach(x => { duracionTot += (x.Duracion != null) ? x.Duracion.Value : 0; });

                    ordenado.DuracionTot = duracionTot;
                }

                //Cantidad de registros tabla OrdenadoDet cuyo campo IdentifAviso <> “”
                ordenado.CantSalidas = Lineas.FindAll(x => (x.IdentifAviso != null && x.IdentifAviso != string.Empty)).Count;

                if (ordenado.CantSalidas!=0)
                {
                    if (ordenado.RecId == 0)
                    {
                        //Es nuevo...
                        ordenado.PautaId = Business.Ordenados.GetNextPautaId().ToString();

                        if (ordenado.IdentifIntervalo == "") ordenado.IdentifIntervalo = null;

                        Ordenados.Create(ordenado, Lineas);
                    }
                    else
                    {
                        //Es modificacion...
                        if (Lineas.Count > 0)
                        {
                            if (Lineas[0].Salida > 0)
                            {
                                Labelx.Text = string.Empty;

                                lblErrorLineas.Text = Labelx.Text;

                                if (teHoraInicio.Text == Lineas[0].Hora.ToString().Substring(0,5) && teHoraFin.Text == Lineas[0].Hora.ToString().Substring(0, 5))
                                {
                                    Labelx.Text = string.Empty;

                                    lblErrorLineas.Text = Labelx.Text;
                                }
                                else
                                {
                                    if(Convert.ToDateTime(teHoraInicio.Text) > (Convert.ToDateTime(teHoraFin.Text)))
                                    {
                                           Labelx.Text = "Hora de inicio < Hora de Fin. \r\n";
                                    }

                                    Labelx.Text += " La hora de inicio/ fin no se corresponde con registros previamente grabados. NO SE HA MODIFICADO LA CABECERA";

                                    lblErrorLineas.Text = Labelx.Text;

                                    return;
                                }
                            }
                             else
                            {
                                Labelx.Text = string.Empty;

                                lblErrorLineas.Text = Labelx.Text;
                            }
                        }
                        else
                        {
                            //No hay lineas preexistentes
                        }

                        if (ordenado.IdentifIntervalo == "")
                        {
                            ordenado.IdentifIntervalo = null;
                        }

                        Ordenados.Update(ordenado, Lineas);
                    }

                    OrdenadoCab = ordenado;

                    //Re-Calculo todos los Costos.
                    Business.Ordenados.CalcularCosto(OrdenadoCab, Costos, Lineas, ((Accendo)this.Master).Usuario.UserName);

                    ReCargarControles(OrdenadoCab);

                }
                else if (ordenado.CantSalidas == 0)
                {
                    throw new Exception("Debe Insertar lineas en Detalle para poder Guardar.");
                }

                lblErrorLineas.Text = "Se Grabo correctamente";

                Labelx.Text = lblErrorLineas.Text;

            }
            catch (Exception ex)
            {

                lblErrorLineas.Text = ex.Message;
            }
        }
        private void RecargarDiaHora()
        {
            EspacioContDTO espacio = GetEspacioContenido();

            OrdenadoCabDTO ordenado = Business.Ordenados.Read(Convert.ToString(ucIdentifEspacio.SelectedValue), deAnoMes.Date.Year, deAnoMes.Date.Month);

            CostosDTO costos = Business.Ordenados.FindCosto(Convert.ToString(ucIdentifEspacio.SelectedValue), deAnoMes.Date.Year, deAnoMes.Date.Month);

            if (ordenado != null)
            {

                //GenerarLineas(teHoraInicio.DateTime, teHoraFin.DateTime);
                OrdenadoCab = ordenado;
                Lineas = Ordenados.ReadAllLineas(ordenado);

                Costos = costos;
                //RefreshHomeGrid(gvHome);
                RefreshAbmGrid(gv);

                /// si el ordenado esta cerrado oculto paneles de edicion.
                if (OrdenadoCab.UsuCierre != "" && OrdenadoCab.UsuCierre != null)
                {
                    ASPxPageControl2.Visible = false;
                    mnuDetalle.Visible = false;
                }
                else
                {
                    ASPxPageControl2.Visible = true;
                    mnuDetalle.Visible = true;
                }

                DateTime date = new DateTime();
                date = Convert.ToDateTime(deAnoMes.Date);

                deFechaDesdeOrigenCopiar.Date = new DateTime(date.Year, date.Month, 1);
                deFechaHastaOrigenCopiar.Date = new DateTime(date.Year, date.Month, 1).AddMonths(1).AddDays(-1);
                deFechaDesdeReemplazar.Date   = new DateTime(date.Year, date.Month, 1);
                deFechaHastaReemplazar.Date   = new DateTime(date.Year, date.Month, 1).AddMonths(1).AddDays(-1);

                if (espacio.HoraInicio != null)
                    deHoraDesdeOrigenReemplazar.DateTime = FormsHelper.ConvertToDateTime(espacio.HoraInicio.Value);
                else
                    deHoraDesdeOrigenReemplazar.DateTime = ordenado.VigDesde.Date;

                if (espacio.HoraFin != null)
                    deHoraHastaOrigenReemplazar.DateTime = FormsHelper.ConvertToDateTime(espacio.HoraFin.Value);
                else if(ordenado.HoraFin != null)
                    deHoraHastaOrigenReemplazar.DateTime = FormsHelper.ConvertToDateTime(ordenado.HoraFin);
                else
                    deHoraHastaOrigenReemplazar.DateTime = ordenado.VigHasta.Date.AddHours(23.9999);//origen

                deFechaDesdeDestinoCopiar.Date = deFechaDesdeOrigenCopiar.Date;
                deFechaHastaOrigenCopiar.Date = deFechaHastaOrigenCopiar.Date;

            }
            else
            {
                if (costos != null)
                {
                    Costos = costos;
                    //Cargo controles.
                    spPautaID.Number = Business.Ordenados.GetNextPautaId();

                    if (ucIdentifFrecuencia.SelectedValue == null)
                        ucIdentifFrecuencia.SelectedValue = espacio.IdentifFrecuencia;

                    if (ucIdentifIntervalo.SelectedValue == null)
                        ucIdentifIntervalo.SelectedValue = espacio.IdentifIntervalo;

                    if (espacio.HoraInicio.HasValue)
                    {
                        teHoraInicio.DateTime = FormsHelper.ConvertToDateTime(espacio.HoraInicio.Value);
                        teHoraInicioInsertar.DateTime = teHoraInicio.DateTime;
                    }

                    if (espacio.HoraFin.HasValue)
                    {
                        teHoraFin.DateTime = FormsHelper.ConvertToDateTime(espacio.HoraFin.Value);
                        teHoraFinInsertar.DateTime = teHoraFin.DateTime;
                    }

                    litCambiarPauta.Text = string.Format("Espacio: {0} | Período: {1}", ucIdentifEspacio.SelectedText, deAnoMes.Date.ToString("yyyy-MM"));

                    //Actualizo controles.
                    ucFrecuenciaChanged();

                    ASPxPageControl1.Visible = true;
                    trPauta.Visible = true;
                    trFind.Visible = false;

                    //Inicializo Fechas origen para copia
                    deFechaDesdeOrigenCopiar.Date = costos.VigDesde;
                    deFechaHastaOrigenCopiar.Date = costos.VigHasta;
                    deFechaDesdeReemplazar.Date   = costos.VigDesde;
                    deFechaHastaReemplazar.Date   = costos.VigHasta;

                    //Inicializo Fechas origen para copia
                    DateTime date = new DateTime();

                    date = Convert.ToDateTime(deAnoMes.Date);

                    deFechaDesdeOrigenCopiar.Date = new DateTime(date.Year, date.Month, 1);
                    deFechaHastaOrigenCopiar.Date = new DateTime(date.Year, date.Month, 1).AddMonths(1).AddDays(-1);
                    deFechaDesdeReemplazar.Date   = new DateTime(date.Year, date.Month, 1);
                    deFechaHastaReemplazar.Date   = new DateTime(date.Year, date.Month, 1).AddMonths(1).AddDays(-1);

                    //inicializo horas origen
                    if (espacio.HoraInicio != null)
                        deHoraDesdeOrigenReemplazar.DateTime = FormsHelper.ConvertToDateTime(espacio.HoraInicio.Value);
                    else
                        deHoraDesdeOrigenReemplazar.DateTime = costos.VigDesde.Date;

                    if (espacio.HoraFin != null)
                        deHoraHastaOrigenReemplazar.DateTime = FormsHelper.ConvertToDateTime(espacio.HoraFin.Value);

                    else if (ordenado != null)
                        if(ordenado.HoraFin != null)
                           deHoraHastaOrigenReemplazar.DateTime = FormsHelper.ConvertToDateTime(ordenado.HoraFin);

                    //fecha inicio de destino
                    deFechaDesdeDestinoCopiar.Date = costos.VigDesde; //destino

                    ordenado = new OrdenadoCabDTO();
                    ordenado.AnoMes            = Convert.ToInt32(deAnoMes.Date.Year.ToString() +
                                                                 deAnoMes.Date.Month.ToString("00"));

                    ordenado.CantSalidas       = 0;                                                     //Cantidad de salidas total
                    ordenado.Costo             = 0;                                                     //Costo Total de la Pauta
                    ordenado.CostoOp           = 0;                                                     //Costo de la Pauta para la Orden de Publicidad
                    ordenado.CostoOpUni        = 0;                                                     //Costo de la Pauta para la Orden de Publicidad por unidad (segundos, página)
                    ordenado.CostoUni          = 0;                                                     //Costo Total por unidad (segundos, página)
                    ordenado.DatareaId         = 0;                                                     //Area de Trabajo
                    ordenado.DuracionTot       = 0;                                                     //Total Duración o Cantidad
                    ordenado.FecCierre         = null;                                                  //Fecha del cierre
                    ordenado.FecCosto          = DateTime.Now;                                          //Fecha en qué se calculo el costo por última vez
                    ordenado.HoraInicio        = FormsHelper.ConvertToTimeSpan(teHoraInicio.DateTime);  //Hora de Inicio
                    ordenado.HoraFin           = FormsHelper.ConvertToTimeSpan(teHoraFin.DateTime);     //Hora de Finalizacion
                    ordenado.IdentifEspacio    = Convert.ToString(ucIdentifEspacio.SelectedValue);      // Espacio de Contenido
                    ordenado.IdentifFrecuencia = Convert.ToString(ucIdentifFrecuencia.SelectedValue);   // Frecuencia
                    ordenado.IdentifIntervalo  = Convert.ToString(ucIdentifIntervalo.SelectedValue);    // Intervalo
                    ordenado.PautaId           = Convert.ToString(spPautaID.Number);                    // Pauta
                    ordenado.RecId             = 0;                                                     // Registro #
                    ordenado.UsuCierre         = "";                                                    //Usuario que cerró
                    ordenado.UsuCosto          = costos.Confirmado;                                     //Usuario qué calculo el costo
                    ordenado.VersionCosto      = costos.Version.Value;                                  //Versión del registro
                    ordenado.VigDesde          = costos.VigDesde;                                       //Fecha desde la cual está vigente el Costo
                    ordenado.VigHasta          = costos.VigHasta;                                       //Fecha hasta la cual estará vigente el Costo

                    OrdenadoCab = ordenado;

                    RefreshHomeGrid(gvHome);

                    string msg = string.Empty;

                    if (!ValidarFranjaHoraria(ref msg))
                        lblErrorLineas.Text = msg;

                    msg = string.Empty;

                    if (!ValidarFrecuencia(ref msg))
                        lblErrorLineas.Text = msg;

                    msg = string.Empty;

                    if (!ValidarIntervalo(ref msg))
                        lblErrorLineas.Text = msg;
                }
                else
                {
                    lblValidaAñoMes.Text = "No existen costos Confirmados para este Espacio – Vigencia.";
                    ASPxPageControl1.Visible = true;
                    trPauta.Visible = false;
                    trFind.Visible = true;

                }
            }
        }
        private void ReCargarControles(OrdenadoCabDTO ordenado)
        {
            EspacioContDTO espacio  = GetEspacioContenido();
            lblErrorLineas.Text     = string.Empty;
            Labelx.Text             = string.Empty;

            //Controles de la pauta.
            spPautaID.Number                    = Convert.ToInt32(ordenado.PautaId);
            ucIdentifFrecuencia.SelectedValue   = ordenado.IdentifFrecuencia;
            ucIdentifIntervalo.SelectedValue    = ordenado.IdentifIntervalo;

            if (FormsHelper.ConvertToDateTime(ordenado.HoraInicio) != Convert.ToDateTime("00:00:00"))
                teHoraInicio.DateTime = FormsHelper.ConvertToDateTime(ordenado.HoraInicio);

            teHoraInicioInsertar.DateTime = teHoraInicio.DateTime;

            if (FormsHelper.ConvertToDateTime(ordenado.HoraFin) != Convert.ToDateTime("00:00:00"))
                teHoraFin.DateTime = FormsHelper.ConvertToDateTime(ordenado.HoraFin);

            teHoraFinInsertar.DateTime = teHoraFin.DateTime;

            //Controles de solo lectura.
            spVersionCosto.Value    = ordenado.VersionCosto;
            txUsuCosto.Text         = ordenado.UsuCosto;
            deFecCosto.Date         = ordenado.FecCosto;
            deFecCosto.Value        = ordenado.FecCosto;

            if(ordenado.FecCierre > Convert.ToDateTime("01/01/1900"))
            {
                txUsuCierre.Text    = ordenado.UsuCierre;
                deFecCierre.Value   =  ordenado.FecCierre;
            }
            else
            {
                txUsuCierre.Text    = "";
                deFecCierre.Value   = "";
                ordenado.UsuCierre  = "";
                ordenado.FecCierre  = null;
            }

            spCantSalidas.Value = ordenado.CantSalidas;

            litCambiarPauta.Text = string.Format("Espacio: {0} | Período: {1}", ucIdentifEspacio.SelectedText, deAnoMes.Date.ToString("yyyy-MM"));

            //Actualizo controles.
            ucFrecuenciaChanged();

            ASPxPageControl1.Visible = true;
            trPauta.Visible = true;
            trFind.Visible = false;

            //Solo se pueden modificar ordenados NO cerrados.
            btnSave.Enabled = (ordenado.FecCierre == null);

            //Inicializo Fechas...

            deHoraDesdeOrigenReemplazar.DateTime  = FormsHelper.ConvertToDateTime(ordenado.HoraInicio);
            deHoraHastaOrigenReemplazar.DateTime = FormsHelper.ConvertToDateTime(ordenado.HoraFin);

            DateTime date   = new DateTime();
            date            = Convert.ToDateTime(deAnoMes.Date);

            deFechaDesdeDestinoCopiar.Date = new DateTime(date.Year, date.Month, 1);
            deFechaDesdeOrigenCopiar.Date  = new DateTime(date.Year, date.Month, 1);
            deFechaHastaOrigenCopiar.Date  = new DateTime(date.Year, date.Month, 1).AddMonths(1).AddDays(-1);
            deFechaHastaDestinoCopiar.Date = new DateTime(date.Year, date.Month, 1).AddMonths(1).AddDays(-1);
            deFechaDesdeReemplazar.Date    = new DateTime(date.Year, date.Month, 1);
            deFechaHastaReemplazar.Date    = new DateTime(date.Year, date.Month, 1).AddMonths(1).AddDays(-1);
        }
        private void CargarOrdenado()
        {
            lblValidaAñoMes.Text = string.Empty;
            lblErrorHome.Text = string.Empty;

            ordenado = Business.Ordenados.Read(Convert.ToString(ucIdentifEspacio.SelectedValue), deAnoMes.Date.Year, deAnoMes.Date.Month);

            ASPxPageControl1.Visible = true;
            trPauta.Visible = true;
            trFind.Visible = false;

            EspacioContDTO espacio = GetEspacioContenido();

            if (ordenado != null)
                ReCargarControles(ordenado);

            RecargarDiaHora();
        }
        private void Back()
        {
            ucIdentifEspacio.ComboBox.SelectedIndex = -1;
            txMedio.Text = string.Empty;
            deAnoMes.Date = DateTime.Now;

            trPauta.Visible = false;
            trFind.Visible = true;

            Lineas = null;
            OrdenadoCab = null;
            Costos = null;
        }
示例#15
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);
                    }
                }
            }
        }
 public EstimadoCabDTO(OrdenadoCabDTO ordenadoCab)
 {
     DTOHelper.FillObjectByObject(ordenadoCab, this);
     FecCierre = ordenadoCab.FecCierre.Value;
 }
示例#17
0
 public EstimadoCabDTO(OrdenadoCabDTO ordenadoCab)
 {
     DTOHelper.FillObjectByObject(ordenadoCab, this);
     FecCierre = ordenadoCab.FecCierre.Value;
 }