public ActionResult DeleteConfirmed(int id)
        {
            NOTA_CARGO nOTA_CARGO = db.NOTA_CARGO.Find(id);

            db.NOTA_CARGO.Remove(nOTA_CARGO);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "NOTA_CARGO_ID,USUARIO_ID,CLIENTE_ID,SERIE_DOC_ID,NRO_NOTA_CARGO,FECHA_EMISION,SUBTOTAL,TOTAL,ANULADA,CAUSA_ANULADA,ESTADO_DOC,PAGOS,FECHA_ACTUALIZADO,FECHA_VENCIMIENTO")] NOTA_CARGO nOTA_CARGO)
 {
     if (ModelState.IsValid)
     {
         db.Entry(nOTA_CARGO).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.CLIENTE_ID   = new SelectList(db.CLIENTE, "CLIENTE_ID", "NOMBRE_CLTE", nOTA_CARGO.CLIENTE_ID);
     ViewBag.SERIE_DOC_ID = new SelectList(db.SERIE_DOCUMENTO, "SERIE_DOC_ID", "SERIE", nOTA_CARGO.SERIE_DOC_ID);
     ViewBag.USUARIO_ID   = new SelectList(db.USUARIO, "USUARIO_ID", "NOMBRE_COMPLETO", nOTA_CARGO.USUARIO_ID);
     return(View(nOTA_CARGO));
 }
        // GET: /NOTA_CARGO/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            NOTA_CARGO nOTA_CARGO = db.NOTA_CARGO.Find(id);

            if (nOTA_CARGO == null)
            {
                return(HttpNotFound());
            }
            return(View(nOTA_CARGO));
        }
        // GET: /NOTA_CARGO/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            NOTA_CARGO nOTA_CARGO = db.NOTA_CARGO.Find(id);

            if (nOTA_CARGO == null)
            {
                return(HttpNotFound());
            }
            ViewBag.CLIENTE_ID   = new SelectList(db.CLIENTE, "CLIENTE_ID", "NOMBRE_CLTE", nOTA_CARGO.CLIENTE_ID);
            ViewBag.SERIE_DOC_ID = new SelectList(db.SERIE_DOCUMENTO, "SERIE_DOC_ID", "SERIE", nOTA_CARGO.SERIE_DOC_ID);
            ViewBag.USUARIO_ID   = new SelectList(db.USUARIO, "USUARIO_ID", "NOMBRE_COMPLETO", nOTA_CARGO.USUARIO_ID);
            return(View(nOTA_CARGO));
        }
        public ActionResult Create([Bind(Include = "NOTA_CARGO_ID,USUARIO_ID,CLIENTE_ID,SERIE_DOC_ID,NRO_NOTA_CARGO,FECHA_EMISION,SUBTOTAL,TOTAL,ANULADA,CAUSA_ANULADA,ESTADO_DOC,PAGOS,FECHA_ACTUALIZADO,FECHA_VENCIMIENTO, DESCRIPCION")] NOTA_CARGO nOTA_CARGO)
        {
            if (ModelState.IsValid)
            {
                nOTA_CARGO.USUARIO_ID = 1;
                nOTA_CARGO.ANULADA    = false;
                nOTA_CARGO.ESTADO_DOC = false;
                nOTA_CARGO.SUBTOTAL   = nOTA_CARGO.TOTAL;
                nOTA_CARGO.PAGOS      = 0;
                db.NOTA_CARGO.Add(nOTA_CARGO);
                db.SaveChanges();

                DOCS_CC         docs_cc = new DOCS_CC();
                SERIE_DOCUMENTO sERIE   = db.SERIE_DOCUMENTO.Find(nOTA_CARGO.SERIE_DOC_ID);
                docs_cc.TIPO_DOC_ID       = sERIE.TIPO_DOC_ID;
                docs_cc.USUARIO_ID        = 1;
                docs_cc.CLIENTE_ID        = nOTA_CARGO.CLIENTE_ID;
                docs_cc.NRO_DOC           = nOTA_CARGO.NRO_NOTA_CARGO;
                docs_cc.FECHA_EMISION     = nOTA_CARGO.FECHA_EMISION;
                docs_cc.MONTO_DOC         = nOTA_CARGO.TOTAL;
                docs_cc.MONTO_PARCIAL     = nOTA_CARGO.TOTAL;
                docs_cc.FECHA_HORA        = DateTime.Now;
                docs_cc.TIPO              = "C";
                docs_cc.FECHA_VENCIMIENTO = nOTA_CARGO.FECHA_VENCIMIENTO;
                docs_cc.NRO_PAGOS         = 0;
                docs_cc.BALANCE           = nOTA_CARGO.TOTAL;
                docs_cc.ID_ORIGEN         = db.NOTA_CARGO.Where(n => n.NRO_NOTA_CARGO == nOTA_CARGO.NRO_NOTA_CARGO).Select(n => n.NOTA_CARGO_ID).FirstOrDefault();
                db.DOCS_CC.Add(docs_cc);
                db.SaveChanges();

                return(RedirectToAction("Index"));
            }

            ViewBag.CLIENTE_ID   = new SelectList(db.CLIENTE, "CLIENTE_ID", "NOMBRE_CLTE", nOTA_CARGO.CLIENTE_ID);
            ViewBag.SERIE_DOC_ID = new SelectList(db.SERIE_DOCUMENTO, "SERIE_DOC_ID", "SERIE", nOTA_CARGO.SERIE_DOC_ID);
            ViewBag.USUARIO_ID   = new SelectList(db.USUARIO, "USUARIO_ID", "NOMBRE_COMPLETO", nOTA_CARGO.USUARIO_ID);
            return(View(nOTA_CARGO));
        }
        // GET: /NOTA_CARGO/Create
        public ActionResult Create()
        {
            NOTA_CARGO NotaCargo = new NOTA_CARGO();
            //Clientes
            var clienteList = new List <SelectListItem>();

            clienteList.Add(new SelectListItem()
            {
                Value = "0", Text = "-Elija Cliente-", Selected = NotaCargo.CLIENTE_ID == 0
            });
            clienteList.AddRange(db.CLIENTE.Select(r => new SelectListItem()
            {
                Value    = r.CLIENTE_ID + "",
                Text     = r.NOMBRE_CLTE,
                Selected = NotaCargo.CLIENTE_ID == r.CLIENTE_ID
            }));

            //Serie
            var seriesList = new List <SelectListItem>();

            seriesList.Add(new SelectListItem()
            {
                Value = "0", Text = "-Elija Serie-", Selected = NotaCargo.SERIE_DOC_ID == 0
            });
            seriesList.AddRange(db.SERIE_DOCUMENTO.Where(r => r.SERIE_ACTIVO == true && r.TIPO_DOC_ID == 3).Select(r => new SelectListItem()
            {
                Value    = r.SERIE_DOC_ID + "",
                Text     = r.SERIE,
                Selected = NotaCargo.SERIE_DOC_ID == r.SERIE_DOC_ID
            }));

            ViewBag.CLIENTE_ID    = clienteList;
            ViewBag.SERIE_DOC_ID  = seriesList;
            ViewBag.FECHA_EMISION = DateTime.Now.Date.ToShortDateString();
            ViewBag.USUARIO_ID    = new SelectList(db.USUARIO, "USUARIO_ID", "NOMBRE_COMPLETO");
            return(View());
        }
        public ActionResult GuardarRecibo(int CLIENTE_ID, DateTime FECHA_EMISION, int FORMA_PAGO_ID, string NRO_DOC_PAGO,
                                          int NRO_RECIBO, int SERIE_DOC_ID, decimal TOTAL, RECIBO_DETALLE[] reciboDet)
        {
            string result = "Error! Recibo no completado!";

            if (NRO_RECIBO != null && CLIENTE_ID != null)
            {
                RECIBO model = new RECIBO();
                model.USUARIO_ID    = 1;
                model.CLIENTE_ID    = CLIENTE_ID;
                model.FORMA_PAGO_ID = FORMA_PAGO_ID;
                model.NRO_RECIBO    = NRO_RECIBO;
                model.FECHA_EMISION = FECHA_EMISION;
                model.SUBTOTAL      = TOTAL;
                model.TOTAL         = TOTAL;
                model.NRO_DOC_PAGO  = NRO_DOC_PAGO;
                model.SERIE_DOC_ID  = SERIE_DOC_ID;
                db.RECIBO.Add(model);
                db.SaveChanges();

                foreach (var i in reciboDet)
                {
                    SqlConnection connection = new SqlConnection(db.Database.Connection.ConnectionString);
                    using (var cmd = new SqlCommand(String.Empty, connection))
                    {
                        cmd.CommandType = CommandType.Text;
                        cmd.CommandText =
                            "insert into RECIBO_DETALLE (RECIBO_ID, FACTURA_ID, MONTO, TIPO_DOC_ID, DOC_NRO)" +
                            " values (@RECIBO_ID, @FACTURA_ID, @MONTO, @TIPO_DOC_ID, @DOC_NRO)";
                        cmd.Parameters.AddWithValue("@RECIBO_ID",
                                                    db.RECIBO.OrderByDescending(r => r.RECIBO_ID).Select(r => r.RECIBO_ID).FirstOrDefault());
                        cmd.Parameters.AddWithValue("@FACTURA_ID", db.DOCS_CC.Where(d => d.DOC_ID == i.FACTURA_ID).Select(d => d.ID_ORIGEN).FirstOrDefault());
                        cmd.Parameters.AddWithValue("@MONTO", i.MONTO);
                        cmd.Parameters.AddWithValue("@TIPO_DOC_ID", i.TIPO_DOC_ID);
                        cmd.Parameters.AddWithValue("@DOC_NRO", i.DOC_NRO);

                        try
                        {
                            connection.Open();
                            cmd.ExecuteNonQuery();
                            connection.Close();
                        }
                        catch (SqlException e)
                        {
                            result = e.ToString();
                            return(Json(result, JsonRequestBehavior.AllowGet));
                        }
                    }
                }

                foreach (var i in reciboDet)
                {
                    if (i.TIPO_DOC_ID == 1) //Si es factura lo que cancelan
                    {
                        /*Actualizo datos de factura*/
                        #region
                        FACTURA fACTURA = db.FACTURA.FirstOrDefault(f => f.NRO_FACTURA == i.DOC_NRO);
                        fACTURA.FECHA_ACTUALIZADO = DateTime.Today;
                        fACTURA.PAGOS             = fACTURA.PAGOS.HasValue ? fACTURA.PAGOS + i.MONTO : i.MONTO;
                        if (fACTURA.TOTAL - fACTURA.PAGOS == 0)
                        {
                            fACTURA.ESTADO_DOC = true;
                        }
                        else
                        {
                            fACTURA.ESTADO_DOC = false;
                        }
                        db.Entry(fACTURA).State = EntityState.Modified;
                        db.SaveChanges();
                        #endregion

                        /*Para guardar el recibo en tabla DOCS_CC */
                        #region
                        DOCS_CC dOCS = new DOCS_CC();
                        dOCS.TIPO_DOC_ID    = 2;
                        dOCS.FORMA_PAGO_ID  = FORMA_PAGO_ID;
                        dOCS.USUARIO_ID     = 1;
                        dOCS.CLIENTE_ID     = CLIENTE_ID;
                        dOCS.NRO_DOC        = NRO_RECIBO; //db.RECIBO.OrderByDescending(r => r.RECIBO_ID).Select(r => r.NRO_RECIBO).FirstOrDefault();
                        dOCS.FECHA_EMISION  = FECHA_EMISION;
                        dOCS.DESC_DOC       = "Pago de factura No. " + i.DOC_NRO;
                        dOCS.MONTO_DOC      = i.MONTO;
                        dOCS.MONTO_PARCIAL  = i.MONTO;
                        dOCS.NRO_PAGOS      = 1;
                        dOCS.BALANCE        = 0;
                        dOCS.NRO_DOC_PAGADO = db.DOCS_CC.Where(f => f.TIPO_DOC_ID == i.TIPO_DOC_ID && f.NRO_DOC == fACTURA.NRO_FACTURA).Select(f => f.NRO_DOC).FirstOrDefault();
                        dOCS.ID_PAGADO      = db.DOCS_CC.Where(f => f.TIPO_DOC_ID == i.TIPO_DOC_ID && f.NRO_DOC == fACTURA.NRO_FACTURA).Select(f => f.DOC_ID).FirstOrDefault();
                        dOCS.FECHA_HORA     = DateTime.Now;
                        dOCS.ID_BASE        = db.DOCS_CC.Where(f => f.TIPO_DOC_ID == i.TIPO_DOC_ID && f.NRO_DOC == fACTURA.NRO_FACTURA).Select(f => f.DOC_ID).FirstOrDefault();
                        dOCS.TIPO           = "A";
                        db.DOCS_CC.Add(dOCS);
                        db.SaveChanges();
                        #endregion

                        /*Para actualizar factura en DOCS_CC*/
                        #region
                        DOCS_CC dOC1 = db.DOCS_CC.Find(dOCS.ID_PAGADO);
                        dOC1.NRO_PAGOS       = dOC1.NRO_PAGOS + 1;
                        dOC1.BALANCE         = dOC1.BALANCE - i.MONTO;
                        dOC1.NRO_DOC_PAGADO  = dOCS.NRO_DOC;
                        dOC1.ID_PAGADO       = dOCS.DOC_ID;
                        dOC1.FECHA_PAGADO    = FECHA_EMISION;
                        db.Entry(dOC1).State = EntityState.Modified;
                        db.SaveChanges();
                        #endregion
                    }
                    else if (i.TIPO_DOC_ID == 3) //Si es nota de cargo lo que cancelan
                    {
                        /*Actualizo datos de nota de cargo*/
                        #region Actualizar nota de cargo
                        NOTA_CARGO nOTA_CARGO = db.NOTA_CARGO.FirstOrDefault(n => n.NRO_NOTA_CARGO == i.DOC_NRO);
                        nOTA_CARGO.FECHA_ACTUALIZADO = DateTime.Today;
                        nOTA_CARGO.PAGOS             = nOTA_CARGO.PAGOS.HasValue ? nOTA_CARGO.PAGOS + i.MONTO : i.MONTO;
                        if (nOTA_CARGO.TOTAL - nOTA_CARGO.PAGOS == 0)
                        {
                            nOTA_CARGO.ESTADO_DOC = true;
                        }
                        else
                        {
                            nOTA_CARGO.ESTADO_DOC = false;
                        }
                        db.Entry(nOTA_CARGO).State = EntityState.Modified;
                        db.SaveChanges();
                        #endregion

                        /*Para guardar el recibo en tabla DOCS_CC */
                        #region guardar recibo en DOCS_CC
                        DOCS_CC dOCS = new DOCS_CC();
                        dOCS.TIPO_DOC_ID    = 2;
                        dOCS.FORMA_PAGO_ID  = FORMA_PAGO_ID;
                        dOCS.USUARIO_ID     = 1;
                        dOCS.CLIENTE_ID     = CLIENTE_ID;
                        dOCS.NRO_DOC        = NRO_RECIBO; //db.RECIBO.OrderByDescending(r => r.RECIBO_ID).Select(r => r.NRO_RECIBO).FirstOrDefault();
                        dOCS.FECHA_EMISION  = FECHA_EMISION;
                        dOCS.DESC_DOC       = "Pago de Nota de cargo No. " + nOTA_CARGO.NRO_NOTA_CARGO;
                        dOCS.MONTO_DOC      = i.MONTO;
                        dOCS.MONTO_PARCIAL  = i.MONTO;
                        dOCS.NRO_PAGOS      = 1;
                        dOCS.BALANCE        = 0;
                        dOCS.NRO_DOC_PAGADO = db.DOCS_CC.Where(f => f.TIPO_DOC_ID == i.TIPO_DOC_ID && f.NRO_DOC == nOTA_CARGO.NRO_NOTA_CARGO).Select(f => f.NRO_DOC).FirstOrDefault();
                        dOCS.ID_PAGADO      = db.DOCS_CC.Where(f => f.TIPO_DOC_ID == i.TIPO_DOC_ID && f.NRO_DOC == nOTA_CARGO.NRO_NOTA_CARGO).Select(f => f.DOC_ID).FirstOrDefault();
                        dOCS.FECHA_HORA     = DateTime.Now;
                        dOCS.ID_BASE        = db.DOCS_CC.Where(f => f.TIPO_DOC_ID == i.TIPO_DOC_ID && f.NRO_DOC == nOTA_CARGO.NRO_NOTA_CARGO).Select(f => f.DOC_ID).FirstOrDefault();
                        dOCS.TIPO           = "A";
                        db.DOCS_CC.Add(dOCS);
                        db.SaveChanges();
                        #endregion

                        /*Para actualizar NOTA_CARGO en DOCS_CC*/
                        #region actualizar NOTA_CARGO en DOCS_CC
                        DOCS_CC dOC1 = db.DOCS_CC.Find(dOCS.ID_PAGADO);
                        dOC1.NRO_PAGOS       = dOC1.NRO_PAGOS + 1;
                        dOC1.BALANCE         = dOC1.BALANCE - i.MONTO;
                        dOC1.NRO_DOC_PAGADO  = dOCS.NRO_DOC;
                        dOC1.ID_PAGADO       = dOCS.DOC_ID;
                        dOC1.FECHA_PAGADO    = FECHA_EMISION;
                        db.Entry(dOC1).State = EntityState.Modified;
                        db.SaveChanges();
                        #endregion
                    }
                }

                result = "Recibo guardado con exito!";
            }

            return(Json(result, JsonRequestBehavior.AllowGet));
        }