public Response Save(DocumCc item, string empresaDB) { try { using var db = new ProfitAdmin2K8(conn.GetDbContextOptions(empresaDB)); Utilitarios utilitarios = new Utilitarios(); #region Buscar consecutivo int numeroDocumento = utilitarios.BuscarConsecutivo(item.TipoDoc.Trim(), item.CoSucu, empresaDB); #endregion Clientes cliente = new ClientesRepositorio().GetCliente(item.CoCli, empresaDB); if (cliente == null) { throw new ArgumentException($"El cliente {item.CoCli.Trim()} no existe."); } Vendedor vendedor = new VendedoresRepositorio().Find(item.CoVen, empresaDB); if (vendedor == null) { throw new ArgumentException($"El vendedor {item.CoVen.Trim()} no existe."); } #region Construcción de DisCen string DisCen = utilitarios.ArmarDisCen(item.FecEmis, item.MontoBru, item.MontoImp, (item.Tipo == "6") ? item.MontoNet : 0, empresaDB); #endregion item.NroDoc = numeroDocumento; item.Contrib = cliente.Contribu; item.DisCen = DisCen; db.Entry(item).State = EntityState.Added; db.SaveChanges(); #region Actualizar consecutivo utilitarios.ActualizarConsecutivo(numeroDocumento, item.TipoDoc.Trim(), item.CoSucu, empresaDB); #endregion return(new Response { Status = "OK", Message = "Transacción realizada con éxito", FacturaID = item.NroDoc.ToString() }); } catch (Exception ex) { return(new Response { Status = "ERROR", Message = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message }); } }
private void ValidarFactura(EncabFacturaVenta obj, string empresaDB) { using var db = new ProfitAdmin2K8(conn.GetDbContextOptions(empresaDB)); Utilitarios utilitarios = new Utilitarios(); #region Verificar cliente cliente = new ClientesRepositorio().GetCliente(obj.CoCli, empresaDB); if (cliente == null) { throw new ArgumentException($"El cliente {obj.CoCli.Trim()} indicado para la factura no existe."); } else { if (cliente.Inactivo) { throw new ArgumentException($"El cliente {obj.CoCli.Trim()} indicado para la factura se encuentra inactivo."); } } #endregion #region Verificar vendedor Vendedor vendor = new VendedoresRepositorio().Find(obj.CoVen, empresaDB); if (vendor != null) { if (!vendor.FunVen) { throw new ArgumentException($"Vendedor {obj.CoVen} indicado no tiene función de 'vendedor'."); } } else { throw new ArgumentException($"El vendedor {obj.CoVen} suministrado no existe."); } #endregion #region Verificar transporte Transpor transporte = db.Transpor.FirstOrDefault(t => t.CoTran == obj.CoTran); if (transporte == null) { throw new ArgumentException($"El transporte {obj.CoTran} suministrado no existe."); } #endregion #region Verificar condicion de pago Condicio condicion = db.Condicio.FirstOrDefault(c => c.CoCond == obj.FormaPag); if (condicion == null) { throw new ArgumentException($"La condición de pago {obj.FormaPag} suministrado no existe."); } #endregion #region Verificar moneda utilitarios.GetMoneda(obj.Moneda, empresaDB); #endregion #region Verificar sucursal utilitarios.GetSucursal(obj.CoSucu, empresaDB); #endregion #region Verificar datos en renglones de factura foreach (var iRengFac in obj.DetaFacturaVenta) { #region Verificar articulo Art articulo = db.Art.FirstOrDefault(a => a.CoArt == iRengFac.CoArt); if (articulo == null) { throw new ArgumentException($"El artículo {iRengFac.CoArt.Trim()} suministrado en el renglón {iRengFac.RengNum} no existe."); } #endregion #region Verificar almacen SubAlma almacen = db.SubAlma.FirstOrDefault(a => a.CoSub == iRengFac.CoAlma); if (almacen == null) { throw new ArgumentException($"El almacén {iRengFac.CoAlma.Trim()} suministrado en el renglón {iRengFac.RengNum} no existe."); } else { if (almacen.CoAlma.Trim() != obj.CoSucu.Trim()) { throw new ArgumentException($"El almacén {iRengFac.CoAlma.Trim()} suministrado en el renglón {iRengFac.RengNum} no está permitido utilizarlo en la sucursal suministrada {obj.CoSucu.Trim()}."); } if (almacen.Noventa) { throw new ArgumentException($"El almacén {iRengFac.CoAlma.Trim()} suministrado en el renglón {iRengFac.RengNum} no está permitido utilizarlo en el módulo de facturas."); } } #endregion #region Verificar unidad primaria Unidades unidad = db.Unidades.FirstOrDefault(u => u.CoUni == iRengFac.UniVenta); if (unidad == null) { throw new ArgumentException($"La unidad de venta {iRengFac.UniVenta.Trim()} suministrada en el renglón {iRengFac.RengNum} no existe."); } #endregion } #endregion }
private void ValidarDevolucion(EncabDevolucionVenta obj, string empresaDB) { using var db = new ProfitAdmin2K8(conn.GetDbContextOptions(empresaDB)); Utilitarios utilitarios = new Utilitarios(); #region Verificar caja ppal para el cobro caja = db.Cajas.FirstOrDefault(c => c.Cajapri == true); if (caja == null) { throw new ArgumentException("No existe una caja principal para la cancelación del cobro. Llame a su consultor profit."); } #endregion #region Verificar cliente cliente = new ClientesRepositorio().GetCliente(obj.CoCli, empresaDB); if (cliente == null) { throw new ArgumentException($"El cliente {obj.CoCli.Trim()} indicado para la devolución no existe."); } else { if (cliente.Inactivo) { throw new ArgumentException($"El cliente {obj.CoCli.Trim()} indicado para la devolución se encuentra inactivo."); } } #endregion #region Verificar vendedor Vendedor vendor = new VendedoresRepositorio().Find(obj.CoVen, empresaDB); if (vendor != null) { if (!vendor.FunVen) { throw new ArgumentException($"Vendedor {obj.CoVen} indicado no tiene función de 'vendedor'."); } if (!vendor.FunCob) { throw new ArgumentException($"Vendedor {obj.CoVen} indicado no tiene función de 'cobrador'."); } } else { throw new ArgumentException($"El vendedor {obj.CoVen} suministrado no existe."); } #endregion #region Verificar transporte Transpor transporte = db.Transpor.FirstOrDefault(t => t.CoTran == obj.CoTran); if (transporte == null) { throw new ArgumentException($"El transporte {obj.CoTran} suministrado no existe."); } #endregion #region Verificar condicion de pago Condicio condicion = db.Condicio.FirstOrDefault(c => c.CoCond == obj.FormaPag); if (condicion == null) { throw new ArgumentException($"La condición de pago {obj.FormaPag} suministrado no existe."); } #endregion #region Verificar moneda utilitarios.GetMoneda(obj.Moneda, empresaDB); #endregion #region Verificar sucursal utilitarios.GetSucursal(obj.CoSucu, empresaDB); #endregion #region Verificar datos en renglones de factura foreach (var iRengFac in obj.DetaDevolucionVenta) { #region Verificar factura factura = new FacturasVentasRepositorio().Find(iRengFac.NumDoc, empresaDB); if (factura == null) { throw new ArgumentException($"La factura {iRengFac.NumDoc} indicada en el renglón {iRengFac.RengNum} en la devolución de cliente no existe."); } if (factura.Anulada) { throw new ArgumentException($"La factura {iRengFac.NumDoc} indicada en el renglón {iRengFac.RengNum} en la devolución de cliente se encuentra anulada."); } if (factura.Saldo == 0) { throw new ArgumentException($"La factura {iRengFac.NumDoc} indicada en el renglón {iRengFac.RengNum} se encuentra procesada [Saldo=0.00]."); } if (factura.Saldo < iRengFac.RengNeto) { throw new ArgumentException($"La factura {iRengFac.NumDoc} tiene un saldo menor al monto indicado en el renglón {iRengFac.RengNum}."); } if (factura.DetaFacturaVenta.FirstOrDefault(ra => ra.CoArt.Trim() == iRengFac.CoArt.Trim()) == null) { throw new ArgumentException($"El artículo {iRengFac.CoArt.Trim()} indicado en el renglón {iRengFac.RengNum} no se encontró en la factura."); } #endregion #region Verificar articulo Art articulo = new ArticulosRepositorio().Find(iRengFac.CoArt, empresaDB); if (articulo == null) { throw new ArgumentException($"El artículo {iRengFac.CoArt.Trim()} suministrado en el renglón {iRengFac.RengNum} no existe."); } #endregion #region Verificar almacen SubAlma almacen = db.SubAlma.FirstOrDefault(a => a.CoSub == iRengFac.CoAlma); if (almacen == null) { throw new ArgumentException($"El almacén {iRengFac.CoAlma.Trim()} suministrado en el renglón {iRengFac.RengNum} no existe."); } else { if (almacen.CoAlma.Trim() != obj.CoSucu.Trim()) { throw new ArgumentException($"El almacén {iRengFac.CoAlma.Trim()} suministrado en el renglón {iRengFac.RengNum} no está permitido utilizarlo en la sucursal suministrada {obj.CoSucu.Trim()}."); } if (almacen.Noventa) { throw new ArgumentException($"El almacén {iRengFac.CoAlma.Trim()} suministrado en el renglón {iRengFac.RengNum} no está permitido utilizarlo en el módulo de facturas."); } } #endregion #region Verificar unidad primaria Unidades unidad = db.Unidades.FirstOrDefault(u => u.CoUni == iRengFac.UniVenta); if (unidad == null) { throw new ArgumentException($"La unidad de venta {iRengFac.UniVenta.Trim()} suministrada en el renglón {iRengFac.RengNum} no existe."); } #endregion } #endregion }