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)); }
public ActionResult Create(FacturaProveedoresVM fpVM) { try { if (ModelState.IsValid) { string FileName = ""; if (fpVM.file != null) { FileName = fpVM.file.FileName; string url_path = Path.Combine(Server.MapPath("~/path"), Path.GetFileName(FileName)); fpVM.file.SaveAs(url_path); } factura_proveedores fp = new factura_proveedores() { periodo = fpVM.periodo, fecha_factura = fpVM.fecha_factura, fecha_pago = fpVM.fecha_pago, tipo_factura = fpVM.tipo_factura, create_user_id = int.Parse(Session["UserID"].ToString()), update_date = DateTime.Now, tipo_comprobante_id = fpVM.tipo_comprobante_id, profesional_id = fpVM.profesional_id, punto_venta = fpVM.punto_venta, nro_comprobante = fpVM.nro_comprobante, cuit_cuil = fpVM.cuit_cuil, nro_cuit_cuil = fpVM.nro_cuit_cuil, description = fpVM.description, imp_neto_gravado = fpVM.imp_neto_gravado, imp_neto_no_gravado = fpVM.imp_neto_no_gravado, imp_op_exentas = fpVM.imp_op_exentas, iva = fpVM.iva, importe_total = fpVM.importe_total, name_file = FileName, estado = fpVM.estado, activo = 1 }; db.factura_proveedores.Add(fp); db.SaveChanges(); return(RedirectToAction("Index")); } } catch { ModelState.AddModelError("", "Se produjo un error, en caso de persistir, ponerse en contacto con el Administrador."); } GetTipoFactura(); GetTipoComprobante(); GetProfesionales(); GetEstado(); GetComboCC(); GetComboPeriodo(); return(View(fpVM)); }
public ActionResult Edit(FacturaProveedoresVM fpVM) { try { if (ModelState.IsValid) { factura_proveedores fp = new factura_proveedores { id = fpVM.id, periodo = fpVM.periodo, fecha_factura = fpVM.fecha_factura, fecha_pago = fpVM.fecha_pago, tipo_factura = fpVM.tipo_factura, create_user_id = fpVM.create_user_id, update_date = DateTime.Now, update_user_id = int.Parse(Session["UserID"].ToString()), tipo_comprobante_id = fpVM.tipo_comprobante_id, punto_venta = fpVM.punto_venta, nro_comprobante = fpVM.nro_comprobante, cuit_cuil = fpVM.cuit_cuil, nro_cuit_cuil = fpVM.nro_cuit_cuil, description = fpVM.description, imp_neto_gravado = fpVM.imp_neto_gravado, imp_neto_no_gravado = fpVM.imp_neto_no_gravado, imp_op_exentas = fpVM.imp_op_exentas, iva = fpVM.iva, importe_total = fpVM.importe_total, estado = fpVM.estado, name_file = fpVM.fileName, activo = 1, profesional_id = fpVM.profesional_id }; db.Entry(fp).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } } catch { ModelState.AddModelError("", "Se produjo un error, en caso de persistir, ponerse en contacto con el Administrador."); } GetComboPeriodo(); GetTipoFactura(); GetTipoComprobante(); GetProfesionales(); GetEstado(); GetComboCC(); GetUser(); return(View(fpVM)); }
public ActionResult DeleteConfirmed(long id) { try { factura_proveedores factura_proveedores = db.factura_proveedores.Find(id); factura_proveedores.activo = 0; db.Entry(factura_proveedores).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } catch { ModelState.AddModelError("", "Se produjo un error, en caso de persistir, ponerse en contacto con el Administrador."); } return(View()); }
public ActionResult Delete(long?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } factura_proveedores fp = db.factura_proveedores.Find(id); FacturaProveedoresVM fpVM = new FacturaProveedoresVM { id = fp.id, periodo = fp.periodo, fecha_factura = fp.fecha_factura, fecha_pago = fp.fecha_pago, nro_comprobante = fp.nro_comprobante, description = fp.description, importe_total = fp.importe_total, estadoDesc = fp.estado == 0 ? "PAGADO" : fp.estado == 1 ? "PAGO PARCIAL" : "IMPAGO" }; return(View(fpVM)); }
public ActionResult Edit(long?id) { factura_proveedores fp = db.factura_proveedores.Find(id); FacturaProveedoresVM fpVM = new FacturaProveedoresVM { id = fp.id, periodo = fp.periodo, fecha_factura = fp.fecha_factura, fecha_pago = fp.fecha_pago, tipo_factura = fp.tipo_factura, create_user_id = fp.create_user_id, tipo_comprobante_id = fp.tipo_comprobante_id, punto_venta = fp.punto_venta, nro_comprobante = fp.nro_comprobante, cuit_cuil = fp.cuit_cuil, nro_cuit_cuil = fp.nro_cuit_cuil, description = fp.description, imp_neto_gravado = fp.imp_neto_gravado, imp_neto_no_gravado = fp.imp_neto_no_gravado, imp_op_exentas = fp.imp_op_exentas, iva = fp.iva, importe_total = fp.importe_total, estado = fp.estado, fileName = fp.name_file, profesional_id = fp.profesional_id }; GetProfesionales(); GetComboPeriodo(); GetTipoFactura(); GetTipoComprobante(); GetEstado(); GetComboCC(); GetUser(); return(View(fpVM)); }
public ActionResult CreateDetalle(OrdenesPagoDetVM OPvm, string submit) { try { if (ModelState.IsValid) { factura_proveedores fp = db.factura_proveedores.Where(x => x.id == OPvm.FacturaProveedorId).First(); double importeDetalle = 0; if (OPvm.PagaTotal == false) //ingresa los valores a mano, por eso controlo. { if (OPvm.Importe == null || OPvm.Importe == 0) { GetFacturas(OPvm.ProfesionalId); GetFormasPago(); ModelState.AddModelError("", "Debe ingresar un importe mayor a 0!"); return(View(OPvm)); } //Controlo que el importe a pagar sea menor al ingresado. if (OPvm.Importe > fp.importe_total) { GetFacturas(OPvm.ProfesionalId); GetFormasPago(); ModelState.AddModelError("", "El importe ingresado en la Orden de Pago, no puede ser mayor al saldo por pagar de la Factura que es de: " + fp.importe_total); return(View(OPvm)); } else if (fp.estado == 1) //tiene pago parcial. O sea, le queda algo por saldar pero no es todo el importe de la factura { //Ver en que detalle de orden de pago está para sacar el importe y hacer la diferencia. double importeCargado = db.orden_pago_det.Where(x => x.factura_proveedores_id == OPvm.FacturaProveedorId).Select(x => x.importe).FirstOrDefault(); double diferencia = fp.importe_total - importeCargado; if (OPvm.Importe > diferencia) { GetFacturas(OPvm.ProfesionalId); GetFormasPago(); ModelState.AddModelError("", "El importe ingresado en la Orden de Pago, no puede ser mayor al saldo por pagar de la Factura que es de: " + diferencia); return(View(OPvm)); } } importeDetalle = (double)OPvm.Importe; } else { //tengo que controlar si ya hay algo pago de esa factura if (fp.estado == 1) //pago parcial { double importesSum = 0; List <double> importesCargados = db.orden_pago_det.Where(x => x.factura_proveedores_id == OPvm.FacturaProveedorId).Select(x => x.importe).ToList(); foreach (var l in importesCargados) { importesSum = importesSum + l; } double diferencia = fp.importe_total - importesSum; importeDetalle = diferencia; } else //es 2, significa que no tiene nada pago { importeDetalle = fp.importe_total; } } //Guardo el detalle orden_pago_det opdet = new orden_pago_det { orden_pago_cab_id = OPvm.idCab, factura_proveedores_id = (long)OPvm.FacturaProveedorId, paga_total = OPvm.PagaTotal, importe = importeDetalle, forma_pago = OPvm.FormaPago, nro_cheque = OPvm.NroCheque, nro_cuenta_corriente = OPvm.NroCtaCte, banco = OPvm.Banco, observaciones = OPvm.Observaciones }; db.orden_pago_det.Add(opdet); db.SaveChanges(); //Actualizo el importe en la cabecera orden_pago_cab orden_pago_cab = db.orden_pago_cab.Find(OPvm.idCab); orden_pago_cab.importe_total = orden_pago_cab.importe_total + importeDetalle; db.Entry(orden_pago_cab).State = EntityState.Modified; db.SaveChanges(); //actualizo el estado de la factur fp.estado = OPvm.PagaTotal == true ? 0 : 1; db.Entry(fp).State = EntityState.Modified; db.SaveChanges(); //segun el boton veo adonde lo llevo. if (submit == "Guardar y Volver") { return(RedirectToAction("Details", new { id = OPvm.idCab, page = 1 })); } else { return(RedirectToAction("CreateDetalle", new { idCab = OPvm.idCab })); } } } catch { ModelState.AddModelError("", "Se produjo un error, en caso de persistir, ponerse en contacto con el Administrador."); } GetFacturas(OPvm.ProfesionalId); GetFormasPago(); return(View(OPvm)); }
public ActionResult DeleteConfirmed(long id) { try { if (ModelState.IsValid) { //eliminacion logica de la cabecera orden_pago_cab orden_pago_cab = db.orden_pago_cab.Find(id); orden_pago_cab.activo = 0; //Busco si la cabecera tiene detalle y recorro. List <orden_pago_det> OpDet = db.orden_pago_det.Where(x => x.orden_pago_cab_id == id).ToList(); foreach (var det in OpDet) { //actualizacion del estado de la factura del profesional asociado factura_proveedores fp = db.factura_proveedores.Where(x => x.id == det.factura_proveedores_id).First(); if (fp != null) { if (fp.estado == 0 && det.importe == fp.importe_total) //pagado y los importes son iguales, queda impago { orden_pago_cab.importe_total = orden_pago_cab.importe_total - det.importe; fp.estado = 2; } else if (fp.estado == 0 && det.importe < fp.importe_total) //pagado y el importe del detalle es menor a la factura, queda pago parcial. { orden_pago_cab.importe_total = orden_pago_cab.importe_total - det.importe; fp.estado = 1; } else if (fp.estado == 1 && det.importe < fp.importe_total) //Pago parcial y el detalle es menor a la factura, queda pago parcial. { fp.estado = 1; orden_pago_cab.importe_total = orden_pago_cab.importe_total - det.importe; } if (orden_pago_cab.importe_total == 0) { fp.estado = 2; } //actualizo cabecera db.Entry(orden_pago_cab).State = EntityState.Modified; db.SaveChanges(); //actualizo factura db.Entry(fp).State = EntityState.Modified; db.SaveChanges(); } //eliminacion fisica del detalle db.orden_pago_det.Remove(det); db.SaveChanges(); } if (OpDet.Count() == 0)//cabecera sin detalle. { //actualizo cabecera db.Entry(orden_pago_cab).State = EntityState.Modified; db.SaveChanges(); } return(RedirectToAction("Index")); } } catch { ModelState.AddModelError("", "Se produjo un error, en caso de persistir, ponerse en contacto con el Administrador."); } return(View()); }