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); }