public static byte[] ExportExcelLibroCentralizacionAuxiliaresVentaCompra(ClientesContablesModel objCliente, bool InformarMembrete, TipoCentralizacion tipoLibroCentralizacion, string tituloDocumento, FacturaPoliContext db, string FechaInicio = "", string FechaFin = "", int Anio = 0, int Mes = 0) { byte[] ExcelByteArray = null; string pathFileArchivosLibro = ParseExtensions.Get_AppData_Path("LibroTemplate.xlsx"); using (XLWorkbook excelFile = new XLWorkbook(pathFileArchivosLibro)) { var workSheet = excelFile.Worksheet(1); if (InformarMembrete == true) { workSheet.Cell("A1").Value = objCliente.RazonSocial; workSheet.Cell("A2").Value = objCliente.RUTEmpresa; workSheet.Cell("A3").Value = objCliente.Giro; workSheet.Cell("A6").Value = objCliente.Direccion; workSheet.Cell("A7").Value = objCliente.Ciudad; workSheet.Cell("A8").Value = objCliente.Representante; workSheet.Cell("A9").Value = objCliente.RUTRepresentante; } else { workSheet.Cell("A1").Value = string.Empty; workSheet.Cell("A2").Value = string.Empty; workSheet.Cell("A3").Value = string.Empty; workSheet.Cell("A6").Value = string.Empty; workSheet.Cell("A7").Value = string.Empty; workSheet.Cell("A8").Value = string.Empty; workSheet.Cell("A9").Value = string.Empty; } if (string.IsNullOrWhiteSpace(tituloDocumento) == false) { workSheet.Cell("A12").Value = tituloDocumento; } else { workSheet.Cell("A12").Value = string.Empty; } List <AuxiliaresDetalleModel> lstAuxiliares = RescatarLibroCentralizacion(objCliente, tipoLibroCentralizacion, db, FechaInicio, FechaFin, Anio, Mes); int NumeroFilaExcel = 15; int NumeroCorrelativoDummy = 1; foreach (AuxiliaresDetalleModel tableRow in lstAuxiliares) { List <string> valuesForExcel = new List <string>(); //FECHA valuesForExcel.Add(ParseExtensions.ToDD_MM_AAAA(tableRow.Fecha)); //NUMERO CORRELATIVO valuesForExcel.Add(NumeroCorrelativoDummy.ToString()); //TIPO DE DOCUMENTO valuesForExcel.Add(ParseExtensions.EnumGetDisplayAttrib(tableRow.TipoDocumento)); //FOLIO valuesForExcel.Add(tableRow.Folio.ToString()); //RUT PRESTADOR valuesForExcel.Add(tableRow.Individuo.PrestadorRut); //NOMBRE PRESTADOR valuesForExcel.Add(tableRow.Individuo.PrestadorNombre); //EXENTO valuesForExcel.Add(tableRow.MontoExentoLinea.ToString()); //MONTO valuesForExcel.Add(tableRow.MontoNetoLinea.ToString()); //IVA valuesForExcel.Add(tableRow.MontoIVALinea.ToString()); //TOTAL valuesForExcel.Add(tableRow.MontoTotalLinea.ToString()); string[] theRow = valuesForExcel.ToArray(); for (int i = 0; i < theRow.Length; i++) { workSheet.Cell(NumeroFilaExcel, i + 1).Value = theRow[i]; } workSheet.Range("A" + NumeroFilaExcel + ":J" + NumeroFilaExcel).Rows().Style.Border.OutsideBorder = XLBorderStyleValues.Medium; //workSheet.Range("A" + NumeroFilaExcel + "J" + NumeroFilaExcel).Rows().Style.Border.InsideBorder.Get = XLBorderStyleValues.Double; NumeroFilaExcel++; NumeroCorrelativoDummy++; } //OBTIENE TOTALES POR TIPO DE DOCUMENTO List <string[]> lstTotalValues = new List <string[]>(); var objX = lstAuxiliares.Select(x => x.TipoDocumento).Distinct(); foreach (TipoDte tipo_dte in objX) { lstTotalValues.Add(new string[] { "Total", lstAuxiliares.Where(r => r.TipoDocumento == tipo_dte).Count() + " " + ParseExtensions.EnumGetDisplayAttrib(tipo_dte), ParseExtensions.NumeroConPuntosDeMiles(lstAuxiliares.Where(r => r.TipoDocumento == tipo_dte).Sum(r => r.MontoExentoLinea)), ParseExtensions.NumeroConPuntosDeMiles(lstAuxiliares.Where(r => r.TipoDocumento == tipo_dte).Sum(r => r.MontoNetoLinea)), ParseExtensions.NumeroConPuntosDeMiles(lstAuxiliares.Where(r => r.TipoDocumento == tipo_dte).Sum(r => r.MontoIVALinea)), ParseExtensions.NumeroConPuntosDeMiles((lstAuxiliares.Where(r => r.TipoDocumento == tipo_dte).Sum(r => r.MontoTotalLinea))) //+ lstTotalValues.Where(r => r.TipoFactura == tipo_dte).Sum(r => r.ObjTotals.ImpuestoAdicionalMonto))) //MANEJAR A FUTURO IMPUESTO ADICIONAL TOTAL DE LOS OTROS TIPOS? }); } lstTotalValues.Add(new string[] { "Total", lstAuxiliares.Count() + " " + "Comprobantes", ParseExtensions.NumeroConPuntosDeMiles(lstAuxiliares.Sum(r => r.MontoExentoLinea)), ParseExtensions.NumeroConPuntosDeMiles(lstAuxiliares.Sum(r => r.MontoExentoLinea)), ParseExtensions.NumeroConPuntosDeMiles(lstAuxiliares.Sum(r => r.MontoExentoLinea)), ParseExtensions.NumeroConPuntosDeMiles(lstAuxiliares.Sum(r => r.MontoExentoLinea)) }); /* * lstTotalValues.Add(new string[] { * "Total", * lstVentasDelMes.Count() +" " + "Comprobantes", * ParseExtensions.NumeroConPuntosDeMiles(rQuery.Where(CheckNonCredito).Sum(r => r.ObjTotals.MontoExento) - rQuery.Where(CheckCredito).Sum(r => r.ObjTotals.MontoExento)), * ParseExtensions.NumeroConPuntosDeMiles(rQuery.Where(CheckNonCredito).Sum(r => r.ObjTotals.MontoNetoMonto) - rQuery.Where(CheckCredito).Sum(r => r.ObjTotals.MontoNetoMonto)), * ParseExtensions.NumeroConPuntosDeMiles(rQuery.Where(CheckNonCredito).Sum(r => r.ObjTotals.IVAMonto) - rQuery.Where(CheckCredito).Sum(r => r.ObjTotals.IVAMonto)), * ParseExtensions.NumeroConPuntosDeMiles((rQuery.Where(CheckNonCredito).Sum(r => r.ObjTotals.TotalMonto) + rQuery.Sum(r => r.ObjTotals.ImpuestoAdicionalMonto)) * - (rQuery.Where(CheckCredito).Sum(r => r.ObjTotals.TotalMonto) + rQuery.Where(CheckCredito).Sum(r => r.ObjTotals.ImpuestoAdicionalMonto))) * });*/ if (lstTotalValues.Count > 0) { //var rangeWithArrays = workSheet.Cell(NumeroFilaExcel, 1).InsertData(lstTotalValues); //rangeWithArrays.LastRow().Style.Border.BottomBorder = XLBorderStyleValues.Thick; int lastRowLocation = NumeroFilaExcel + 1; workSheet.Cell(lastRowLocation, 5).InsertData(lstTotalValues); } else { workSheet.Cell(16, 5).InsertData(lstTotalValues); } workSheet.Columns().AdjustToContents(); ExcelByteArray = ParseExtensions.GetExcelStream(excelFile); } if (ExcelByteArray == null) { return(null); } else { return(ExcelByteArray); } }
public static string VerificaRepetidosEnExcelImportSIICoV(List <string[]> CsvSII, ClientesContablesModel objCliente, FacturaPoliContext db) { TipoCentralizacion tipoCentralizacion = TipoCentralizacion.Ninguno; long folio = 0; TipoDte tipoDte = 0; var IdentificadorRepetidos = new List <string>(); string ReturnValues = ""; foreach (string[] strFilaCSV in CsvSII) { if (CsvSII.First() == strFilaCSV) { if (strFilaCSV[2] == "Tipo Compra") { tipoCentralizacion = TipoCentralizacion.Compra; } else if (strFilaCSV[2] == "Tipo Venta") { tipoCentralizacion = TipoCentralizacion.Venta; } else { return(null); } continue; } tipoDte = (TipoDte)ParseExtensions.ParseInt(strFilaCSV[1]); string RutPrestador = strFilaCSV[3]; folio = long.Parse(strFilaCSV[5]); var SinRepetidos = db.DBLibrosContables.Where(x => x.ClientesContablesModelID == objCliente.ClientesContablesModelID && x.Folio == folio && x.TipoDocumento == tipoDte && x.individuo.RUT == RutPrestador && x.HaSidoConvertidoAVoucher == true && x.TipoLibro == tipoCentralizacion) .Select(x => new { x.Folio, x.VoucherModelID }) .Distinct() .ToList(); if (SinRepetidos != null) { foreach (var itemRepetido in SinRepetidos) { var VoucherEncontrado = db.DBVoucher.Where(x => x.VoucherModelID == itemRepetido.VoucherModelID).Select(x => new { x.DadoDeBaja, x.Tipo }).FirstOrDefault(); if (VoucherEncontrado.DadoDeBaja == false && VoucherEncontrado.Tipo == TipoVoucher.Traspaso) { IdentificadorRepetidos.Add(itemRepetido.Folio.ToString()); } } } } if (IdentificadorRepetidos.Any()) { ReturnValues = string.Join(",", IdentificadorRepetidos); } return(ReturnValues); }
public static byte[] ExportExcelLibroVentaCompraNormal(List <string[]> cachedLibroCompra, ClientesContablesModel objCliente, bool InformarMembrete, TipoCentralizacion tipoLibroCentralizacion, string tituloDocumento, string FechaInicio = "", string FechaFin = "", int Anio = 0, int Mes = 0, bool TieneFiltros = false) { byte[] ExcelByteArray = null; string pathFileArchivosLibro = ParseExtensions.Get_AppData_Path("LibroTemplate.xlsx"); if (tipoLibroCentralizacion == TipoCentralizacion.Compra) { pathFileArchivosLibro = ParseExtensions.Get_AppData_Path("LibroTemplate.xlsx"); } else if (tipoLibroCentralizacion == TipoCentralizacion.Venta) { pathFileArchivosLibro = ParseExtensions.Get_AppData_Path("LibroTemplate2.xlsx"); } using (XLWorkbook excelFile = new XLWorkbook(pathFileArchivosLibro)) { var workSheet = excelFile.Worksheet(1); FacturaPoliContext db = new FacturaPoliContext(); if (InformarMembrete == true) { workSheet.Cell("A1").Value = objCliente.RazonSocial; workSheet.Cell("A2").Value = "Rut: " + ParseExtensions.FormatoRutMembrete(objCliente.RUTEmpresa); workSheet.Cell("A3").Value = objCliente.Giro; workSheet.Cell("A6").Value = objCliente.Direccion; workSheet.Cell("A7").Value = objCliente.Ciudad; workSheet.Cell("A8").Value = ParseExtensions.FormatoRutMembrete(objCliente.RUTRepresentante) + objCliente.Representante; // workSheet.Cell("A9").Value = objCliente.RUTRepresentante; } else { workSheet.Cell("A1").Value = string.Empty; workSheet.Cell("A2").Value = string.Empty; workSheet.Cell("A3").Value = string.Empty; workSheet.Cell("A6").Value = string.Empty; workSheet.Cell("A7").Value = string.Empty; workSheet.Cell("A8").Value = string.Empty; workSheet.Cell("A9").Value = string.Empty; } if (TieneFiltros) { workSheet.Cell("C4").Value = tituloDocumento; } else if (!TieneFiltros) { workSheet.Cell("C4").Value = "TODOS LOS AÑOS"; } if (tipoLibroCentralizacion == TipoCentralizacion.Compra) { //H a M workSheet.Columns("A", "M").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left; workSheet.Columns("H:M").Style.NumberFormat.Format = "#,##0 ;-#,##0"; } else if (tipoLibroCentralizacion == TipoCentralizacion.Venta) { workSheet.Columns("A", "K").Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left; workSheet.Columns("H:K").Style.NumberFormat.Format = "#,##0 ;-#,##0"; } bool ConversionFechaInicioExitosa = false; DateTime dtFechaInicio = new DateTime(); bool ConversionFechaFinExitosa = false; DateTime dtFechaFin = new DateTime(); ConversionFechaInicioExitosa = DateTime.TryParse(FechaInicio, out dtFechaInicio); ConversionFechaFinExitosa = DateTime.TryParse(FechaFin, out dtFechaFin); workSheet.Columns("B", "C").Style.DateFormat.Format = "dd-MM-yyyy"; int NumeroFilaExcel = 15; int NumeroCorrelativoDummy = 1; //int IgnoraUltimo = cachedLibroCompra.Count() - 2; foreach (String[] tableRow in cachedLibroCompra) { List <string> valuesForExcel = new List <string>(); //Correlativo valuesForExcel.Add(tableRow[0]); //Fecha documento valuesForExcel.Add(tableRow[1]); //Fecha contabilización valuesForExcel.Add(tableRow[2]); //Comprobante valuesForExcel.Add(tableRow[3]); //Folio valuesForExcel.Add(tableRow[4]); //Nombre valuesForExcel.Add(tableRow[5]); //Rut valuesForExcel.Add(tableRow[6]); //Exento valuesForExcel.Add(tableRow[7]); //Monto Afecto valuesForExcel.Add(tableRow[8]); //IVA Recuperable (IVA a secas) valuesForExcel.Add(tableRow[9]); if (tipoLibroCentralizacion == TipoCentralizacion.Compra) { //IVA no recuperable valuesForExcel.Add(tableRow[10]); //IVA uso común valuesForExcel.Add(tableRow[11]); } //TOTAL valuesForExcel.Add(tableRow[12]); string[] theRow = valuesForExcel.ToArray(); for (int i = 0; i < theRow.Length; i++) { if (theRow[i] != "-" && !string.IsNullOrWhiteSpace(theRow[i])) { if (i == 1 || i == 2) { DateTime Fecha = ParseExtensions.CreaFechaLiteral(theRow[i]); workSheet.Cell(NumeroFilaExcel, i + 1).Value = Fecha; } else { workSheet.Cell(NumeroFilaExcel, i + 1).Value = theRow[i]; //.Value = theRow[i]; } } } if (tipoLibroCentralizacion == TipoCentralizacion.Compra) { workSheet.Range("A" + NumeroFilaExcel + ":M" + NumeroFilaExcel).Rows().Style.Border.OutsideBorder = XLBorderStyleValues.Thin; // Se establece el rango que cubrirá el borde del excel //workSheet.Range("A" + NumeroFilaExcel + "J" + NumeroFilaExcel).Rows().Style.Border.InsideBorder.Get = XLBorderStyleValues.Double; } else if (tipoLibroCentralizacion == TipoCentralizacion.Venta) { workSheet.Range("A" + NumeroFilaExcel + ":K" + NumeroFilaExcel).Rows().Style.Border.OutsideBorder = XLBorderStyleValues.Thin; } NumeroFilaExcel++; NumeroCorrelativoDummy++; } /* foreach (LibrosContablesModel tableRow in bagDetalleLibros) * { * List<string> valuesForExcel = new List<string>(); * //FECHA * valuesForExcel.Add(ParseExtensions.ToDD_MM_AAAA(tableRow.FechaDoc)); * //NUMERO CORRELATIVO * valuesForExcel.Add(NumeroCorrelativoDummy.ToString()); * //TIPO DE DOCUMENTO * valuesForExcel.Add(ParseExtensions.EnumGetDisplayAttrib(tableRow.TipoDocumento)); * //FOLIO * valuesForExcel.Add(tableRow.Folio.ToString()); * //RUT PRESTADOR * valuesForExcel.Add(tableRow.individuo.RUT); * //NOMBRE PRESTADOR * valuesForExcel.Add(tableRow.individuo.RazonSocial); * * //EXENTO * valuesForExcel.Add(tableRow.MontoExento.ToString()); * //MONTO * valuesForExcel.Add(tableRow.MontoNeto.ToString()); * //IVA * valuesForExcel.Add(tableRow.MontoIva.ToString()); * //TOTAL * valuesForExcel.Add(tableRow.MontoTotal.ToString()); * * string[] theRow = valuesForExcel.ToArray(); * for (int i = 0; i < theRow.Length; i++) * { * workSheet.Cell(NumeroFilaExcel, i + 1).SetValue<string>(theRow[i]); //.Value = theRow[i]; * } * workSheet.Range("A" + NumeroFilaExcel + ":J" + NumeroFilaExcel).Rows().Style.Border.OutsideBorder = XLBorderStyleValues.Medium; * //workSheet.Range("A" + NumeroFilaExcel + "J" + NumeroFilaExcel).Rows().Style.Border.InsideBorder.Get = XLBorderStyleValues.Double; * * NumeroFilaExcel++; * NumeroCorrelativoDummy++; * }*/ //OBTIENE TOTALES POR TIPO DE DOCUMENTO List <string[]> lstTotalValues = new List <string[]>(); var objX = cachedLibroCompra.Select(x => x[3]).Distinct(); if (tipoLibroCentralizacion == TipoCentralizacion.Compra) { foreach (string tipo_dte in objX) { lstTotalValues.Add(new string[] { "Total", cachedLibroCompra.Where(r => r[3] == tipo_dte).Count() + " " + tipo_dte, ParseExtensions.NumeroConPuntosDeMiles(cachedLibroCompra.Where(r => r[3] == tipo_dte).Sum(x => int.Parse(x[7]))), ParseExtensions.NumeroConPuntosDeMiles(cachedLibroCompra.Where(r => r[3] == tipo_dte).Sum(x => int.Parse(x[8]))), ParseExtensions.NumeroConPuntosDeMiles(cachedLibroCompra.Where(r => r[3] == tipo_dte).Sum(x => int.Parse(x[9]))), ParseExtensions.NumeroConPuntosDeMiles(cachedLibroCompra.Where(r => r[3] == tipo_dte).Sum(x => int.Parse(x[10]))), ParseExtensions.NumeroConPuntosDeMiles(cachedLibroCompra.Where(r => r[3] == tipo_dte).Sum(x => int.Parse(x[11]))), ParseExtensions.NumeroConPuntosDeMiles(cachedLibroCompra.Where(r => r[3] == tipo_dte).Sum(x => int.Parse(x[12]))) }); } lstTotalValues.Add(new string[] { "Total", cachedLibroCompra.Count() + " " + "Comprobantes", ParseExtensions.NumeroConPuntosDeMiles((cachedLibroCompra.Where(w => bool.Parse(w[13]) == false).Sum(r => int.Parse(r[7]))) - (cachedLibroCompra.Where(w => bool.Parse(w[13]) == true).Sum(r => int.Parse(r[7])))), ParseExtensions.NumeroConPuntosDeMiles((cachedLibroCompra.Where(w => bool.Parse(w[13]) == false).Sum(r => int.Parse(r[8]))) - (cachedLibroCompra.Where(w => bool.Parse(w[13]) == true).Sum(r => int.Parse(r[8])))), ParseExtensions.NumeroConPuntosDeMiles((cachedLibroCompra.Where(w => bool.Parse(w[13]) == false).Sum(r => int.Parse(r[9]))) - (cachedLibroCompra.Where(w => bool.Parse(w[13]) == true).Sum(r => int.Parse(r[9])))), ParseExtensions.NumeroConPuntosDeMiles((cachedLibroCompra.Where(w => bool.Parse(w[13]) == false).Sum(r => int.Parse(r[10]))) - (cachedLibroCompra.Where(w => bool.Parse(w[13]) == true).Sum(r => int.Parse(r[10])))), ParseExtensions.NumeroConPuntosDeMiles((cachedLibroCompra.Where(w => bool.Parse(w[13]) == false).Sum(r => int.Parse(r[11]))) - (cachedLibroCompra.Where(w => bool.Parse(w[13]) == true).Sum(r => int.Parse(r[11])))), ParseExtensions.NumeroConPuntosDeMiles((cachedLibroCompra.Where(w => bool.Parse(w[13]) == false).Sum(r => int.Parse(r[12]))) - (cachedLibroCompra.Where(w => bool.Parse(w[13]) == true).Sum(r => int.Parse(r[12])))) }); } else if (tipoLibroCentralizacion == TipoCentralizacion.Venta) { foreach (string tipo_dte in objX) { lstTotalValues.Add(new string[] { "Total", cachedLibroCompra.Where(r => r[3] == tipo_dte).Count() + " " + tipo_dte, ParseExtensions.NumeroConPuntosDeMiles(cachedLibroCompra.Where(r => r[3] == tipo_dte).Sum(x => int.Parse(x[7]))), ParseExtensions.NumeroConPuntosDeMiles(cachedLibroCompra.Where(r => r[3] == tipo_dte).Sum(x => int.Parse(x[8]))), ParseExtensions.NumeroConPuntosDeMiles(cachedLibroCompra.Where(r => r[3] == tipo_dte).Sum(x => int.Parse(x[9]))), ParseExtensions.NumeroConPuntosDeMiles(cachedLibroCompra.Where(r => r[3] == tipo_dte).Sum(x => int.Parse(x[12]))) }); } lstTotalValues.Add(new string[] { "Total", cachedLibroCompra.Count() + " " + "Comprobantes", ParseExtensions.NumeroConPuntosDeMiles((cachedLibroCompra.Where(w => bool.Parse(w[13]) == false).Sum(r => int.Parse(r[7]))) - (cachedLibroCompra.Where(w => bool.Parse(w[13]) == true).Sum(r => int.Parse(r[7])))), ParseExtensions.NumeroConPuntosDeMiles((cachedLibroCompra.Where(w => bool.Parse(w[13]) == false).Sum(r => int.Parse(r[8]))) - (cachedLibroCompra.Where(w => bool.Parse(w[13]) == true).Sum(r => int.Parse(r[8])))), ParseExtensions.NumeroConPuntosDeMiles((cachedLibroCompra.Where(w => bool.Parse(w[13]) == false).Sum(r => int.Parse(r[9]))) - (cachedLibroCompra.Where(w => bool.Parse(w[13]) == true).Sum(r => int.Parse(r[9])))), ParseExtensions.NumeroConPuntosDeMiles((cachedLibroCompra.Where(w => bool.Parse(w[13]) == false).Sum(r => int.Parse(r[12]))) - (cachedLibroCompra.Where(w => bool.Parse(w[13]) == true).Sum(r => int.Parse(r[12])))) }); } /*} * * * List<string[]> lstTotalValues = new List<string[]>(); * var objX = bagDetalleLibros.Select(x => x.TipoDocumento).Distinct(); * foreach (TipoDte tipo_dte in objX) * { * lstTotalValues.Add(new string[] { * "Total", * bagDetalleLibros.Where(r => r.TipoDocumento == tipo_dte).Count() +" " + ParseExtensions.EnumGetDisplayAttrib(tipo_dte), * ParseExtensions.NumeroConPuntosDeMiles(bagDetalleLibros.Where(r => r.TipoDocumento == tipo_dte).Sum(r => r.MontoExento)), * ParseExtensions.NumeroConPuntosDeMiles(bagDetalleLibros.Where(r => r.TipoDocumento == tipo_dte).Sum(r => r.MontoNeto)), * ParseExtensions.NumeroConPuntosDeMiles(bagDetalleLibros.Where(r => r.TipoDocumento == tipo_dte).Sum(r => r.MontoIva)), * ParseExtensions.NumeroConPuntosDeMiles((bagDetalleLibros.Where(r => r.TipoDocumento == tipo_dte).Sum(r => r.MontoTotal))) * }); * } * * lstTotalValues.Add(new string[] { * "Total", * bagDetalleLibros.Count() +" " + "Comprobantes", * ParseExtensions.NumeroConPuntosDeMiles( (bagDetalleLibros.Where(w => w.TipoDocumento.EsUnaNotaCredito() == false).Sum(r => r.MontoExento)) - (bagDetalleLibros.Where(w => w.TipoDocumento.EsUnaNotaCredito() == true).Sum(r => r.MontoExento)) ), * ParseExtensions.NumeroConPuntosDeMiles( (bagDetalleLibros.Where(w => w.TipoDocumento.EsUnaNotaCredito() == false).Sum(r => r.MontoNeto)) - (bagDetalleLibros.Where(w => w.TipoDocumento.EsUnaNotaCredito() == true).Sum(r => r.MontoNeto)) ), * ParseExtensions.NumeroConPuntosDeMiles( (bagDetalleLibros.Where(w => w.TipoDocumento.EsUnaNotaCredito() == false).Sum(r => r.MontoIva)) - (bagDetalleLibros.Where(w => w.TipoDocumento.EsUnaNotaCredito() == true).Sum(r => r.MontoIva)) ), * ParseExtensions.NumeroConPuntosDeMiles( (bagDetalleLibros.Where(w => w.TipoDocumento.EsUnaNotaCredito() == false).Sum(r => r.MontoTotal)) - (bagDetalleLibros.Where(w => w.TipoDocumento.EsUnaNotaCredito() == true).Sum(r => r.MontoTotal)) ) * });*/ if (lstTotalValues.Count > 0) { int lastRowLocation = NumeroFilaExcel + 1; workSheet.Cell(lastRowLocation, 6).InsertData(lstTotalValues); } else { workSheet.Cell(16, 6).InsertData(lstTotalValues); } workSheet.Columns().AdjustToContents(); ExcelByteArray = ParseExtensions.GetExcelStream(excelFile); } if (ExcelByteArray == null) { return(null); } else { return(ExcelByteArray); } }
public static List <AuxiliaresDetalleModel> RescatarLibroCentralizacion(ClientesContablesModel objCliente, TipoCentralizacion tipoLibroCentralizacion, FacturaPoliContext db, string FechaInicio = "", string FechaFin = "", int Anio = 0, int Mes = 0) { bool ConversionFechaInicioExitosa = false; DateTime dtFechaInicio = new DateTime(); bool ConversionFechaFinExitosa = false; DateTime dtFechaFin = new DateTime(); ConversionFechaInicioExitosa = DateTime.TryParse(FechaInicio, out dtFechaInicio); ConversionFechaFinExitosa = DateTime.TryParse(FechaFin, out dtFechaFin); var CuentasContableCliente = db.DBCuentaContable.Where(w => w.ClientesContablesModelID == objCliente.ClientesContablesModelID && w.TipoCentralizacionAuxiliares == tipoLibroCentralizacion); List <VoucherModel> LstVoucher = db.DBVoucher.Where(r => r.ClientesContablesModelID == objCliente.ClientesContablesModelID && r.DadoDeBaja == false).ToList(); List <AuxiliaresDetalleModel> LaLista = new List <AuxiliaresDetalleModel>(); foreach (var voucher in LstVoucher) { List <DetalleVoucherModel> lstDetalleVoucher = voucher.ListaDetalleVoucher.Where(p => CuentasContableCliente.Any(ee => ee.CodInterno == p.ObjCuentaContable.CodInterno)).ToList(); foreach (var detalleVoucher in lstDetalleVoucher) { List <AuxiliaresModel> lstAuxiliar = db.DBAuxiliares.Where(r => r.DetalleVoucherModelID == detalleVoucher.DetalleVoucherModelID).ToList(); foreach (var auxiliar in lstAuxiliar) { List <AuxiliaresDetalleModel> LstDetalleAuxiliares = db.DBAuxiliaresDetalle.Where(r => r.AuxiliaresModelID == auxiliar.AuxiliaresModelID).ToList(); if (Anio != 0) { LstDetalleAuxiliares = LstDetalleAuxiliares.Where(r => r.FechaContabilizacion.Year == Anio).ToList(); } if (Mes != 0) { LstDetalleAuxiliares = LstDetalleAuxiliares.Where(r => r.FechaContabilizacion.Month == Mes).ToList(); } if (ConversionFechaInicioExitosa) { LstDetalleAuxiliares = LstDetalleAuxiliares.Where(r => r.FechaContabilizacion >= dtFechaInicio).ToList(); } if (ConversionFechaFinExitosa) { LstDetalleAuxiliares = LstDetalleAuxiliares.Where(r => r.FechaContabilizacion <= dtFechaFin).ToList(); } LaLista.AddRange(LstDetalleAuxiliares); } } } return(LaLista); }
public static PaginadorModel RescatarLibroCentralizacion(ClientesContablesModel objCliente, TipoCentralizacion tipoLibroCentralizacion, FacturaPoliContext db, string FechaInicio = "", string FechaFin = "", int Anio = 0, int Mes = 0, int pagina = 0, int cantidadRegistrosPorPagina = 0, string Rut = "", string RazonSocial = "", int Folio = 0) { bool ConversionFechaInicioExitosa = false; DateTime dtFechaInicio = new DateTime(); bool ConversionFechaFinExitosa = false; DateTime dtFechaFin = new DateTime(); List <LibrosContablesModel> lstlibroData = new List <LibrosContablesModel>(); if (string.IsNullOrWhiteSpace(FechaInicio) == false && string.IsNullOrWhiteSpace(FechaFin) == false) { ConversionFechaInicioExitosa = DateTime.TryParseExact(FechaInicio, "dd-MM-yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dtFechaInicio); ConversionFechaFinExitosa = DateTime.TryParseExact(FechaFin, "dd-MM-yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dtFechaFin); } // Solo si es convertido a voucher se listará en el libro de compras. IQueryable <LibrosContablesModel> lstlibro = (from LibrosContables in db.DBLibrosContables join Vouchers in db.DBVoucher on LibrosContables.VoucherModelID equals Vouchers.VoucherModelID where Vouchers.DadoDeBaja == false && LibrosContables.HaSidoConvertidoAVoucher == true && Vouchers.ClientesContablesModelID == objCliente.ClientesContablesModelID && Vouchers.Tipo == TipoVoucher.Traspaso && LibrosContables.TipoLibro == tipoLibroCentralizacion select LibrosContables); //IQueryable<LibrosContablesModel> lstlibro = db.DBLibrosContables.Where(r => r.ClientesContablesModelID == objCliente.ClientesContablesModelID && r.TipoLibro == tipoLibroCentralizacion && r.HaSidoConvertidoAVoucher == true); //(r => r.Fecha >= dtFechaInicio && r.Fecha <= dtFechaFin); if (Anio != 0 && Anio > 0) { lstlibro = lstlibro.Where(r => r.FechaContabilizacion.Year == Anio); } if (Mes != 0 && Mes > 0) { lstlibro = lstlibro.Where(r => r.FechaContabilizacion.Month == Mes); } if (ConversionFechaInicioExitosa && ConversionFechaInicioExitosa) { lstlibro = lstlibro.Where(r => r.FechaContabilizacion >= dtFechaInicio && r.FechaContabilizacion <= dtFechaFin); } if (!string.IsNullOrWhiteSpace(Rut)) { lstlibro = lstlibro.Where(r => r.individuo.RUT.Contains(Rut)); } if (!string.IsNullOrWhiteSpace(RazonSocial)) { lstlibro = lstlibro.Where(r => r.individuo.RazonSocial.Contains(RazonSocial)); } if (Folio != 0 && Folio > 0) { lstlibro = lstlibro.Where(r => r.Folio == Folio); } int totalDeRegistros = lstlibro.Count(); if (cantidadRegistrosPorPagina != 0) { lstlibroData = lstlibro.OrderBy(r => r.FechaContabilizacion) .Skip((pagina - 1) * cantidadRegistrosPorPagina) .Take(cantidadRegistrosPorPagina).ToList(); } else if (cantidadRegistrosPorPagina == 0) { lstlibroData = lstlibro.OrderBy(r => r.FechaContabilizacion).ToList(); } List <string[]> ReturnValues = new List <string[]>(); decimal TotalExento = 0; decimal TotalNeto = 0; decimal TotalIva = 0; decimal TotalIvaNoRecuperable = 0; decimal TotalIvaUsocomun = 0; decimal TotalMontoTotal = 0; var TotalesNotasDeCredito = (from lstLibro in lstlibroData.Where(x => x.TipoDocumento.EsUnaNotaCredito()) group lstLibro by 1 into g select new { TotalMontoExento = g.Sum(x => x.MontoExento), TotalMontoIva = g.Sum(x => x.MontoIva), TotalMontoNeto = g.Sum(x => x.MontoNeto), TotalMontoIvaNoRecuperable = g.Sum(x => x.MontoIvaNoRecuperable), TotalMontoIvaUsocomun = g.Sum(x => x.MontoIvaUsocomun), TotalMontoTotal = g.Sum(x => x.MontoTotal) }).FirstOrDefault(); int NumeroRow = 1; foreach (LibrosContablesModel Item in lstlibroData) { string[] BalanceRow = new string[] { "-", "-", "-", "-", "-", "-", "-", "0", "0", "0", "0", "0", "0", "False" }; BalanceRow[0] = NumeroRow.ToString(); BalanceRow[1] = ParseExtensions.ToDD_MM_AAAA(Item.FechaDoc); BalanceRow[2] = ParseExtensions.ToDD_MM_AAAA(Item.FechaContabilizacion); BalanceRow[3] = ParseExtensions.EnumGetDisplayAttrib(Item.TipoDocumento); if (Item.FolioHasta > 0 && Item.Folio > 0) { BalanceRow[4] = Item.Folio.ToString() + " - " + Item.FolioHasta.ToString(); } else { BalanceRow[4] = Item.Folio.ToString(); } if (Item.individuo != null) { //Nombre prestador BalanceRow[5] = Item.individuo.RazonSocial; //Rut prestador BalanceRow[6] = Item.individuo.RUT; } else { //Nombre prestador BalanceRow[5] = ""; //Rut prestador BalanceRow[6] = ""; } BalanceRow[7] = ParseExtensions.NumeroConPuntosDeMiles(Item.MontoExento); BalanceRow[8] = ParseExtensions.NumeroConPuntosDeMiles(Item.MontoNeto); BalanceRow[9] = ParseExtensions.NumeroConPuntosDeMiles(Item.MontoIva); BalanceRow[10] = ParseExtensions.NumeroConPuntosDeMiles(Item.MontoIvaNoRecuperable); BalanceRow[11] = ParseExtensions.NumeroConPuntosDeMiles(Item.MontoIvaUsocomun); BalanceRow[12] = ParseExtensions.NumeroConPuntosDeMiles(Item.MontoTotal); if (!Item.TipoDocumento.EsUnaNotaCredito()) { TotalExento += Item.MontoExento; TotalNeto += Item.MontoNeto; TotalIva += Item.MontoIva; TotalIvaNoRecuperable += Item.MontoIvaNoRecuperable; TotalIvaUsocomun += Item.MontoIvaUsocomun; TotalMontoTotal += Item.MontoTotal; } BalanceRow[13] = "True"; if (Item.TipoDocumento.EsUnaNotaCredito() == false) { BalanceRow[13] = "False"; } ReturnValues.Add(BalanceRow); NumeroRow++; } if (TotalesNotasDeCredito != null) { string[] Totales = new string[] { "-", "-", "-", "-", "-", "-", "-", "0", "0", "0", "0", "0", "0", "False" }; Totales[6] = "TOTAL: "; Totales[7] = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalExento) - Math.Abs(TotalesNotasDeCredito.TotalMontoExento)); Totales[8] = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalNeto) - Math.Abs(TotalesNotasDeCredito.TotalMontoNeto)); Totales[9] = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalIva) - Math.Abs(TotalesNotasDeCredito.TotalMontoIva)); Totales[10] = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalIvaNoRecuperable) - Math.Abs(TotalesNotasDeCredito.TotalMontoIvaNoRecuperable)); Totales[11] = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalIvaUsocomun) - Math.Abs(TotalesNotasDeCredito.TotalMontoIvaUsocomun)); Totales[12] = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalMontoTotal) - Math.Abs(TotalesNotasDeCredito.TotalMontoTotal)); ReturnValues.Add(Totales); } else { string[] Totales = new string[] { "-", "-", "-", "-", "-", "-", "-", "0", "0", "0", "0", "0", "0", "False" }; Totales[6] = "TOTAL: "; Totales[7] = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalExento)); Totales[8] = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalNeto)); Totales[9] = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalIva)); Totales[10] = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalIvaNoRecuperable)); Totales[11] = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalIvaUsocomun)); Totales[12] = ParseExtensions.NumeroConPuntosDeMiles(Math.Abs(TotalMontoTotal)); ReturnValues.Add(Totales); } var Paginador = new PaginadorModel(); Paginador.ResultStringArray = ReturnValues; Paginador.PaginaActual = pagina; Paginador.TotalDeRegistros = totalDeRegistros; Paginador.RegistrosPorPagina = cantidadRegistrosPorPagina; Paginador.ValoresQueryString = new RouteValueDictionary(); if (cantidadRegistrosPorPagina != 25) { Paginador.ValoresQueryString["cantidadRegistrosPorPagina"] = cantidadRegistrosPorPagina; } if (Anio != 0) { Paginador.ValoresQueryString["Anio"] = Anio; } if (Mes != 0) { Paginador.ValoresQueryString["Mes"] = Mes; } if (!string.IsNullOrWhiteSpace(Rut)) { Paginador.ValoresQueryString["Rut"] = Rut; } if (!string.IsNullOrWhiteSpace(RazonSocial)) { Paginador.ValoresQueryString["RazonSocial"] = RazonSocial; } if (ConversionFechaInicioExitosa && ConversionFechaInicioExitosa) { Paginador.ValoresQueryString["FechaInicio"] = FechaInicio; Paginador.ValoresQueryString["FechaFin"] = FechaFin; } return(Paginador); }
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); }
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); }