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