Exemplo n.º 1
0
        /// <summary>
        /// Metodo para distribuir equitativamente los gastos indirectos de fabricacion de una orden de produccion
        /// </summary>
        /// <param name="dtFechaProduccion">Representa la fecha para calcular los gastos de una produccion</param>
        /// <param name="idProduccionProd">Identificador único para orden de produccion</param>
        public void mProrrateo(DateTime dtFechaProduccion, int idProduccionProd)
        {
            decimal dCantidadTotal = 0;
            bool bIndirectCost = true;
            prorrateoClass cProrrateo = new prorrateoClass();

            IQueryable iqIndirectCosts = cProrrateo.GetIndirectCosts(dtFechaProduccion.AddMonths(-1));
            IQueryable iqLaborCost = cProrrateo.GetLaborCost(2);
            IQueryable iqProductionItems = cProrrateo.GetProductionItems(idProduccionProd);

            foreach (dynamic result in iqProductionItems)
            {
                dCantidadTotal += result.cantidad;
            }

            if (dCantidadTotal == 0)
                throw new Exception("No hay items a producir en esta produccion.");

            foreach (dynamic result in iqProductionItems)
            {
                int iCodProducto = result.cod_producto;
                decimal dQuantity = result.cantidad;
                foreach (dynamic resultIC in iqIndirectCosts)
                {
                    int idGasto = resultIC.id_gasto;
                    decimal dTotal = resultIC.Total;
                    decimal dTasaCambio = resultIC.tasa_cambio;
                    int iIdMoneda = resultIC.id_moneda;
                    decimal dNoFactura = resultIC.no_factura;
                    string sSerie = resultIC.Serie;
                    cProrrateo.SaveIndirectCostDetails(idProduccionProd, iCodProducto,
                                    iIdMoneda, decimal.Round((dQuantity*(dTotal/dCantidadTotal)),6,MidpointRounding.AwayFromZero),
                                    dTasaCambio, idGasto, dNoFactura, sSerie);
                    bIndirectCost = false;
                }

                if (bIndirectCost)
                    throw new Exception("No hay items a producir en esta produccion.");
            }

            foreach (dynamic result in iqProductionItems)
            {
                int iCodProducto = result.cod_producto;
                decimal dQuantity = result.cantidad;
                foreach (dynamic resultIC in iqLaborCost)
                {
                    string sCodPuesto = resultIC.codPuesto;
                    decimal dTotal = resultIC.Total;
                    cProrrateo.SaveIndirectLaborCostDetails(idProduccionProd, iCodProducto,sCodPuesto,
                        decimal.Round((dQuantity * (dTotal / dCantidadTotal)), 6, MidpointRounding.AwayFromZero));
                    bIndirectCost = false;
                }

                if (bIndirectCost)
                    throw new Exception("No hay items a producir en esta produccion.");
            }
        }
Exemplo n.º 2
0
        public void mProrrateo()
        {
            prorrateoClass cProrrateo = new prorrateoClass();

            dtFecha = DateTime.Now;

            foreach (dynamic result in cProrrateo.GetIndirectCosts(dtFecha.AddMonths(-1)))
            {
                int idGasto = result.id_gasto;
                decimal dTotal = result.Total;
                decimal dTasaCambio = result.tasa_cambio;
                int iIdMoneda = result.id_moneda;
            }

            foreach (dynamic result in cProrrateo.GetLaborCost(2))
            {
                decimal? dSalary = result.SALARIO;
                string sCodEmployee = result.PK_COD_EMPLEADO;
            }
        }