public IActionResult Actualizar([FromBody] DocumCc documento, string Emp) { resultado = metodo.Update(documento, Emp); if (resultado.Status == "OK") { return(Ok(resultado)); } else { return(BadRequest(resultado)); } }
public IActionResult Guardar([FromBody] DocumCc documento, string Emp) { documento.CoUsIn = string.IsNullOrEmpty(documento.CoUsIn) ? "999" : documento.CoUsIn; documento.FeUsIn = DateTime.Now; documento.CoUsMo = string.Empty; documento.FeUsMo = Convert.ToDateTime("01/01/1900"); documento.CoUsEl = string.Empty; documento.FeUsEl = Convert.ToDateTime("01/01/1900"); resultado = metodo.Save(documento, Emp); if (resultado.Status == "OK") { return(Ok(resultado)); } else { return(BadRequest(resultado)); } }
public int BuscarConsecutivo(string tipoDoc, string sucursal_act, string empresaDB) { using var db = new ProfitAdmin2K8(conn.GetDbContextOptions(empresaDB)); int numero = 0; #region Verificar si maneja sucursales if (db.ParEmp.Select(p => p.PFactAlm).FirstOrDefault()) { Almacen obj = db.Almacen.FirstOrDefault(a => a.CoAlma == sucursal_act); numero = BuscarCampoProximoNumeroTabla(obj, tipoDoc); } else { ParEmp obj = db.ParEmp.FirstOrDefault(); numero = BuscarCampoProximoNumeroTabla(obj, tipoDoc); } #endregion #region Buscar consecutivo en tablas while (true) { #region Busqueda movimientos en documentos if (tipoDoc != "DEVO" && tipoDoc != "AJUS" && tipoDoc != "COBR" && tipoDoc != "MOVC" && tipoDoc != "MOVB" && tipoDoc != "NREC") { DocumCc documcc = DocumCCRepositorio.GetDocumento(numero, tipoDoc, empresaDB); if (documcc != null) { numero++; } else { break; } } #endregion #region Busqueda movimientos en ajustes de inventario if (tipoDoc == "AJUS") { Ajuste ajuste = db.Ajuste.FirstOrDefault(a => a.AjueNum == numero); if (ajuste != null) { numero++; } else { break; } } #endregion #region Busqueda movimientos en devoluciones de clientes if (tipoDoc == "DEVO") { DevCli devCli = db.DevCli.FirstOrDefault(dc => dc.FactNum == numero); if (devCli != null) { numero++; } else { break; } } #endregion #region Busqueda movimientos en cobros if (tipoDoc == "COBR") { //EncabCobro cobro = cobrosRepositorio.Find(numero, empresaDB); Cobros cobro = db.Cobros.FirstOrDefault(c => c.CobNum == numero); if (cobro != null) { numero++; } else { break; } } #endregion #region Busqueda movimientos en caja if (tipoDoc == "MOVC") { MovCaj movcaja = MovCRepositorio.Find(numero, empresaDB); if (movcaja != null) { numero++; } else { break; } } #endregion #region Busqueda movimientos en bancos if (tipoDoc == "MOVB") { MovBan movbanco = MovBRepositorio.Find(numero, empresaDB); if (movbanco != null) { numero++; } else { break; } } #endregion #region Busqueda notas de recepcion if (tipoDoc == "NREC") { EncabNotRec notRec = NotRRepositorio.Find(numero, empresaDB); if (notRec != null) { numero++; } else { break; } } #endregion } #endregion return(numero); }
public Response Save(EncabFacturaVenta item, string empresaDB) { try { using var db = new ProfitAdmin2K8(conn.GetDbContextOptions(empresaDB)); Utilitarios utilitarios = new Utilitarios(); #region Validar factura ValidarFactura(item, empresaDB); #endregion #region Buscar consecutivo var numeroFactura = utilitarios.BuscarConsecutivo("FACT", item.CoSucu, empresaDB); var numeroControl = utilitarios.BuscarNroControl(item.CoSucu, empresaDB); #endregion if (numeroFactura > 0) { #region Calcular exento para el DisCen decimal TotalExento = utilitarios.TotalExento(item.DetaFacturaVenta, empresaDB); #endregion #region Construcción de DisCen string DisCen = utilitarios.ArmarDisCen(item.FecEmis, (decimal)item.TotBruto, item.Iva, TotalExento, empresaDB); #endregion #region Encabezado factura Factura factura = new Factura { #region Campos encabezado FactNum = numeroFactura, Contrib = item.Contrib, Nombre = item.Nombre, Rif = item.Rif, Nit = item.Nit, NumControl = item.NumControl, Status = item.Status, Comentario = item.Comentario, Descrip = item.Descrip, Saldo = item.Saldo, FecEmis = item.FecEmis, FecVenc = item.FecVenc, CoCli = item.CoCli, CoVen = item.CoVen, CoTran = item.CoTran, DirEnt = item.DirEnt, FormaPag = item.FormaPag, TotBruto = item.TotBruto, TotNeto = item.TotNeto, GlobDesc = item.GlobDesc, TotReca = item.TotReca, PorcGdesc = item.PorcReca, PorcReca = item.PorcReca, TotalUc = item.TotalUc, TotalCp = item.TotalCp, TotFlete = item.TotFlete, MontoDev = item.MontoDev, Totklu = item.Totklu, Anulada = item.Anulada, Impresa = item.Impresa, Iva = item.Iva, IvaDev = item.IvaDev, Feccom = item.Feccom, Numcom = item.Numcom, Tasa = item.Tasa, Moneda = item.Moneda, DisCen = DisCen, Vuelto = item.Vuelto, Seriales = item.Seriales, Tasag = item.Tasag, Tasag10 = item.Tasag10, Tasag20 = item.Tasag20, Campo1 = item.Campo1, Campo2 = item.Campo2, Campo3 = item.Campo3, Campo4 = item.Campo4, Campo5 = item.Campo5, Campo6 = item.Campo6, Campo7 = item.Campo7, Campo8 = item.Campo8, CoUsIn = item.CoUsIn, FeUsIn = item.FeUsIn, CoUsMo = item.CoUsMo, FeUsMo = item.FeUsMo, CoUsEl = item.CoUsEl, FeUsEl = item.FeUsEl, Revisado = item.Revisado, Trasnfe = item.Trasnfe, Numcon = numeroControl, CoSucu = item.CoSucu, Rowguid = item.Rowguid, MonIlc = item.MonIlc, Otros1 = item.Otros1, Otros2 = item.Otros2, Otros3 = item.Otros3, NumTurno = item.NumTurno, Aux01 = item.Aux01, Aux02 = item.Aux02, Id = item.Id, Salestax = item.Salestax, Origen = item.Origen, OrigenD = item.OrigenD, StaProd = item.StaProd, FecReg = item.FecReg, Impfis = item.Impfis, Impfisfac = item.Impfisfac, ImpNroZ = item.ImpNroZ, VenTer = item.VenTer, Ptovta = item.Ptovta, Telefono = item.Telefono #endregion }; db.Factura.Add(factura); db.SaveChanges(); #endregion #region Renglones factura List <RengFac> Renglones = new List <RengFac>(); foreach (var d in item.DetaFacturaVenta) { RengFac reng_fac = new RengFac { #region Detalle de reng_fac FactNum = numeroFactura, RengNum = d.RengNum, DisCen = d.DisCen, TipoDoc = d.TipoDoc, RengDoc = d.RengDoc, NumDoc = d.NumDoc, CoArt = d.CoArt, CoAlma = d.CoAlma, TotalArt = d.TotalArt, StotalArt = d.StotalArt, Pendiente = d.Pendiente, UniVenta = d.UniVenta, PrecVta = d.PrecVta, PorcDesc = d.PorcDesc, TipoImp = d.TipoImp, Isv = d.Isv, RengNeto = d.RengNeto, CosProUn = d.CosProUn, UltCosUn = d.UltCosUn, UltCosOm = d.UltCosOm, CosProOm = d.CosProOm, TotalDev = d.TotalDev, MontoDev = d.MontoDev, PrecVta2 = d.PrecVta2, Anulado = d.Anulado, DesArt = d.DesArt, Seleccion = d.Seleccion, CantImp = d.CantImp, Comentario = d.Comentario, Rowguid = d.Rowguid, TotalUni = d.TotalUni, MonIlc = d.MonIlc, Otros = d.Otros, NroLote = d.NroLote, FecLote = d.FecLote, Pendiente2 = d.Pendiente2, TipoDoc2 = d.TipoDoc2, RengDoc2 = d.RengDoc2, NumDoc2 = d.NumDoc2, TipoPrec = d.TipoPrec, CoAlma2 = d.CoAlma2, Aux01 = d.Aux01, Aux02 = d.Aux02, CantProd = d.CantProd, ImpProd = d.ImpProd #endregion }; Renglones.Add(reng_fac); } foreach (var i in Renglones) { #region Actualizacion de stock utilitarios.ActualizarStockArticuloAlmacen(i.CoArt, i.CoAlma, i.TotalArt, false, empresaDB); #endregion db.Entry(i).State = EntityState.Added; } db.SaveChanges(); #endregion #region Documento de venta DocumCc documento = new DocumCc { TipoDoc = "FACT", NroDoc = numeroFactura, Aut = true, CoCli = item.CoCli, Contrib = item.Contrib, FecEmis = item.FecEmis, FecVenc = item.FecVenc, Observa = item.Descrip, CoVen = item.CoVen, Tipo = "1", Tasa = item.Tasa, Moneda = item.Moneda, MontoImp = item.Iva, MontoBru = (decimal)item.TotBruto, MontoNet = (decimal)item.TotNeto, Saldo = item.Saldo, Feccom = item.Feccom, DisCen = DisCen, CoUsIn = item.CoUsIn, FeUsIn = item.FeUsIn, Numcon = numeroControl, CoSucu = item.CoSucu }; //db.DocumCc.Add(documento); db.Entry(documento).State = EntityState.Added; db.SaveChanges(); #endregion #region Actualizar consecutivo utilitarios.ActualizarConsecutivo(numeroFactura, "FACT", item.CoSucu, empresaDB); #endregion #region Actualizar nro control utilitarios.ActualizarNroControl(numeroControl, item.CoSucu, empresaDB); #endregion return(new Response { Status = "OK", Message = "Transacción realizada con éxito.", FacturaID = numeroFactura.ToString(), ControlID = numeroControl }); } else { throw new ArgumentException("No se encontró el correlativo configurado para 'FACT'."); } } catch (Exception ex) { return(new Response { Status = "ERROR", Message = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message }); } }