Exemple #1
0
        public static ENTKardex SelectKardexByIDProducto(int IDProducto)
        {
            ENTKardex       miKardex = null;
            KardexDataTable miTabla  = adaptador.SelectKardexByIDProducto(IDProducto);

            if (miTabla.Rows.Count == 0)
            {
                return(miKardex);
            }
            KardexRow miRegistro = (KardexRow)miTabla.Rows[0];

            miKardex = new ENTKardex
            {
                IDKardex      = miRegistro.IDKardex,
                Fecha         = miRegistro.Fecha,
                Concepto      = miRegistro.Concepto,
                Entrada       = (float)miRegistro.Entrada,
                Salida        = (float)miRegistro.Salida,
                Existencia    = (float)miRegistro.Existencia,
                CostoUnitario = miRegistro.CostoUnitario,
                Debe          = miRegistro.Debe,
                Haber         = miRegistro.Haber,
                Saldo         = miRegistro.Saldo,
                CostoPromedio = miRegistro.CostoPromedio,
                IDProducto    = miRegistro.IDProducto
            };

            return(miKardex);
        }
        public ActionResult Index(string inicio, string final, int producto)
        {
            sendFillData();
            DateTime fecha_inicio = Convert.ToDateTime(inicio);
            DateTime fecha_final  = Convert.ToDateTime(final);

            var filteredData = db.tblKardex.Where(p => p.tblProducto.Id == producto).Where(t => t.fecha >= fecha_inicio && t.fecha <= fecha_final);

            if (filteredData.Any())
            {
                kardexRows = new List <KardexRow>();
                KardexRow inventario_inicial = new KardexRow();
                inventario_inicial.fecha       = filteredData.FirstOrDefault().fecha;
                inventario_inicial.descripcion = "Inventario inicial";
                inventario_inicial.saldo_Q     = filteredData.FirstOrDefault().cantidad_inicial;
                inventario_inicial.saldo_cu    = filteredData.FirstOrDefault().tblProducto.precio;
                inventario_inicial.saldo_ct    = filteredData.FirstOrDefault().tblProducto.precio *filteredData.FirstOrDefault().cantidad_inicial;
                kardexRows.Add(inventario_inicial);

                List <tblKardex> kardex_list = filteredData.ToList();

                for (int i = 0; i < kardex_list.Count; i++)
                {
                    kardexRows.Add(toKardexRow(kardex_list[i], kardexRows[i]));
                }

                foreach (var trans in kardexRows)
                {
                    ViewBag.tbody += "<tr>";
                    ViewBag.tbody += "<td>" + trans.fecha.Value.ToShortDateString() + "</td>";
                    ViewBag.tbody += "<td>" + trans.descripcion + "</td>";
                    ViewBag.tbody += "<td>" + trans.entrada_Q + "</td>";
                    ViewBag.tbody += "<td>" + string.Format("{0:0.00}", trans.entrada_cu).Replace(".00", "") + "</td>";
                    ViewBag.tbody += "<td>" + string.Format("{0:0.00}", trans.entrada_ct).Replace(".00", "") + "</td>";
                    ViewBag.tbody += "<td>" + trans.salida_Q + "</td>";
                    ViewBag.tbody += "<td>" + string.Format("{0:0.00}", trans.salida_cu).Replace(".00", "") + "</td>";
                    ViewBag.tbody += "<td>" + string.Format("{0:0.00}", trans.salida_ct).Replace(".00", "") + "</td>";
                    ViewBag.tbody += "<td>" + trans.saldo_Q + "</td>";
                    ViewBag.tbody += "<td>" + string.Format("{0:0.00}", trans.saldo_cu).Replace(".00", "") + "</td>";
                    ViewBag.tbody += "<td>" + string.Format("{0:0.00}", trans.saldo_ct).Replace(".00", "") + "</td>";
                    ViewBag.tbody += "</tr>";

                    if (trans.Equals(kardexRows.Last()))
                    {
                        ViewBag.Saldo = trans.saldo_Q;
                        ViewBag.Total = string.Format("{0:0.00}", trans.saldo_ct).Replace(".00", "");
                    }
                }
            }

            var tblKardex = db.tblKardex.Include(t => t.tblProducto);

            return(View(tblKardex.ToList()));
        }
        private KardexRow toKardexRow(tblKardex actual_kardex, KardexRow previous_kardex)
        {
            KardexRow kr = new KardexRow();

            kr.fecha = actual_kardex.fecha;
            if (actual_kardex.id_compra != null)
            {
                tblCompra compra = db.tblCompra.Where(c => c.Id == actual_kardex.id_compra).SingleOrDefault();
                kr.id_compra = compra.Id;

                kr.entrada_Q  = compra.cantidad_compra;
                kr.entrada_cu = (compra.precio_compra / compra.cantidad_compra);
                kr.entrada_ct = compra.precio_compra;

                kr.saldo_Q  = previous_kardex.saldo_Q + compra.cantidad_compra;
                kr.saldo_cu = (previous_kardex.saldo_ct + compra.precio_compra) / kr.saldo_Q; //Formula de Promedio ponderado
                kr.saldo_ct = kr.saldo_Q * kr.saldo_cu;

                kr.descripcion = "Compra de productos factura #" + kr.id_compra;
            }
            else if (actual_kardex.id_venta != null)
            {
                tblVenta venta = db.tblVenta.Where(v => v.Id == actual_kardex.id_venta).SingleOrDefault();
                kr.id_venta = venta.Id;

                kr.salida_Q  = venta.cantidad_venta;
                kr.salida_cu = previous_kardex.saldo_cu;
                kr.salida_ct = kr.salida_Q * kr.salida_cu;

                kr.saldo_Q  = previous_kardex.saldo_Q - venta.cantidad_venta;
                kr.saldo_cu = previous_kardex.saldo_cu;
                kr.saldo_ct = kr.saldo_Q * kr.saldo_cu;

                kr.descripcion = "Venta de productos factura #" + kr.id_venta;
            }
            else if (actual_kardex.id_devolucion != null)
            {
                var devolucion = db.tblDevoluciones.Where(v => v.Id == actual_kardex.id_devolucion).SingleOrDefault();
                if (devolucion.id_venta != null)
                {
                    var venta = kardexRows.Where(k => k.id_venta == devolucion.id_venta).SingleOrDefault();

                    kr.salida_Q  = devolucion.cantidad * -1;
                    kr.salida_cu = venta.salida_cu;
                    kr.salida_ct = kr.salida_Q * kr.salida_cu;

                    kr.saldo_Q  = previous_kardex.saldo_Q - kr.salida_Q;
                    kr.saldo_cu = previous_kardex.saldo_cu;
                    kr.saldo_ct = kr.saldo_Q * kr.saldo_cu;

                    kr.descripcion = "Devolución de venta factura #" + devolucion.id_venta;
                }
                else if (devolucion.id_compra != null)
                {
                    var compra = kardexRows.Where(k => k.id_compra == devolucion.id_compra).SingleOrDefault();

                    kr.entrada_Q  = devolucion.cantidad * -1;
                    kr.entrada_cu = compra.entrada_cu;
                    kr.entrada_ct = kr.entrada_Q * kr.entrada_cu;

                    kr.saldo_Q  = previous_kardex.saldo_Q + kr.entrada_Q;
                    kr.saldo_cu = (previous_kardex.saldo_ct + kr.entrada_ct) / kr.saldo_Q;
                    kr.saldo_ct = kr.saldo_Q * kr.saldo_cu;

                    kr.descripcion = "Devolución de compra factura #" + devolucion.id_compra;
                }
            }
            return(kr);
        }