예제 #1
0
    public static TipoOrigen RetornaTipoReceptor(QuickReceptorModel Prestador)
    {
        var ReturnValues = new TipoOrigen();

        if (Prestador != null && Prestador.tipoReceptor == "PR")
        {
            ReturnValues = TipoOrigen.Compra;
        }
        else if (Prestador != null && Prestador.tipoReceptor == "CL")
        {
            ReturnValues = TipoOrigen.Venta;
        }
        else if (Prestador != null && Prestador.tipoReceptor == "P")
        {
            ReturnValues = TipoOrigen.Remuneraciones;
        }
        else if (Prestador != null && Prestador.tipoReceptor == "H")
        {
            ReturnValues = TipoOrigen.Honorario;
        }
        else
        {
            ReturnValues = TipoOrigen.Otros;
        }

        return(ReturnValues);
    }
예제 #2
0
    public static QuickReceptorModel GetReceptorByIDandEmisor(string UserID, QuickEmisorModel _emisor, int IDReceptor)
    {
        QuickReceptorModel objReceptor = null;
        FacturaPoliContext db          = ParseExtensions.GetDatabaseContext(UserID);
        IQueryable <QuickReceptorModel> objQueryable = db.Receptores.Where(r => r.QuickEmisorModelID == _emisor.QuickEmisorModelID);

        //List<QuickReceptorModel> lstReceptarTryTest = objQueryable.Where(r => r.QuickReceptorModelID == IDReceptor).ToList();

        objReceptor = objQueryable.SingleOrDefault(r => r.QuickReceptorModelID == IDReceptor);

        return(objReceptor);
    }
