コード例 #1
0
        public ActionResult DeleteDetalle(OrdenesPagoDetailsDetalle opvm)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    //cacebera
                    orden_pago_cab orden_pago_cab = db.orden_pago_cab.Find(opvm.idCab);

                    //factura
                    factura_proveedores fp = db.factura_proveedores.Find(opvm.FacturaProveedorId);

                    //detalle
                    orden_pago_det orden_pago_det = db.orden_pago_det.Find(opvm.idDet);

                    //actualizacion del importe en la cabecera
                    orden_pago_cab.importe_total   = orden_pago_cab.importe_total - orden_pago_det.importe;
                    db.Entry(orden_pago_cab).State = EntityState.Modified;
                    db.SaveChanges();

                    //actualizo estado de la factura
                    if (fp.estado == 0) //pagado
                    {
                        if (fp.importe_total == orden_pago_det.importe)
                        {
                            fp.estado = 2;
                        }
                        else if (fp.importe_total > orden_pago_det.importe)
                        {
                            fp.estado = 1;
                        }
                    }
                    else if (fp.estado == 1) //pago parcial.
                    {
                        //tengo que buscar si existe la factura en algun detalle que no sea el actual para diferenciar si queda pago parcial o no.
                        int cont = db.orden_pago_det.Where(x => x.factura_proveedores_id == opvm.FacturaProveedorId && x.id != opvm.idDet).Count();
                        if (cont == 0)
                        {
                            fp.estado = 2;
                        }
                    }

                    db.Entry(fp).State = EntityState.Modified;
                    db.SaveChanges();

                    //eliminacion fisica del detalle
                    db.orden_pago_det.Remove(orden_pago_det);
                    db.SaveChanges();

                    return(RedirectToAction("Details", new { id = opvm.idCab, page = 1 }));
                }
            }
            catch
            {
                ModelState.AddModelError("", "Se produjo un error, en caso de persistir, ponerse en contacto con el Administrador.");
            }
            return(View(opvm));
        }
コード例 #2
0
        public ActionResult DeleteDetalle(long id)
        {
            OrdenesPagoDetailsDetalle opvm = _repo.GetOrdenPagoDetails(id);

            return(View(opvm));
        }