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 }); } }
public Response Save(EncabAjuste item, string empresaDB) { try { Utilitarios utilitarios = new Utilitarios(); using var db = new ProfitAdmin2K8(conn.GetDbContextOptions(empresaDB)); #region Validar ajuste ValidarAjuste(item, empresaDB); #endregion #region Buscar consecutivo int numeroAjuste = utilitarios.BuscarConsecutivo("AJUS", item.CoSucu, empresaDB); #endregion if (numeroAjuste > 0) { db.Entry(new Ajuste { #region Campos AjueNum = numeroAjuste, Fecha = item.Fecha, Motivo = item.Motivo, Total = item.Total, Seriales = item.Seriales, Feccom = item.Feccom, Numcom = item.Numcom, Tasa = item.Tasa, Moneda = item.Moneda, DisCen = item.DisCen, 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, CoSucu = item.CoSucu, Rowguid = item.Rowguid, Anulada = item.Anulada, Aux01 = item.Aux01, Aux02 = item.Aux02, Produccion = item.Produccion, ImpNum = item.ImpNum, FactNum = item.FactNum #endregion }).State = EntityState.Added; foreach (var iAjusteReng in item.DetaAjuste) { db.Entry(new RengAju { #region Campos AjueNum = numeroAjuste, RengNum = iAjusteReng.RengNum, DisCen = iAjusteReng.DisCen, Tipo = iAjusteReng.Tipo, CoArt = iAjusteReng.CoArt, TotalArt = iAjusteReng.TotalArt, UniCompra = iAjusteReng.UniCompra, StotalArt = iAjusteReng.StotalArt, SuniCompr = iAjusteReng.SuniCompr, CoAlma = iAjusteReng.CoAlma, CostUnitOm = iAjusteReng.CostUnitOm, CostUnit = iAjusteReng.CostUnit, Feccom = iAjusteReng.Feccom, Numcom = iAjusteReng.Numcom, UniVenta = iAjusteReng.UniVenta, SuniVenta = iAjusteReng.SuniVenta, CosProUn = iAjusteReng.CosProUn, UltCosOm = iAjusteReng.UltCosOm, CosProOm = iAjusteReng.CosProOm, Rowguid = iAjusteReng.Rowguid, TotalUni = iAjusteReng.TotalUni, NroLote = iAjusteReng.NroLote, FecLote = iAjusteReng.FecLote, Pendiente2 = iAjusteReng.Pendiente2, TipoDoc2 = iAjusteReng.TipoDoc2, RengDoc2 = iAjusteReng.RengDoc2, NumDoc2 = iAjusteReng.NumDoc2, Aux01 = iAjusteReng.Aux01, Aux02 = iAjusteReng.Aux02, MoCant = iAjusteReng.MoCant, GfCant = iAjusteReng.GfCant, MoCantOm = iAjusteReng.MoCantOm, GfCantOm = iAjusteReng.GfCantOm, Produccion = iAjusteReng.Produccion #endregion }).State = EntityState.Added; #region Actualización de stock #region Saber si el tipo de ajuste del renglon es de entrada o salida. var TipoAjuste = db.TipoAju.FirstOrDefault(t => t.CoTipo.Trim() == iAjusteReng.Tipo.Trim()).TipoTrans; #endregion utilitarios.ActualizarStockArticuloAlmacen(iAjusteReng.CoArt, iAjusteReng.CoAlma, iAjusteReng.TotalArt, (TipoAjuste == "E"), empresaDB); #endregion #region Actualización de costos en articulo #region Valor de la tasa OM parametrizada. decimal tasa = db.Moneda.FirstOrDefault(m => m.CoMone.Trim() == db.ParEmp.FirstOrDefault().MoneArt.Trim()).Cambio; #endregion Art art = db.Art.FirstOrDefault(a => a.CoArt.Trim() == iAjusteReng.CoArt.Trim()); art.CosProUn = iAjusteReng.CostUnit; art.FecCosPr = DateTime.Now; art.CosProOm = iAjusteReng.CostUnit / tasa; art.FecProOm = DateTime.Now; art.CosUnAn = art.UltCosUn; art.FecCosAn = art.FecUltCo; art.UltCosUn = iAjusteReng.CostUnit; art.FecUltCo = DateTime.Now; art.UltCosDo = art.UltCosOm; art.FecCosDo = art.FecUltOm; art.UltCosOm = iAjusteReng.CostUnit / tasa; art.FecUltOm = DateTime.Now; art.CoUsMo = item.CoUsMo; art.FeUsMo = DateTime.Now; db.Entry(art).State = EntityState.Modified; #endregion } db.SaveChanges(); #region Actualizacion de consecutivo utilitarios.ActualizarConsecutivo(numeroAjuste, "AJUS", item.CoSucu, empresaDB); #endregion return(new Response { Status = "OK", Message = "Transacción realizada con éxito." }); } else { throw new ArgumentException("No se encontró el correlativo configurado para 'AJUS'."); } } catch (Exception ex) { return(new Response { Status = "ERROR", Message = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message }); } }
public Response Save(EncabNotRec item, string empresaDB) { try { using var db = new ProfitAdmin2K8(conn.GetDbContextOptions(empresaDB)); Utilitarios utilitarios = new Utilitarios(); #region Buscar consecutivo var numeroNRecepcion = utilitarios.BuscarConsecutivo("NREC", item.CoSucu, empresaDB); #endregion if (numeroNRecepcion > 0) { #region Calcular exento para el DisCen decimal TotalExento = (decimal)(from exento in item.DetaNotaRecepcion where exento.TipoImp == "6" select exento).Sum(t => t.RengNeto); #endregion #region Construcción de DisCen string DisCen = utilitarios.ArmarDisCen(item.FecEmis, (decimal)item.TotBruto, item.Iva, TotalExento, empresaDB); #endregion #region Encabezado factura NotRec NotaRec = new NotRec { #region Campos FactNum = numeroNRecepcion, Factura = item.Factura, Contrib = item.Contrib, DisCen = item.DisCen, Nombre = item.Nombre, Rif = item.Rif, Nit = item.Nit, 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.PorcGdesc, 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, CtaContab = item.CtaContab, 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, CoSucu = item.CoSucu, Rowguid = item.Rowguid, MonIlc = item.MonIlc, Otros1 = item.Otros1, Otros2 = item.Otros2, Otros3 = item.Otros3, Aux01 = item.Aux01, Aux02 = item.Aux02, Salestax = item.Salestax, Origen = item.Origen, OrigenD = item.OrigenD, StaProd = item.StaProd, Telefono = item.Telefono #endregion }; db.Entry(NotaRec).State = EntityState.Added; #endregion #region Renglones List <RengNdr> Renglones = new List <RengNdr>(); foreach (var i in item.DetaNotaRecepcion) { RengNdr reng_ndr = new RengNdr { #region Campos FactNum = numeroNRecepcion, RengNum = i.RengNum, DisCen = i.DisCen, TipoDoc = i.TipoDoc, RengDoc = i.RengDoc, NumDoc = i.NumDoc, CoArt = i.CoArt, CoAlma = i.CoAlma, TotalArt = i.TotalArt, StotalArt = i.StotalArt, Pendiente = i.Pendiente, UniVenta = i.UniVenta, PrecVta = i.PrecVta, PorcDesc = i.PorcDesc, TipoImp = i.TipoImp, RengNeto = i.RengNeto, CosProUn = i.CosProUn, UltCosUn = i.UltCosUn, UltCosOm = i.UltCosOm, CosProOm = i.CosProOm, TotalDev = i.TotalDev, MontoDev = i.MontoDev, PrecVta2 = i.PrecVta2, Anulado = i.Anulado, DesArt = i.DesArt, Seleccion = i.Seleccion, CantImp = i.CantImp, Comentario = i.Comentario, Rowguid = i.Rowguid, TotalUni = i.TotalUni, MonIlc = i.MonIlc, Otros = i.Otros, NroLote = i.NroLote, FecLote = i.FecLote, Pendiente2 = i.Pendiente2, TipoDoc2 = i.TipoDoc2, RengDoc2 = i.RengDoc2, NumDoc2 = i.NumDoc2, CoAlma2 = i.CoAlma2, Aux01 = i.Aux01, Aux02 = i.Aux02, CantProd = i.CantProd, ImpProd = i.ImpProd #endregion }; Renglones.Add(reng_ndr); } #region Actualizacion de stock foreach (var i in Renglones) { utilitarios.ActualizarStockArticuloAlmacen(i.CoArt, i.CoAlma, i.TotalArt, true, empresaDB); db.Entry(i).State = EntityState.Added; #region Actualización de costos en articulo #region Valor de la tasa OM parametrizada. decimal tasa = db.Moneda.FirstOrDefault(m => m.CoMone.Trim() == db.ParEmp.FirstOrDefault().MoneArt.Trim()).Cambio; #endregion Art art = db.Art.FirstOrDefault(a => a.CoArt.Trim() == i.CoArt.Trim()); art.CosUnAn = art.UltCosUn; art.FecCosAn = art.FecUltCo; art.UltCosUn = i.PrecVta; art.FecUltCo = DateTime.Now; art.UltCosDo = art.UltCosOm; art.FecCosDo = art.FecUltOm; art.UltCosOm = i.PrecVta / tasa; art.FecUltOm = DateTime.Now; art.CosProUn = i.PrecVta; art.FecCosPr = DateTime.Now; art.CosProOm = i.PrecVta / tasa; art.FecProOm = DateTime.Now; art.CoUsMo = item.CoUsMo; art.FeUsMo = DateTime.Now; db.Entry(art).State = EntityState.Modified; #endregion } #endregion #endregion db.SaveChanges(); #region Actualizar consecutivo utilitarios.ActualizarConsecutivo(numeroNRecepcion, "NREC", item.CoSucu, empresaDB); #endregion return(new Response { Status = "OK", Message = "Transacción realizada con éxito.", FacturaID = numeroNRecepcion.ToString() }); } else { throw new ArgumentException("No se encontró el correlativo configurado para 'NREC'."); } } catch (Exception ex) { return(new Response { Status = "ERROR", Message = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message }); } }
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 }); } }
public Response Save(EncabDevolucionVenta item, string empresaDB) { try { using var db = new ProfitAdmin2K8(conn.GetDbContextOptions(empresaDB)); Utilitarios utilitarios = new Utilitarios(); #region Validar devolucion ValidarDevolucion(item, empresaDB); #endregion #region Buscar consecutivos int numeroDevo = utilitarios.BuscarConsecutivo("DEVO", item.CoSucu, empresaDB); int numeroNCR = utilitarios.BuscarConsecutivo("N/CR", item.CoSucu, empresaDB); var numeroControl = utilitarios.BuscarNroControl(item.CoSucu, empresaDB); #endregion if (numeroDevo > 0) { #region Nota de credito #region Calcular exento para el DisCen decimal TotalExento = (from exento in item.DetaDevolucionVenta where exento.TipoImp == "6" select exento).Sum(t => t.RengNeto); #endregion #region Construcción de DisCen string DisCen = utilitarios.ArmarDisCen(item.FecEmis, (decimal)item.TotBruto, item.Iva, TotalExento, empresaDB); #endregion #region Creando N/CR Response ncr = new DocumentosVentasRepositorio() .Save(new DocumCc { #region Campos Numcon = numeroControl, CoCli = item.CoCli, Contrib = cliente.Contribu, NroDoc = 0, TipoDoc = "N/CR", Moneda = item.Moneda, CoVen = item.CoVen, FeUsIn = item.FeUsIn, FeUsMo = item.FeUsMo, FeUsEl = item.FeUsEl, CoSucu = item.CoSucu, Tipo = "1", FecEmis = DateTime.Now, FecVenc = DateTime.Now, MontoImp = item.Iva, Observa = $"Devol. Asoc:Fact No.{factura.FactNum}.", MontoBru = (decimal)item.TotBruto, Recargo = string.Empty, MontoNet = (decimal)item.TotNeto, DocOrig = "DEVO", NroOrig = numeroDevo, Tasa = item.Tasa, Saldo = (decimal)item.TotNeto, Salestax = string.Empty, Aut = true, CoUsIn = item.CoUsIn, CoUsMo = item.CoUsMo, CoUsEl = item.CoUsEl, Feccom = DateTime.Now #endregion }, empresaDB); #endregion #endregion #region Cancelacion automatica de la devolución if (ncr.Status == "OK") { #region Guardar cobro Response cobroresult = new CobrosRepositorio() .Save(new EncabCobro { #region Campos cobro CobNum = 0, Recibo = string.Empty, CoCli = item.CoCli, CoVen = item.CoVen, FecCob = DateTime.Now, Feccom = DateTime.Now, Tasa = item.Tasa, Moneda = item.Moneda, CoUsIn = item.CoUsIn, FeUsIn = item.FeUsIn, CoUsMo = item.CoUsMo, FeUsMo = item.FeUsMo, CoUsEl = item.CoUsEl, FeUsEl = item.FeUsEl, CoSucu = item.CoSucu, Descrip = $"Cobro generado por la Devolución Nro. {numeroDevo}", NumDev = numeroDevo, DetaCobro = new List <DetaCobro> { new DetaCobro { #region Renglon factura CobNum = 0, RengNum = 1, TpDocCob = "FACT", DocNum = factura.FactNum, Neto = (decimal)factura.TotNeto, MontCob = (decimal)factura.TotNeto, Isv = (decimal)factura.Iva, Moneda = item.Moneda, Tasa = item.Tasa, FecEmis = DateTime.Now, FecVenc = DateTime.Now #endregion }, new DetaCobro { #region Renglon nota de crédito CobNum = 0, RengNum = 2, TpDocCob = "N/CR", DocNum = numeroNCR, Neto = (decimal)item.TotNeto, MontCob = (decimal)item.TotNeto, Isv = (decimal)item.Iva, Moneda = item.Moneda, Tasa = item.Tasa, FecEmis = DateTime.Now, FecVenc = DateTime.Now #endregion } }, FormaPagoCobro = new List <FormaPagoCobro> { new FormaPagoCobro { #region Campos CobNum = 0, RengNum = 1, TipCob = "EFEC", Movi = 0, Moneda = item.Moneda, CodCaja = caja.CodCaja, DesCaja = caja.Descrip, FecCheq = DateTime.Now, Banco = "DEVO" // F**k you... #endregion } } #endregion }, empresaDB); #endregion #region Actualizar saldo factura y documento (FACT) if (cobroresult.Status == "OK") { item.NumCob = Convert.ToInt32(cobroresult.FacturaID); //;-) factura.CoUsMo = item.CoUsMo; factura.FeUsMo = item.FeUsMo; factura.Saldo -= (decimal)item.TotNeto; #region Detalle de factura y stock foreach (var iRengDev in item.DetaDevolucionVenta) { #region Monto devuelto en rengfac factura.DetaFacturaVenta.FirstOrDefault(d => d.FactNum == iRengDev.NumDoc && d.RengNum == iRengDev.RengDoc).TotalDev += iRengDev.TotalArt; #endregion #region actualización de stock utilitarios.ActualizarStockArticuloAlmacen(iRengDev.CoArt, iRengDev.CoAlma, iRengDev.TotalArt, true, empresaDB); #endregion } #endregion Response factresult = new FacturasVentasRepositorio().Update(factura, empresaDB); } else { throw new ArgumentException(cobroresult.Message); } #endregion } else { throw new ArgumentException(ncr.Message); } #endregion #region Devolucion List <RengDvc> RengDvcs = new List <RengDvc>(); db.Entry(new DevCli { #region Campos FactNum = numeroDevo, Contrib = item.Contrib, Nombre = item.Nombre, Rif = item.Rif, Nit = item.Nit, NumControl = item.NumControl, Status = item.Status, Comentario = "<Forma Pago: Efectivo>", 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.PorcGdesc, 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, NcNum = numeroNCR, // ;-) 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, NumCob = item.NumCob, //;-) MovCaj = item.MovCaj, MovBan = item.MovBan, SaldoNcr = item.SaldoNcr, NumTurno = item.NumTurno, Aux01 = item.Aux01, Aux02 = item.Aux02, Salestax = item.Salestax, Origen = item.Origen, OrigenD = item.OrigenD, StaProd = item.StaProd, Telefono = item.Telefono #endregion }).State = EntityState.Added; foreach (var i in item.DetaDevolucionVenta) { RengDvc reng = new RengDvc { #region Campos FactNum = numeroDevo, RengNum = i.RengNum, TipoDoc = i.TipoDoc, RengDoc = i.RengDoc, NumDoc = i.NumDoc, CoArt = i.CoArt, CoAlma = i.CoAlma, TotalArt = i.TotalArt, StotalArt = i.StotalArt, Pendiente = i.Pendiente, UniVenta = i.UniVenta, PrecVta = i.PrecVta, PorcDesc = i.PorcDesc, TipoImp = i.TipoImp, RengNeto = i.RengNeto, CosProUn = i.CosProUn, UltCosUn = i.UltCosUn, UltCosOm = i.UltCosOm, CosProOm = i.CosProOm, PrecVta2 = i.PrecVta2, DesArt = i.DesArt, Comentario = i.Comentario, TotalUni = i.TotalUni, MonIlc = i.MonIlc, Otros = i.Otros, NroLote = i.NroLote, FecLote = i.FecLote, TipoPrec = i.TipoPrec, CoAlma2 = i.CoAlma2, Aux01 = i.Aux01, Aux02 = i.Aux02 #endregion }; db.Entry(reng).State = EntityState.Added; } db.SaveChanges(); #endregion #region Actualización de consecutivos utilitarios.ActualizarConsecutivo(numeroDevo, "DEVO", item.CoSucu, empresaDB); utilitarios.ActualizarConsecutivo(numeroNCR, "N/CR", item.CoSucu, empresaDB); #endregion } else { throw new ArgumentException("No se encontró el correlativo configurado para 'DEVO'."); } return(new Response { Status = "OK", Message = "Transacción realizada con éxito." }); } catch (Exception ex) { return(new Response { Status = "ERROR", Message = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message }); } }