예제 #3
0
    public static QuickReceptorModel ObtenerPrestadorSiExiste(string Rut, FacturaPoliContext db, ClientesContablesModel ObjCliente)
    {
        var Receptor = new QuickReceptorModel();

        if (!string.IsNullOrWhiteSpace(Rut))
        {
            Receptor = db.Receptores.FirstOrDefault(x => x.RUT == Rut && x.ClientesContablesModelID == ObjCliente.ClientesContablesModelID && x.tipoReceptor == "PR" ||
                                                    x.RUT == Rut && x.ClientesContablesModelID == ObjCliente.ClientesContablesModelID && x.tipoReceptor == "P" ||
                                                    x.RUT == Rut && x.ClientesContablesModelID == ObjCliente.ClientesContablesModelID && x.tipoReceptor == "H" ||
                                                    x.RUT == Rut && x.ClientesContablesModelID == ObjCliente.ClientesContablesModelID && x.tipoReceptor == "CL");
        }
        else
        {
            return(null);
        }

        return(Receptor);
    }
    public static List <LibroHonorariosDeTerceros> ProcesarLibroHonorariosTerceros(FacturaPoliContext db, ClientesContablesModel ObjCliente, QuickEmisorModel EstaEmpresa, List <string[]> BoletasNoProcesadas, string FechaContabilizacion)
    {
        BoletasNoProcesadas.RemoveRange(0, 8);
        int NumeroFinal = BoletasNoProcesadas.Count();                      //Arreglo para simular los elementos de un array partiendo del 0
        int IndexElementosNoDeseados     = BoletasNoProcesadas.Count() - 3; //Arreglo para simular los elementos de un array partiendo del 0
        int CantidadDeElementosAeliminar = NumeroFinal - IndexElementosNoDeseados;

        BoletasNoProcesadas.RemoveRange(IndexElementosNoDeseados, CantidadDeElementosAeliminar);

        List <LibroHonorariosDeTerceros> ListaARetornar = new List <LibroHonorariosDeTerceros>();

        string TipoReceptor = "H";
        List <LibroHonorariosDeTerceros> SinRepetidos = new List <LibroHonorariosDeTerceros>();

        foreach (string[] ColumnaBoleta in BoletasNoProcesadas)
        {
            LibroHonorariosDeTerceros VerificadorLibroHonorTercero = new LibroHonorariosDeTerceros();

            DateTime FechaConta      = ParseExtensions.ToDD_MM_AAAA_Multi(FechaContabilizacion);
            DateTime FechaInicial    = ParseExtensions.ToDD_MM_AAAA_Multi(ColumnaBoleta[2]);
            DateTime FechaFinal      = ParseExtensions.ToDD_MM_AAAA_Multi(ColumnaBoleta[5]);
            int      Folio           = Convert.ToInt32(ColumnaBoleta[0]);
            string   Estado          = ColumnaBoleta[1].Trim();
            string   RutPrestador    = ColumnaBoleta[6].Trim();
            string   NombrePrestador = ColumnaBoleta[7].Trim();
            decimal  Bruto           = Convert.ToDecimal(ColumnaBoleta[8].Replace(".", ""));
            decimal  Retenido        = Convert.ToDecimal(ColumnaBoleta[9].Replace(".", ""));
            decimal  Pagado          = Convert.ToDecimal(ColumnaBoleta[10].Replace(".", ""));

            SinRepetidos = db.DBLibroHonorariosTerceros.Where(x => x.ClienteContable.ClientesContablesModelID == ObjCliente.ClientesContablesModelID &&
                                                              x.NumOFolio == Folio &&
                                                              x.Receptor.RUT == RutPrestador &&
                                                              x.HaSidoConvertidoAVoucher == true &&
                                                              x.TipoLibro == TipoCentralizacion.Honorarios).ToList();

            List <VoucherModel> EstaVigenteEncontrado = new List <VoucherModel>();
            VoucherModel        VoucherEncontrado     = new VoucherModel();

            if (SinRepetidos != null || SinRepetidos.Count() > 0)
            {
                foreach (var ItemRepetido in SinRepetidos)
                {
                    VoucherEncontrado = db.DBVoucher.SingleOrDefault(x => x.VoucherModelID == ItemRepetido.VoucherModel.VoucherModelID);

                    if (VoucherEncontrado.DadoDeBaja == false)
                    {
                        EstaVigenteEncontrado.Add(VoucherEncontrado);
                    }
                }
            }

            if (SinRepetidos.Count() > 0 && SinRepetidos != null && EstaVigenteEncontrado.Count() > 0)
            {
                continue;
            }

            if (Estado == "VIGENTE")
            {
                VerificadorLibroHonorTercero.FechaContabilizacion = FechaConta;
                VerificadorLibroHonorTercero.Estado          = Estado;
                VerificadorLibroHonorTercero.ClienteContable = ObjCliente;
                VerificadorLibroHonorTercero.NumOFolio       = Folio;
                VerificadorLibroHonorTercero.FechaInicial    = FechaInicial;
                VerificadorLibroHonorTercero.RutEmpresa      = EstaEmpresa.RUTEmpresa;
                VerificadorLibroHonorTercero.NombreEmpresa   = EstaEmpresa.RazonSocial;
                VerificadorLibroHonorTercero.FechaFinal      = FechaFinal;
                VerificadorLibroHonorTercero.RutReceptor     = RutPrestador;
                VerificadorLibroHonorTercero.NombreReceptor  = NombrePrestador;
                VerificadorLibroHonorTercero.Brutos          = Bruto;
                VerificadorLibroHonorTercero.Retenidos       = Retenido;
                VerificadorLibroHonorTercero.Pagado          = Pagado;

                QuickReceptorModel objPrestador = QuickReceptorModel.CrearOActualizarPrestadorPorRut(VerificadorLibroHonorTercero.RutReceptor, VerificadorLibroHonorTercero.NombreReceptor, ObjCliente, db, TipoReceptor);
                VerificadorLibroHonorTercero.Receptor = objPrestador;

                ListaARetornar.Add(VerificadorLibroHonorTercero);
            }
        }
        if (ListaARetornar.Count() > 0 && SinRepetidos.Count() == 0)
        {
            db.DBLibroHonorariosTerceros.AddRange(ListaARetornar);
            db.SaveChanges();
        }

        return(ListaARetornar);
    }
    //Queda pendiente crear este mismo metodo pero generico para reutilizar.
    //public static List<ObjCartolaYVouchers> ConvertirAObjetoCartola(HttpPostedFileBase file)
    //{
    //    List<ObjCartolaYVouchers> ReturnValues = new List<ObjCartolaYVouchers>();

    //    if (file == null || file.ContentLength == 0)
    //    {
    //        string Error = "Error Excel Vacio";
    //    }
    //    else
    //    {
    //        if (file.FileName.EndsWith("xls") || file.FileName.EndsWith("xlsx"))
    //        {
    //            string path = ParseExtensions.Get_Temp_path(file.FileName); // Le indicamos la ruta donde guardará el excel.

    //            if (File.Exists(path))
    //            {
    //                File.Delete(path); //Si ya existe lo elimina.
    //            }
    //            file.SaveAs(path); //Guardamos momentaneamente el fichero. -> La idea es extraer su información y luego eliminarlo.

    //            Application application = new Application();
    //            Workbook workBook = application.Workbooks.Open(path);
    //            Worksheet worksheet = workBook.ActiveSheet;
    //            Range range = worksheet.UsedRange;

    //            for (int row = 2; row <= range.Rows.Count; row++)
    //            {
    //                ObjCartolaYVouchers FilaAGuardar = new ObjCartolaYVouchers();

    //                FilaAGuardar.Fecha = ParseExtensions.ToDD_MM_AAAA_Multi(((Range)range.Cells[row, 1]).Text);
    //                FilaAGuardar.Docum = Convert.ToInt32(((Range)range.Cells[row, 2]).Text);
    //                FilaAGuardar.Detalle = ((Range)range.Cells[row, 3]).Text;
    //                FilaAGuardar.Debe = decimal.Parse(((Range)range.Cells[row, 4]).Text);
    //                FilaAGuardar.Haber = decimal.Parse(((Range)range.Cells[row, 5]).Text);
    //                FilaAGuardar.Saldo = decimal.Parse(((Range)range.Cells[row, 6]).Text);
    //                //Parte del voucher
    //                FilaAGuardar.CodigoInterno = ((Range)range.Cells[row, 7]).Text;
    //                FilaAGuardar.Rut = ((Range)range.Cells[row, 8]).Text;
    //                FilaAGuardar.Glosa = ((Range)range.Cells[row, 9]).Text;

    //                ReturnValues.Add(FilaAGuardar);
    //            }
    //            workBook.Close();
    //            File.Delete(path);
    //        }
    //    }

    //    return ReturnValues;
    //}

    public static Tuple <bool, List <ObjCartolaYVouchers> > ConvertirAVoucher(List <ObjCartolaYVouchers> LstCartolaYVouchers, ClientesContablesModel ObjCliente, FacturaPoliContext db, CuentaContableModel CuentaConsultada, string FechaCartola, int NumeroCartola)
    {
        bool Result = false;

        List <ObjCartolaYVouchers> LosQueNoPudieronInsertarse = new List <ObjCartolaYVouchers>();

        List <ObjCartolaYVouchers> LosQueTienenInformacion = LstCartolaYVouchers.Where(x => !string.IsNullOrWhiteSpace(x.CodigoInterno)).ToList();

        if (!LosQueTienenInformacion.Any())
        {
            throw new Exception("No hay registros validos para insertar.");
        }
        //Los que están en la cartola pero no en el mayor...
        List <ObjCartolaYVouchers> Pendientes = LstCartolaYVouchers.Where(x => string.IsNullOrWhiteSpace(x.CodigoInterno)).ToList();

        LosQueNoPudieronInsertarse.AddRange(Pendientes);

        List <CartolaBancariaModel> CartolaCompleta = new List <CartolaBancariaModel>();

        if (LstCartolaYVouchers.Any())
        {
            db.Configuration.AutoDetectChangesEnabled = false; //revisar como mejora la performance
            DateTime FechaConvertida = ParseExtensions.ToDD_MM_AAAA_Multi(FechaCartola);
            DeleteCartolaBancariaExistente(FechaConvertida, NumeroCartola, db, ObjCliente);
            List <CartolaBancariaModel> CartolaDetalle = new List <CartolaBancariaModel>();


            DateTime Fecha = LosQueTienenInformacion.FirstOrDefault().Fecha;
            int?     nullableProxVoucherNumber = ParseExtensions.GetNumVoucher(ObjCliente, db, Fecha.Month, Fecha.Year);
            int      baseNumberFolio           = nullableProxVoucherNumber.Value;

            List <VoucherModel> LstVoucher = new List <VoucherModel>();

            foreach (ObjCartolaYVouchers itemCartola in LosQueTienenInformacion)
            {
                CuentaContableModel CuentaAUsar   = UtilesContabilidad.CuentaContableDesdeCodInterno(itemCartola.CodigoInterno, ObjCliente);
                QuickReceptorModel  Prestador     = UtilesContabilidad.ObtenerPrestadorSiExiste(itemCartola.Rut, db, ObjCliente);
                TipoOrigen          TipoPrestador = UtilesContabilidad.RetornaTipoReceptor(Prestador);

                if (CuentaAUsar == null)
                {
                    throw new Exception($"La cuenta contable que intentas ingresar no está en el plan de cuentas O no está digitada en el excel CUENTA CONTABLE CON ERROR : {itemCartola.CodigoInterno}");
                }

                if (CuentaAUsar.TieneAuxiliar == 1 && Prestador != null || CuentaAUsar.TieneAuxiliar == 0 && Prestador == null)
                {
                    VoucherModel CapaVoucher = new VoucherModel();

                    CapaVoucher.TipoOrigenVoucher = TipoPrestador;

                    CapaVoucher.FechaEmision             = itemCartola.Fecha;
                    CapaVoucher.NumeroVoucher            = baseNumberFolio;
                    CapaVoucher.NumVoucherWithDate       = ParseExtensions.BuildNewFormatNumVoucher(baseNumberFolio, Fecha);
                    CapaVoucher.ClientesContablesModelID = ObjCliente.ClientesContablesModelID;
                    CapaVoucher.Glosa = itemCartola.Glosa;

                    if (itemCartola.Debe > 0 && itemCartola.Haber == 0)
                    {
                        CapaVoucher.Tipo = TipoVoucher.Ingreso;
                    }
                    else if (itemCartola.Haber > 0 && itemCartola.Debe == 0)
                    {
                        CapaVoucher.Tipo = TipoVoucher.Egreso;
                    }

                    //Armamos tabla Detalle Voucher
                    //1

                    List <DetalleVoucherModel> LstToEvaluate  = new List <DetalleVoucherModel>();
                    DetalleVoucherModel        DetalleCartola = new DetalleVoucherModel(); //cada linea es solo 1 monto
                    DetalleCartola.VoucherModelID    = CapaVoucher.VoucherModelID;
                    DetalleCartola.ObjCuentaContable = CuentaConsultada;
                    DetalleCartola.FechaDoc          = itemCartola.Fecha;
                    DetalleCartola.GlosaDetalle      = itemCartola.Glosa;

                    if (itemCartola.Debe > 0 && itemCartola.Haber == 0)
                    {
                        DetalleCartola.MontoDebe = itemCartola.Debe;
                    }
                    else if (itemCartola.Haber > 0 && itemCartola.Debe == 0)
                    {
                        DetalleCartola.MontoHaber = itemCartola.Haber;
                    }

                    //2
                    DetalleVoucherModel DetalleConciliacion = new DetalleVoucherModel();
                    DetalleConciliacion.VoucherModelID    = CapaVoucher.VoucherModelID;
                    DetalleConciliacion.FechaDoc          = itemCartola.Fecha;
                    DetalleConciliacion.ObjCuentaContable = CuentaAUsar;
                    DetalleConciliacion.GlosaDetalle      = itemCartola.Glosa;
                    if (DetalleCartola.MontoDebe > 0 && DetalleCartola.MontoHaber == 0)
                    {
                        DetalleConciliacion.MontoHaber = DetalleCartola.MontoDebe;
                    }
                    else if (DetalleCartola.MontoHaber > 0 && DetalleCartola.MontoDebe == 0)
                    {
                        DetalleConciliacion.MontoDebe = DetalleCartola.MontoHaber;
                    }

                    LstToEvaluate.Add(DetalleCartola);
                    LstToEvaluate.Add(DetalleConciliacion);

                    //Guardamos los detalles en una lista de detalles
                    if (LstToEvaluate.Sum(r => r.MontoDebe) == LstToEvaluate.Sum(r => r.MontoHaber))
                    {
                        foreach (DetalleVoucherModel itemDetalle in LstToEvaluate)
                        {
                            itemDetalle.Conciliado = true;
                        }

                        CapaVoucher.ListaDetalleVoucher = LstToEvaluate;
                        LstVoucher.Add(CapaVoucher);

                        if (CuentaAUsar.TieneAuxiliar == 1 && Prestador != null)
                        {
                            foreach (DetalleVoucherModel NuevoDetalleVoucher in LstToEvaluate)
                            {
                                if (NuevoDetalleVoucher.ObjCuentaContable == CuentaAUsar)
                                {
                                    CuentaContableModel CtaAux   = NuevoDetalleVoucher.ObjCuentaContable;
                                    AuxiliaresModel     Auxiliar = new AuxiliaresModel();
                                    Auxiliar.LineaNumeroDetalle = CapaVoucher.ListaDetalleVoucher.Count;
                                    Auxiliar.MontoTotal         = NuevoDetalleVoucher.MontoDebe + NuevoDetalleVoucher.MontoHaber;
                                    Auxiliar.objCtaContable     = CtaAux;

                                    NuevoDetalleVoucher.Auxiliar = Auxiliar;

                                    List <AuxiliaresDetalleModel> lstAuxDetalle   = new List <AuxiliaresDetalleModel>();
                                    AuxiliaresDetalleModel        nuevoAuxDetalle = new AuxiliaresDetalleModel();

                                    decimal MontoTotal = NuevoDetalleVoucher.MontoDebe + NuevoDetalleVoucher.MontoHaber;

                                    nuevoAuxDetalle.TipoDocumento         = itemCartola.TipoDteNumVoucher;
                                    nuevoAuxDetalle.Fecha                 = itemCartola.Fecha;
                                    nuevoAuxDetalle.FechaContabilizacion  = itemCartola.Fecha;
                                    nuevoAuxDetalle.Folio                 = itemCartola.Docum;
                                    nuevoAuxDetalle.Individuo2            = Prestador;
                                    nuevoAuxDetalle.MontoNetoLinea        = 0;
                                    nuevoAuxDetalle.MontoExentoLinea      = 0;
                                    nuevoAuxDetalle.MontoIVALinea         = 0;
                                    nuevoAuxDetalle.MontoTotalLinea       = MontoTotal;
                                    nuevoAuxDetalle.AuxiliaresModelID     = Auxiliar.AuxiliaresModelID;
                                    nuevoAuxDetalle.MontoIVANoRecuperable = 0;
                                    nuevoAuxDetalle.MontoIVAUsoComun      = 0;
                                    nuevoAuxDetalle.MontoIVAActivoFijo    = 0;

                                    if (CtaAux.TipoAuxiliarQueUtiliza == TipoAuxiliar.Honorarios)
                                    {
                                        nuevoAuxDetalle.ValorLiquido = MontoTotal;
                                    }

                                    lstAuxDetalle.Add(nuevoAuxDetalle);

                                    Auxiliar.ListaDetalleAuxiliares = lstAuxDetalle;
                                }
                            }
                        }

                        baseNumberFolio++;
                    }
                }
                else
                {
                    LosQueNoPudieronInsertarse.Add(itemCartola);
                }
            }

            List <DetalleVoucherModel> detalle = LstVoucher.SelectMany(x => x.ListaDetalleVoucher.Where(y => y.Auxiliar != null)).ToList();

            db.DBVoucher.AddRange(LstVoucher);
            db.SaveChanges();

            if (detalle.Any())
            {
                detalle.ForEach(x => { x.Auxiliar.DetalleVoucherModelID = x.DetalleVoucherModelID; });

                foreach (AuxiliaresModel itemAuxiliar in detalle.Select(x => x.Auxiliar).ToArray())
                {
                    db.Entry(itemAuxiliar).State = System.Data.Entity.EntityState.Modified;
                }
                db.SaveChanges();
            }

            CartolaDetalle = LstVoucher.SelectMany(x => x.ListaDetalleVoucher.Where(y => y.ObjCuentaContable.CuentaContableModelID == CuentaConsultada.CuentaContableModelID))
                             .Select(x => new CartolaBancariaModel {
                VoucherModelID        = x.VoucherModelID,
                Fecha                 = x.FechaDoc,
                Folio                 = x.Auxiliar != null ? x.Auxiliar.ListaDetalleAuxiliares.FirstOrDefault().Folio : 0,
                EstaConciliado        = true,
                Detalle               = x.GlosaDetalle,
                CuentaContableModelID = x.ObjCuentaContable,
                Debe  = x.MontoDebe,
                Haber = x.MontoHaber
            }).ToList();

            bool ResultadoInsercionCartolaBancaria = GuardarCartolaBancaria(CartolaDetalle, FechaCartola, NumeroCartola, CuentaConsultada, ObjCliente, db);
            Result = true;
        }
        else
        {
            throw new Exception("No hay registros para insertar.");
        }
        return(Tuple.Create(Result, LosQueNoPudieronInsertarse));
    }
