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));
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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
                });
            }
        }