예제 #6
0
    public static QuickReceptorModel CrearOActualizarPrestadorPorRut(string RUTPrestador, string NombrePrestador, ClientesContablesModel objCliente, String tipoReceptor)
    {
        FacturaProduccionContext db = new FacturaProduccionContext();
        int existe = db.Receptores.Where(r => r.RUT == RUTPrestador && r.QuickEmisorModelID == objCliente.QuickEmisorModelID && r.tipoReceptor == tipoReceptor && r.ClientesContablesModelID == objCliente.ClientesContablesModelID).Count();

        if (existe < 1)
        {
            QuickReceptorModel objPrestadores = new QuickReceptorModel();
            try
            {
                objPrestadores.QuickEmisorModelID = objCliente.QuickEmisorModelID;
                objPrestadores.RUT                      = RUTPrestador;
                objPrestadores.RazonSocial              = NombrePrestador;
                objPrestadores.tipoReceptor             = tipoReceptor;
                objPrestadores.Direccion                = "1";
                objPrestadores.Giro                     = "1";
                objPrestadores.ClientesContablesModelID = objCliente.ClientesContablesModelID;


                db.Receptores.Add(objPrestadores);

                db.SaveChanges();
            }
            catch (DbEntityValidationException e)
            {
                foreach (var eve in e.EntityValidationErrors)
                {
                    Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                      eve.Entry.Entity.GetType().Name, eve.Entry.State);
                    foreach (var ve in eve.ValidationErrors)
                    {
                        Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                          ve.PropertyName, ve.ErrorMessage);
                    }
                }
                throw;
            }


            //agrego filtro para saber que clientes tiene el cliente contable
            //int  clienteEmisor = db.DBClientesContablesEmisor.Where(r => objCliente.QuickEmisorModelID == r.QuickReceptorModelID && r.ClientesContablesModelID == objCliente.ParametrosCliente.ClientesContablesModelID).Count();
            //ClientesContablesEmisorModel clientesContablesEmisor = ((from t1 in db.DBClientesContablesEmisor
            //                                                         where t1.QuickReceptorModelID == objCliente.QuickEmisorModelID && t1.ClientesContablesModelID == objCliente.ClientesContablesModelID

            //                                                         select t1
            //                   ).FirstOrDefault());

            ClientesContablesEmisorModel clientesContablesEmisor = db.DBClientesContablesEmisor.Where(x => x.QuickReceptorModelID == objCliente.QuickEmisorModelID && x.ClientesContablesModelID == objCliente.ClientesContablesModelID).FirstOrDefault();

            if (clientesContablesEmisor == null)
            {
                ClientesContablesEmisorModel clienteEmisor2 = new ClientesContablesEmisorModel();
                clienteEmisor2.ClientesContablesModelID = objCliente.ClientesContablesModelID;
                clienteEmisor2.QuickReceptorModelID     = objCliente.QuickEmisorModelID;
                db.DBClientesContablesEmisor.Add(clienteEmisor2);
            }

            db.SaveChanges();
            return(objPrestadores);
        }
        else
        {
            QuickReceptorModel objPrestadores = db.Receptores.Where(r => r.RUT == RUTPrestador && r.QuickEmisorModelID == objCliente.QuickEmisorModelID && r.tipoReceptor == tipoReceptor).First();

            ClientesContablesEmisorModel clientesContablesEmisor = db.DBClientesContablesEmisor.Where(t1 => t1.QuickReceptorModelID == objCliente.QuickEmisorModelID && t1.ClientesContablesModelID == objCliente.ClientesContablesModelID).FirstOrDefault();



            // db.DBClientesContablesEmisor.Where(r => objCliente.QuickEmisorModelID == r.QuickReceptorModelID && r.ClientesContablesModelID == objCliente.ParametrosCliente.ClientesContablesModelID).Count();

            if (clientesContablesEmisor == null)
            {
                ClientesContablesEmisorModel clienteEmisor = new ClientesContablesEmisorModel();
                clienteEmisor.ClientesContablesModelID = objCliente.ClientesContablesModelID;
                clienteEmisor.QuickReceptorModelID     = objCliente.QuickEmisorModelID;
                db.DBClientesContablesEmisor.Add(clienteEmisor);
                db.SaveChanges();
            }

            if (objPrestadores.RazonSocial == NombrePrestador)
            {
                return(objPrestadores);
            }
            else
            {
                objPrestadores.RazonSocial = NombrePrestador;
                db.Receptores.AddOrUpdate(objPrestadores);
                db.SaveChanges();
                return(objPrestadores);
            }
        }
    }
예제 #7
0
        public static bool InsertBoletasCovLinq(ClientesContablesModel ObjCliente, List <BoletasExcelModel> BoletasItems, TipoCentralizacion Tipo, FacturaPoliContext db)
        {
            using (var dbTransaction = db.Database.BeginTransaction())
            {
                List <BoletasCoVModel> ListaBoletasHijo = new List <BoletasCoVModel>();

                CuentaContableModel CuentaIva = ParametrosClienteModel.GetCuentaContableIvaAUsarObj(ObjCliente, db); //cuenta Iva

                //Al importar un libro hay 2 opciones para saber si es compra o venta
                //1.- al momento de  importar  la intefaz grafica dirá que elija si es compra o venta
                //2.- la segunda forma es la siguiente -> tomar el primer registro y dependiendo de su centralización indicar si es compra o venta.
                //Ambas opciones pueden llegar a cometer errores por ende tener en cuenta esto para cuando el desarrollo ya esté avanzado

                decimal TotalNeto = 0;
                decimal TotalIva  = 0;

                TipoReceptor tipoReceptor = new TipoReceptor();

                if (Tipo == TipoCentralizacion.Compra)
                {
                    tipoReceptor = TipoReceptor.PR;
                }
                if (Tipo == TipoCentralizacion.Venta)
                {
                    tipoReceptor = TipoReceptor.CL;
                }


                DateTime Fecha = BoletasItems.FirstOrDefault().Fecha;
                int?     nullableProxVoucherNumber = ParseExtensions.GetNumVoucher(ObjCliente, db, Fecha.Month, Fecha.Year);
                int      baseNumberFolio           = nullableProxVoucherNumber.Value;

                List <BoletasExcelModel> LosQueNoPudieronInsertarse = new List <BoletasExcelModel>();
                List <VoucherModel>      LstVoucher = new List <VoucherModel>();
                //en el futuro hacer estas agrupaciones por día -> un voucher tendrá tantos registros como todos los que caigan en el mismo día (se sugiere hacer un group by con este criterio en el foreach)
                foreach (BoletasExcelModel ItemBoleta in BoletasItems)
                {
                    List <DetalleVoucherModel> detalleVoucher        = new List <DetalleVoucherModel>();
                    QuickReceptorModel         Receptor              = QuickReceptorModel.CrearOActualizarPrestadorPorRut(ItemBoleta.Rut, ItemBoleta.RazonSocial, ObjCliente, db, tipoReceptor.ToString());
                    CuentaContableModel        CuentaAuxiliar        = UtilesContabilidad.CuentaContableDesdeCodInterno(ItemBoleta.CuentaAuxiliar, ObjCliente); //CuentaAuxiliar
                    CuentaContableModel        CuentaProveedorDeudor = UtilesContabilidad.CuentaContableDesdeCodInterno(ItemBoleta.CuentaContable, ObjCliente); //Cuenta ProveedorDeudor

                    if (CuentaProveedorDeudor == null)
                    {
                        throw new Exception("La cuenta de proveedor deudor debe existir para este cliente contable");
                    }

                    //Cada uno de estos detallevouchers que se hará lleva la misma logica que los libros de compra que se insertan a día de hoy -> revisar la inserción de libros de compra y venta ya existente
                    VoucherModel NuevoVoucher = new VoucherModel();
                    NuevoVoucher.TipoOrigen               = Tipo == TipoCentralizacion.Compra ? "Compra" : "Venta";
                    NuevoVoucher.TipoOrigenVoucher        = Tipo == TipoCentralizacion.Compra ? TipoOrigen.Compra : TipoOrigen.Venta;
                    NuevoVoucher.ClientesContablesModelID = ObjCliente.ClientesContablesModelID;
                    NuevoVoucher.FechaEmision             = ItemBoleta.Fecha;
                    NuevoVoucher.Tipo               = TipoVoucher.Traspaso;
                    NuevoVoucher.NumeroVoucher      = baseNumberFolio;
                    NuevoVoucher.NumVoucherWithDate = ParseExtensions.BuildNewFormatNumVoucher(baseNumberFolio, Fecha);
                    string FullDescripcionDocOriginal = (int)ItemBoleta.TipoDocumento + " / Folio: " + ItemBoleta.NumeroDeDocumento + " / " + Receptor != null ? Receptor.NombreFantasia : "";
                    NuevoVoucher.Glosa = FullDescripcionDocOriginal;  //Revisar como debe ser creada la glosa es probable que se haga con la misma logica que con la importación de libros de compra y ventas

                    //Encerrar la logica de las compras y las ventas en otra función?

                    decimal             CostoNeto            = ItemBoleta.Neto;
                    decimal             MontoIva             = ItemBoleta.Iva;
                    decimal             MontoTotal           = ItemBoleta.Neto + ItemBoleta.Iva;
                    DetalleVoucherModel LineaCuentaCorriente = new DetalleVoucherModel();
                    DetalleVoucherModel LineaDetalleIva      = new DetalleVoucherModel();
                    DetalleVoucherModel LineaDetalleAuxiliar = new DetalleVoucherModel();

                    LineaCuentaCorriente.FechaDoc          = ItemBoleta.Fecha;
                    LineaCuentaCorriente.ObjCuentaContable = CuentaProveedorDeudor;
                    LineaCuentaCorriente.GlosaDetalle      = "Costo Neto" + FullDescripcionDocOriginal;

                    LineaDetalleIva.FechaDoc          = ItemBoleta.Fecha;
                    LineaDetalleIva.ObjCuentaContable = CuentaIva;
                    LineaDetalleIva.GlosaDetalle      = "Iva Compras" + FullDescripcionDocOriginal;

                    LineaDetalleAuxiliar.FechaDoc          = ItemBoleta.Fecha;
                    LineaDetalleAuxiliar.ObjCuentaContable = CuentaAuxiliar;
                    LineaDetalleAuxiliar.GlosaDetalle      = "";

                    if (ItemBoleta.TipoDocumento.EsUnaNotaCredito())
                    {
                        LineaCuentaCorriente.MontoDebe  = 0;
                        LineaCuentaCorriente.MontoHaber = CostoNeto;

                        LineaDetalleIva.MontoDebe  = 0;
                        LineaDetalleIva.MontoHaber = MontoIva;

                        LineaDetalleAuxiliar.MontoDebe  = MontoTotal;
                        LineaDetalleAuxiliar.MontoHaber = 0;
                    }
                    else
                    {
                        LineaCuentaCorriente.MontoDebe  = CostoNeto;
                        LineaCuentaCorriente.MontoHaber = 0;
                        //detalle voucher 2 -> Iva

                        LineaDetalleIva.MontoDebe  = MontoIva;
                        LineaDetalleIva.MontoHaber = 0;
                        //detalle voucher 3 -> Auxiliar}

                        LineaDetalleAuxiliar.MontoDebe  = 0;
                        LineaDetalleAuxiliar.MontoHaber = MontoTotal;
                    }

                    detalleVoucher.Add(LineaCuentaCorriente);
                    detalleVoucher.Add(LineaDetalleIva);
                    detalleVoucher.Add(LineaDetalleAuxiliar);

                    if (detalleVoucher.Sum(x => x.MontoDebe) == detalleVoucher.Sum(x => x.MontoHaber))
                    {
                        NuevoVoucher.ListaDetalleVoucher = detalleVoucher;

                        baseNumberFolio++;
                    }
                    else
                    {
                        LosQueNoPudieronInsertarse.Add(ItemBoleta);
                    }

                    //revisar si funciona  de esta manera
                    foreach (DetalleVoucherModel ItemDetalle in NuevoVoucher.ListaDetalleVoucher.Where(x => x.ObjCuentaContable == CuentaAuxiliar).ToList())
                    {
                        AuxiliaresModel     Auxiliar = new AuxiliaresModel();
                        CuentaContableModel CtaAux   = ItemDetalle.ObjCuentaContable;
                        Auxiliar.LineaNumeroDetalle = NuevoVoucher.ListaDetalleVoucher.Count;
                        Auxiliar.MontoTotal         = ItemDetalle.MontoDebe + ItemDetalle.MontoHaber;
                        Auxiliar.objCtaContable     = CtaAux;

                        ItemDetalle.Auxiliar = Auxiliar;
                        List <AuxiliaresDetalleModel> lstAuxDetalle   = new List <AuxiliaresDetalleModel>();
                        AuxiliaresDetalleModel        AuxiliarDetalle = new AuxiliaresDetalleModel();

                        decimal MontoTotalLinea = ItemDetalle.MontoDebe + ItemDetalle.MontoHaber;

                        AuxiliarDetalle.TipoDocumento         = ItemBoleta.TipoDocumento;
                        AuxiliarDetalle.Fecha                 = ItemBoleta.Fecha;
                        AuxiliarDetalle.FechaContabilizacion  = ItemBoleta.Fecha;
                        AuxiliarDetalle.Folio                 = ItemBoleta.NumeroDeDocumento;
                        AuxiliarDetalle.Individuo2            = Receptor;
                        AuxiliarDetalle.MontoNetoLinea        = 0;
                        AuxiliarDetalle.MontoExentoLinea      = 0;
                        AuxiliarDetalle.MontoIVALinea         = 0;
                        AuxiliarDetalle.MontoTotalLinea       = MontoTotalLinea;
                        AuxiliarDetalle.AuxiliaresModelID     = Auxiliar.AuxiliaresModelID;
                        AuxiliarDetalle.MontoIVANoRecuperable = 0;
                        AuxiliarDetalle.MontoIVAUsoComun      = 0;
                        AuxiliarDetalle.MontoIVAActivoFijo    = 0;

                        lstAuxDetalle.Add(AuxiliarDetalle);
                        Auxiliar.ListaDetalleAuxiliares = lstAuxDetalle;
                    }


                    //BaseNumFolio
                    List <DetalleVoucherModel> detalle = LstVoucher.SelectMany(x => x.ListaDetalleVoucher.Where(y => y.Auxiliar != null)).ToList();

                    db.DBVoucher.AddRange(LstVoucher);
                    db.SaveChanges();

                    if (detalle.Any())
                    {
                        detalle.ForEach(x => { x.Auxiliar.DetalleVoucherModelID = x.DetalleVoucherModelID; });

                        foreach (AuxiliaresModel itemAuxiliar in detalle.Select(x => x.Auxiliar).ToArray())
                        {
                            db.Entry(itemAuxiliar).State = System.Data.Entity.EntityState.Modified;
                        }
                        db.SaveChanges();
                    }
                }
            }


            return(false);
        }
예제 #8
0
        public static bool InsertBoletasCoV(ClientesContablesModel ObjCliente, List <BoletasExcelModel> BoletasItems, TipoCentralizacion Tipo)
        {
            bool result = false;


            using (IDbConnection db = new MySqlConnection(ConfigurationManager.ConnectionStrings["ProdConnection"].ConnectionString))
            {
                db.Open();
                using (var dbContextTransaction = db.BeginTransaction())
                {
                    //Obtener la información de cada hijo y insertar al final de la ejecución
                    List <BoletasCoVModel> ListaBoletasHijo = new List <BoletasCoVModel>();

                    //Recuerda tener la cuenta Auxiliar como prioritaria para crear los registros de los auxiliares.

                    decimal TotalNeto = 0;
                    decimal TotalIva  = 0;

                    TipoReceptor tipoReceptor = new TipoReceptor();


                    if (Tipo == TipoCentralizacion.Compra)
                    {
                        tipoReceptor = TipoReceptor.PR;
                    }
                    if (Tipo == TipoCentralizacion.Venta)
                    {
                        tipoReceptor = TipoReceptor.CL;
                    }

                    //esto debe ser insertado al final.


                    // HASTA AQUÍ ESTAMOS BIEN

                    //QuickReceptorModel.CrearOActualizarPrestadorPorRut(RutDupleDuple, RazonSocialDuple, objCliente, db, tipoReceptor);

                    int CuentaContableIDIvaAUsar = ParametrosClienteModel.GetCuentaContableIvaAUsar(ObjCliente);
                    //Son 3 detalles, este pertenece a la que contenga el iva

                    foreach (BoletasExcelModel ItemBoleta in BoletasItems)
                    {
                        List <DetalleVoucherModelDTO> detalleVoucher = new List <DetalleVoucherModelDTO>();

                        QuickReceptorModel Receptor = QuickReceptorModel.CrearOActualizarPrestadorPorRut(ItemBoleta.Rut, ItemBoleta.RazonSocial, ObjCliente, tipoReceptor.ToString());

                        int CuentaContableSeleccionada = 0;



                        string QueryCuentaContableAuxiliar = $"SELECT CuentaContableModelID FROM CuentaContableModel WHERE ClientesContablesModelID = {ObjCliente.ClientesContablesModelID} AND CodInterno ={ItemBoleta.CuentaAuxiliar}";
                        int    IdCuentaContableAuxiliar    = db.Query <int>(QueryCuentaContableAuxiliar).FirstOrDefault(); //esta es la cuenta que lleva la suma del Iva y del Neto


                        //Crear query de conseguir la cuenta asociada de IVA
                        string QueryGetCuentaContable = $"SELECT CuentaContableModelID FROM CuentaContableModel WHERE ClientesContablesModelID = {ObjCliente.ClientesContablesModelID} AND CodInterno ={ItemBoleta.CuentaContable}";
                        var    IdCuentaContable       = db.Query <int>(QueryGetCuentaContable).FirstOrDefault(); // Esta es la cuenta del neto

                        //Recuerda se insertan 2 detallevoucher ya que uno pertenece al neto y el otro al iva
                        string QueryInsertVoucher = "INSERT INTO VoucherModel (ClientesContablesModelID,Glosa,FechaEmision,Tipo,NumeroVoucher,DadoDeBaja,CentroDeCosto_CentroCostoModelID,TipoOrigen,TipoOrigenVoucher)" +
                                                    "VALUES(@ClientesContablesModelID,@Glosa,@FechaEmision,@Tipo,@NumeroVoucher,@DadoDeBaja,@CentroDeCosto_CentroCostoModelID,@TipoOrigen,@TipoOrigenVoucher)";

                        var QueryVoucherResult = db.Execute(QueryInsertVoucher,
                                                            new {
                            ClientesContablesModelID = ObjCliente.ClientesContablesModelID,
                            Glosa         = "BOLETA DE COMPRA " + ItemBoleta.CuentaContable,
                            FechaEmision  = ItemBoleta.Fecha,
                            Tipo          = "",
                            NumeroVoucher = 0,
                            DadoDeBaja    = 0,
                            CentroDeCosto_CentroCostoModelID = 0,
                            TipoOrigen        = 1,
                            TipoOrigenVoucher = 1
                        });

                        string QueryObtenerUltimoVoucher = $"SELECT MAX(VoucherModelID) FROM VoucherModel WHERE ClientesContablesModelID = {ObjCliente.ClientesContablesModelID}";
                        int    ultimoVoucherId           = db.Query <int>(QueryObtenerUltimoVoucher).FirstOrDefault();

                        //Se generan 2 lineas
                        string QueryInsertDetalleVoucher = "INSERT INTO DetalleVoucherModel (VoucherModelID,MontoDebe,MontoHaber,GlosaDetalle,FechaDoc,Auxiliar_AuxiliaresModelID,ObjCuentaContable_CuentaContableModelID,CentroCostoID)" +
                                                           "VALUES (@VoucherModelID,@MontoDebe,@MontoHaber,@GlosaDetalle,@FechaDoc,@Auxiliar_AuxiliaresModelID,@ObjCuentaContable_CuentaContableModelID,@CentroCostoID)";

                        var QueryDetalleVoucherResult = db.Execute(QueryInsertDetalleVoucher,
                                                                   new
                        {
                            VoucherModelID             = ultimoVoucherId,
                            MontoDebe                  = ItemBoleta.Neto,
                            MontoHaber                 = 0,
                            GlosaDetalle               = "BOLETA DE " + ItemBoleta.CuentaContable,
                            FechaDoc                   = ItemBoleta.Fecha,
                            Auxiliar_AuxiliaresModelID = 0,
                            ObjCuentaContable_CuentaContableModelID = IdCuentaContable,
                            CentroCostoID = ItemBoleta.CentroDeCostos
                        });

                        string QueryObtenerUltimoDetalleVoucher = $"SELECT MAX(DetalleVoucherModelID) FROM DetalleVoucherModel WHERE ClientesContablesModelID = {ObjCliente.ClientesContablesModelID}";
                        int    ultimoDetalleVoucherId           = db.Query <int>(QueryObtenerUltimoDetalleVoucher).FirstOrDefault();

                        detalleVoucher.Add(new DetalleVoucherModelDTO
                        {
                            DetalleVoucherModelID = ultimoDetalleVoucherId,
                            VoucherModelID        = ultimoVoucherId,
                            MontoDebe             = ItemBoleta.Neto,
                            MontoHaber            = 0,
                            GlosaDetalle          = "BOLETA DE " + ItemBoleta.CuentaContable,
                            FechaDoc              = ItemBoleta.Fecha,
                            AuxiliaresModelID     = 0,
                            CuentaContableModelID = IdCuentaContable,
                            CentroCostoID         = ItemBoleta.CentroDeCostos
                        });
                        //Execute
                        string QueryInsertDetalleVoucherDos = "INSERT INTO DetalleVoucherModel (VoucherModelID,MontoDebe,MontoHaber,GlosaDetalle,FechaDoc,RazonSocialDoc,Auxiliar_AuxiliaresModelID,ObjCuentaContable_CuentaContableModelID,CentroCostoID)" +
                                                              "VALUES (@VoucherModelID,@MontoDebe,@MontoHaber,@GlosaDetalle,@FechaDoc,@RazonSocialDoc,@Auxiliar_AuxiliaresModelID,@ObjCuentaContable_CuentaContableModelID,@CentroCostoID)";

                        var QueryDetalleVoucherResultDos = db.Execute(QueryInsertDetalleVoucherDos,
                                                                      new
                        {
                            VoucherModelID             = ultimoVoucherId,
                            MontoDebe                  = 0,
                            MontoHaber                 = ItemBoleta.Iva,
                            GlosaDetalle               = "BOLETA DE " + ItemBoleta.CuentaContable,
                            FechaDoc                   = ItemBoleta.Fecha,
                            Auxiliar_AuxiliaresModelID = 0,
                            ObjCuentaContable_CuentaContableModelID = CuentaContableSeleccionada,
                            CentroCostoID = ItemBoleta.CentroDeCostos
                        });

                        string QueryObtenerUltimoDetalleVoucherDos = $"SELECT MAX(DetalleVoucherModelID) FROM DetalleVoucherModel WHERE ClientesContablesModelID = {ObjCliente.ClientesContablesModelID}";
                        int    ultimoDetalleVoucherIdDos           = db.Query <int>(QueryInsertDetalleVoucherDos).FirstOrDefault();

                        detalleVoucher.Add(new DetalleVoucherModelDTO
                        {
                            DetalleVoucherModelID = ultimoDetalleVoucherIdDos,
                            VoucherModelID        = ultimoVoucherId,
                            MontoDebe             = 0,
                            MontoHaber            = ItemBoleta.Iva,
                            GlosaDetalle          = "BOLETA DE " + ItemBoleta.CuentaContable,
                            FechaDoc              = ItemBoleta.Fecha,
                            AuxiliaresModelID     = 0,
                            CuentaContableModelID = IdCuentaContable,
                            CentroCostoID         = ItemBoleta.CentroDeCostos
                        });
                        //Execute

                        //falta la logica de los auxiliares.

                        //por cada detalle voucher se crea un auxiliar

                        foreach (DetalleVoucherModelDTO item in detalleVoucher)
                        {
                            //revisar como funciona la lógica de esta parte ¿Es completamente necesario

                            //AuxiliaresModel Auxiliar = new AuxiliaresModel();

                            //Auxiliar.DetalleVoucherModelID = NuevoDetalleVoucher.DetalleVoucherModelID;
                            //Auxiliar.LineaNumeroDetalle = nuevoVoucher.ListaDetalleVoucher.Count;
                            //Auxiliar.MontoTotal = NuevoDetalleVoucher.MontoDebe + NuevoDetalleVoucher.MontoHaber;
                            //Auxiliar.objCtaContable = NuevoDetalleVoucher.ObjCuentaContable;
                            ////Auxiliar.DetalleVoucherModelID = NuevoDetalleVoucher.DetalleVoucherModelID;
                            //db.DBAuxiliares.Add(Auxiliar);

                            //AuxiliaresDetalleModel nuevoAuxDetalle = new AuxiliaresDetalleModel();
                            //nuevoAuxDetalle.TipoDocumento = entradaLibro.TipoDocumento;
                            //nuevoAuxDetalle.Fecha = entradaLibro.FechaDoc;
                            //nuevoAuxDetalle.FechaContabilizacion = entradaLibro.FechaContabilizacion;

                            ////revisar
                            //// nuevoAuxDetalle.FechaVencimiento =   entradaLibro.fe
                            //nuevoAuxDetalle.Folio = entradaLibro.Folio;
                            //nuevoAuxDetalle.Individuo2 = entradaLibro.individuo;
                            //nuevoAuxDetalle.MontoNetoLinea = entradaLibro.MontoNeto;
                            //nuevoAuxDetalle.MontoExentoLinea = entradaLibro.MontoExento;
                            //nuevoAuxDetalle.MontoIVALinea = entradaLibro.MontoIva;

                            //nuevoAuxDetalle.MontoTotalLinea = entradaLibro.MontoTotal;
                            //nuevoAuxDetalle.AuxiliaresModelID = Auxiliar.AuxiliaresModelID;

                            //if (entradaLibro.TipoLibro == TipoCentralizacion.Compra)
                            //{
                            //    nuevoAuxDetalle.MontoIVANoRecuperable = entradaLibro.MontoIvaNoRecuperable;
                            //    nuevoAuxDetalle.MontoIVAUsoComun = entradaLibro.MontoIvaUsocomun;
                            //    nuevoAuxDetalle.MontoIVAActivoFijo = entradaLibro.MontoIvaActivoFijo;
                            //}
                            //Condición de cuenta auxiliar.
                            string QueryInsertAuxiliares = "INSERT INTO AuxiliaresModel (DetalleVoucherModelID, LineaNumeroDetalle, MontoTotal, Tipo, objCtaContable_CuentaContableModelID)" +
                                                           " VALUES(@DetalleVoucherModelID,@LineaNumeroDetalle,@MontoTotal,@Tipo,@objCtaContable_CuentaContableModelID)";


                            string QueryInsertAuxiliaresDetalle = "INSERT INTO AuxiliresDetalleModel (TipoDocumento,Fecha,,FechaContabilizacion,Folio,Individuo2_QuickReceptorModelID,MontoNetoLinea,MontoExentoLinea,MontoIVALinea,MontoTotalLinea,AuxiliaresModelID)" +
                                                                  " VALUES(@TipoDocumento,@Fecha,@FechaContabilizacion,@Folio,@Individuo2_QuickReceptorModelID,@MontoNetoLinea,@MontoExentoLinea,@MontoIVALinea,@MontoTotalLinea,@AuxiliaresModelID)";
                        }


                        string QueryObtenerIdTablaPadre = $"SELECT MAX(BoletasCoVPadreModelID) FROM BoletasCoVPadreModel WHERE ClienteContableModelID_ClientesContablesModelID = {ObjCliente.ClientesContablesModelID}";
                        int    idTablaPadre             = db.Query <int>(QueryObtenerIdTablaPadre).FirstOrDefault();


                        string             queryReceptorDummy = "SELECT * FROM QuickReceptorModel LIMIT 1";
                        QuickReceptorModel receptor           = db.Query <QuickReceptorModel>(queryReceptorDummy).FirstOrDefault();



                        string QueryInsertHijo = "INSERT INTO BoletasCoVModel (CuentaAuxiliar, BoletaCoVPadre, ClienteContable_ClientesContablesModelID, Prestador," +
                                                 " VoucherModelID, HaSidoConvertidoAVoucher, FechaInsercion, Fecha, NumeroDeDocumento, TipoDocumento," +
                                                 " FechaVencimiento, CuentaContable, Neto, Iva, CentroDeCostos, FechaPeriodoTributario)" +
                                                 " VALUES(@CuentaAuxiliar, @BoletaCoVPadre, @ClienteContable, @Prestador, @VoucherModelID, @HaSidoConvertidoAVoucher," +
                                                 "@FechaInsercion, @Fecha, @NumeroDeDocumento, @TipoDocumento, @FechaVencimiento, @CuentaContable, @Neto, @Iva, @CentroDeCostos," +
                                                 "@FechaPeriodoTributario)";

                        var ResultadoInsercionHijos = db.Execute(QueryInsertHijo,
                                                                 new
                        {
                            CuentaAuxiliar = ItemBoleta.CuentaAuxiliar,
                            BoletaCoVPadre = idTablaPadre,
                            ClienteContable_ClientesContablesModelID = ObjCliente,
                            Prestador                = Receptor,
                            VoucherModelID           = ultimoVoucherId,
                            HaSidoConvertidoAVoucher = 1,
                            FechaInsercion           = DateTime.Now,
                            Fecha             = ItemBoleta.Fecha,
                            NumeroDeDocumento = ItemBoleta.NumeroDeDocumento,
                            TipoDocumento     = TipoDte.BoletaElectronica,
                            FechaVencimiento  = DateTime.Now,
                            CuentaContable    = "123",
                            Neto                   = 100,
                            Iva                    = 100,
                            CentroDeCostos         = 0,
                            FechaPeriodoTributario = DateTime.Now
                        });
                    }
                }

                string QueryInsertPadre = "INSERT INTO BoletasCoVPadreModel (ClienteContableModelID_ClientesContablesModelID,FechaBoletas,FechaCreacion,TotalNeto,TotalIva) " +
                                          "VALUES (@ClienteContableModelID_ClientesContablesModelID, @FechaBoletas, @FechaCreacion, @TotalNeto, @TotalIva)";

                var QueryResult = db.Execute(QueryInsertPadre,
                                             new
                {
                    ClienteContableModelID_ClientesContablesModelID = ObjCliente.ClientesContablesModelID,
                    FechaBoletas       = DateTime.Now,
                    FechaCreacion      = DateTime.Now,
                    tipoCentralizacion = (int)Tipo,
                    TotalNeto          = 1,
                    TotalIva           = 1
                });

                db.Close();
            }

            return(result);
        }