コード例 #1
0
ファイル: FEPrint.asmx.cs プロジェクト: javierlov/FE
        public byte[] GetCbte(string empresaID, string idCbte, TipoDeCopia eCopia)
        {
            byte[] bytesPdf = null;

            var sqlEngine = new FacturaElectronica.DBEngine.SQLEngine();

            try
            {
                bytesPdf = sqlEngine.LoadPdfFromDB(idCbte, eCopia.ToString());

                //Si no encontró el doc, primero lo genero!
                if (bytesPdf == null)
                {
                    //Genero los docs (Original, Duplicado y Triplicado) y vuelvo a buscar el pdf a la DB.
                    PrintCbte(empresaID, idCbte, string.Empty);
                    bytesPdf = sqlEngine.LoadPdfFromDB(idCbte, eCopia.ToString());
                }
            }
            catch (Exception ex)
            {
                throw (new Exception(ex.Message));
            }
            return bytesPdf;
        }
コード例 #2
0
ファイル: FEPrint.asmx.cs プロジェクト: javierlov/FE
        private string PrintComprobante(string EmpresaID, string CbteId, TipoDeCopia tipoDeCopia)
        {
            var sqlEngine = new FacturaElectronica.DBEngine.SQLEngine();
            var oEmpresa = new Empresa(EmpresaID);
            var oSettings = new Settings(EmpresaID);
            var strResult = string.Empty;

            var cbteCodigo = 0;
            var puntoVenta = string.Empty;
            var nroComprobante = string.Empty;
            var fileName = "{0}_{1}_{2}_{3}_{4}.pdf"; //EmprCod_TipoDoc_PtoVta_NroDoc_Copia.pdf
            var codigoDocFileName = string.Empty;

            DataTable dtHeader = null;
            DataTable dtDetails = null;
            DataTable dtImpuestos = null;

            try
            {
                //Obtengo el comprobante de la DB.
                dtHeader = Common.GetComprobanteDataTable(CbteId);
                dtDetails = Common.GetComprobanteDetailDataTable(CbteId);
                dtImpuestos = Common.GetComprobanteImpuestoDataTable(CbteId);

                var newPdf = new PrintEngine.Documento();

                if (ComprobanteEncontrado(dtHeader, dtDetails, dtImpuestos))
                {
                    cbteCodigo = Convert.ToInt32(dtHeader.Rows[0]["TipoComprobante"]);
                    puntoVenta = Convert.ToString(dtHeader.Rows[0]["PuntoVenta"]);
                    nroComprobante = Utils.Utils.FillWithCeros(Convert.ToString(dtHeader.Rows[0]["NroComprobanteDesde"]), 8);

                    //Lleno el objeto del reporte, con todos los datos necesarios.
                    newPdf.FillPdfProperties(Convert.ToString(cbteCodigo), tipoDeCopia, oEmpresa, oSettings, dtHeader);

                    //Preparo el nombre del Archivo, con el Nro de Comprobante y el Pto. de Venta.
                    GetTipoDocByAfipCode(cbteCodigo, out codigoDocFileName);

                    fileName = oSettings.PathTemporales + "\\" + string.Format(fileName, EmpresaID, codigoDocFileName, puntoVenta, nroComprobante, tipoDeCopia.ToString());

                    //Llamo al metodo de newPdf que corresponde, segun el tipo de Doc y si es Local o Extranjero.
                    ImprimirComprobanteCorrespondiente(cbteCodigo, fileName, dtDetails, dtImpuestos, tipoDeCopia, newPdf);
                }
                else
                {
                    fileName = string.Empty;
                }
            }
            catch (Exception ex)
            {
                strResult = ex.Message + "FechaComprobante: " + dtHeader.Rows[0]["FechaComprobante"].ToString() + " | FechaVencimiento: " + dtHeader.Rows[0]["FechaVencimiento"].ToString();
                sqlEngine.LogError(dtHeader.Rows[0]["SQLID"].ToString(), "0", "Imprimiendo Factura", "Error: " + ex.Message);
            }

            return fileName;
        }
コード例 #3
0
ファイル: FEPrint.asmx.cs プロジェクト: javierlov/FE
 //public ArrayList GetDocsIdFromXml(string xmlString)
 //{
 //    ArrayList ids = new ArrayList();
 //    try
 //    {
 //        XmlDocument xmlDoc = new XmlDocument();
 //        xmlDoc.LoadXml(xmlString);
 //        ids = new ArrayList();
 //        //Agrego todos los comprobantes
 //        for (int i = 0; i < xmlDoc.SelectNodes("/RespuestaLoteComprobantes/Comprobante").Count; i++)
 //            ids.Add(ValidXMLValue(xmlDoc, "/RespuestaLoteComprobantes/Comprobante"));
 //    }
 //    catch (Exception)
 //    {
 //        //ToDo: Esto es para Testing!
 //        ids.Add(1);
 //        ids.Add(2);
 //        ids.Add(3);
 //        ids.Add(4);
 //        ids.Add(5);
 //    }
 //    return ids;
 //}
 private static bool DebeImprimir(TipoDeCopia tipoDeCopia, string CopiasAImprimir)
 {
     return CopiasAImprimir.ToLower().IndexOf(tipoDeCopia.ToString().ToLower()) > -1;
 }
コード例 #4
0
ファイル: FEPrint.asmx.cs プロジェクト: javierlov/FE
        private void PrintComprobante(string EmpresaID, string CbteId, TipoDeCopia tipoDeCopia, string FilePath)
        {
            var sqlEngine = new FacturaElectronica.DBEngine.SQLEngine();
            var oEmpresa = new Empresa(EmpresaID);
            var oSettings = new Settings(EmpresaID);
            var strResult = string.Empty;

            var cbteCodigo = 0;
            var puntoVenta = string.Empty;
            var nroComprobante = string.Empty;
            var fileName = "{0}_{1}_{2}_{3}_{4}.pdf"; //EmprCod_TipoDoc_PtoVta_NroDoc_Copia.pdf
            var codigoDocFileName = string.Empty;

            DataTable dtHeader = null;
            DataTable dtDetails = null;
            DataTable dtImpuestos= null;

            try
            {
                //Obtengo el comprobante de la DB.
                dtHeader = Common.GetComprobanteDataTable(CbteId);
                dtDetails = Common.GetComprobanteDetailDataTable(CbteId);
                dtImpuestos = Common.GetComprobanteImpuestoDataTable(CbteId);

                ////ToDo: Quitar.
                //dtDetails.TableName = "Detalle";
                //dtHeader.TableName = "Cabecera";
                //dtHeader.WriteXml(FilePath + "\\dtHeader_" + CbteId.ToString() + ".xml");
                //dtDetails.WriteXml(FilePath + "\\dtDetails_" + CbteId.ToString() + ".xml");

                var newPdf = new PrintEngine.Documento();

                if (ComprobanteEncontrado(dtHeader, dtDetails, dtImpuestos))
                {
                    cbteCodigo = Convert.ToInt32(dtHeader.Rows[0]["TipoComprobante"]);
                    puntoVenta = Convert.ToString(dtHeader.Rows[0]["PuntoVenta"]);
                    nroComprobante = Utils.Utils.FillWithCeros(Convert.ToString(dtHeader.Rows[0]["NroComprobanteDesde"]), 8);

                    //Lleno el objeto del reporte, con todos los datos necesarios.
                    newPdf.FillPdfProperties(Convert.ToString(cbteCodigo), tipoDeCopia, oEmpresa, oSettings, dtHeader);

                    //Solo si se envio un path al WS.
                    if (FilePath != null && FilePath != string.Empty)
                    {
                        //Si falta la ultima '\' al path, la agrego.
                        if (!FilePath.EndsWith(@"\")) FilePath += @"\";

                        //Preparo el nombre del Archivo, con el Nro de Comprobante y el Pto. de Venta.
                        GetTipoDocByAfipCode(cbteCodigo, out codigoDocFileName);
                        fileName = FilePath + string.Format(fileName, EmpresaID, codigoDocFileName, puntoVenta, nroComprobante, tipoDeCopia.ToString());
                    }
                    else
                        fileName = string.Empty;

                    //Llamo al metodo de newPdf que corresponde, segun el tipo de Doc y si es Local o Extranjero.
                    ImprimirComprobanteCorrespondiente(cbteCodigo, fileName, dtDetails, dtImpuestos, tipoDeCopia, newPdf);
                }
            }
            catch (Exception ex)
            {
                strResult = ex.Message + "FechaComprobante: " + dtHeader.Rows[0]["FechaComprobante"].ToString() + " | FechaVencimiento: " + dtHeader.Rows[0]["FechaVencimiento"].ToString();
                sqlEngine.LogError(dtHeader.Rows[0]["SQLID"].ToString(), "0", "Imprimiendo Factura", "Error: " + ex.Message);
            }
        }
コード例 #5
0
ファイル: DocumentoHelper.cs プロジェクト: javierlov/FE
        /// <summary>
        /// Preparo el objeto 'pdf' que luego servirá para llenar todos los campos del reporte.
        /// </summary>
        /// <param name="CbteCodigo"></param>
        /// <param name="CbteCopia"></param>
        /// <param name="sqlEngine"></param>
        /// <param name="oEmpresa"></param>
        /// <param name="oSettings"></param>
        /// <param name="dtHeader"></param>
        public void LlenarPropiedades(string CbteCodigo, TipoDeCopia tipoDeCopia, Empresa oEmpresa, Settings oSettings, DataTable dtHeader)
        {
            DBEngine.SQLEngine sqlEngine = new DBEngine.SQLEngine();

            UnReporte.oEmpresa = oEmpresa;
            UnReporte.TipoDeCopia = tipoDeCopia;
            UnReporte.CbteID = dtHeader.Rows[0]["CbteID"].ToString().Trim();
            UnReporte.NroCbte =  Utils.Utils.FillWithCeros(dtHeader.Rows[0]["PuntoVenta"].ToString().Trim(),4) + "-" +  Utils.Utils.FillWithCeros(dtHeader.Rows[0]["NroComprobanteDesde"].ToString(), 8);
            UnReporte.NombreEmpresa = dtHeader.Rows[0]["CompradorRazonSocial"].ToString();

            //-------------------------------------------------------------
            //Armo la dirección...
            string direccion = "";
            direccion += dtHeader.Rows[0]["CompradorDireccion"].ToString();

            //El código postal va siempre.
            if (dtHeader.Rows[0]["CompradorCodigoPostal"].ToString() != string.Empty && dtHeader.Rows[0]["CompradorCodigoPostal"].ToString() != "0")
                direccion += " - (" + dtHeader.Rows[0]["CompradorCodigoPostal"].ToString() + ")";

            //Solo muestro la Localidad, cuando la PROVINCIA es distinta de 0 (no es Capital Federal).
            if (Convert.ToString(dtHeader.Rows[0]["CompradorProvincia"]).Trim() != "0")
            {
                if (dtHeader.Rows[0]["CompradorLocalidad"].ToString() != string.Empty && dtHeader.Rows[0]["CompradorLocalidad"].ToString() != "0")
                    direccion += " - " + dtHeader.Rows[0]["CompradorLocalidad"].ToString();
            }

            //La provincia se muestra siempre.
            string provinciaConvertida = FacturaElectronica.WSPrint.Common.GetDescripcionProvincia(Convert.ToString(dtHeader.Rows[0]["CompradorProvincia"]));
            if (provinciaConvertida.Trim() != string.Empty)
                direccion += " - " + provinciaConvertida;

            if (sqlEngine.Open())
            {
                string paisConvertido = sqlEngine.ObtenerEquivalencia("EquivAFIPPais", oSettings.EmpresaID, dtHeader.Rows[0]["CompradorPais"].ToString());
                paisConvertido = WSPrint.Common.GetDescripcionPais(paisConvertido);
                if (paisConvertido != string.Empty && paisConvertido.Trim() != "0")
                    direccion += " - " + paisConvertido;

                sqlEngine.Close();
            }
            UnReporte.Domicilio = direccion;
            //-------------------------------------------------------------

            UnReporte.TipoIva = dtHeader.Rows[0]["CompradorTipoResponsableDescripcion"].ToString();
            UnReporte.CondicionDeVenta = dtHeader.Rows[0]["FormaPagoDescripcion"].ToString();
            UnReporte.CondicionDePago = dtHeader.Rows[0]["CondicionPago"].ToString();
            UnReporte.NumCuit = dtHeader.Rows[0]["CompradorNroDocumento"].ToString();
            UnReporte.NumRemito = dtHeader.Rows[0]["NroRemito"].ToString();
            UnReporte.NumIIBB = dtHeader.Rows[0]["CompradorNroIIBB"].ToString(); //
            UnReporte.NumCodIIBB = dtHeader.Rows[0]["CodigoJurisdiccionIIBB"].ToString();
            UnReporte.Son = dtHeader.Rows[0]["ImporteEscrito"].ToString();
            UnReporte.RefCliente = dtHeader.Rows[0]["CompradorNroReferencia"].ToString();
            UnReporte.RefInterna = dtHeader.Rows[0]["NroInternoERP"].ToString();
            UnReporte.AlicuotaIVA = dtHeader.Rows[0]["AlicuotaIVA"].ToString();

            UnReporte.EmisorDireccion = dtHeader.Rows[0]["EmisorDireccion"].ToString();
            UnReporte.EmisorCalle = dtHeader.Rows[0]["EmisorCalle"].ToString();
            UnReporte.EmisorCP = dtHeader.Rows[0]["EmisorCP"].ToString();
            UnReporte.EmisorLocalidad = dtHeader.Rows[0]["EmisorLocalidad"].ToString();
            UnReporte.EmisorProvincia = dtHeader.Rows[0]["EmisorProvincia"].ToString();
            UnReporte.EmisorPais = dtHeader.Rows[0]["EmisorPais"].ToString();
            UnReporte.EmisorTelefonos = dtHeader.Rows[0]["EmisorTelefonos"].ToString();
            UnReporte.EmisorEMail = dtHeader.Rows[0]["EmisorEMail"].ToString();

            UnReporte.DAGRUF =Convert.ToString(dtHeader.Rows[0]["DAGRUF"]);
            UnReporte.OPER = Convert.ToString(dtHeader.Rows[0]["OPER"]);
            UnReporte.NOPER = Convert.ToString(dtHeader.Rows[0]["NOPER"]);

            UnReporte.FECPG1_FORMATEADO = Convert.ToString(dtHeader.Rows[0]["FECPG1_FORMATEADO"]);
            UnReporte.FECPG2_FORMATEADO = Convert.ToString(dtHeader.Rows[0]["FECPG2_FORMATEADO"]);
            UnReporte.FACTORI_FORMATEADO = Convert.ToString(dtHeader.Rows[0]["FACTORI_FORMATEADO"]); //Convert.ToString(dtHeader.Rows[0]["FACTORI"]);
            UnReporte.USUARIO = Convert.ToString(dtHeader.Rows[0]["USUARIO"]);
            UnReporte.CODCLIENTECOMPRADOR = Convert.ToString(dtHeader.Rows[0]["CompradorCodigoCliente"]);
            UnReporte.OBSERVACIONRAPIPAGO = Convert.ToString(dtHeader.Rows[0]["ObservacionRapipago"]);
            UnReporte.ERRORCODIGO = GetErrorCodigo(UnReporte.CbteID);
            UnReporte.TasaIIBB = Convert.ToString(dtHeader.Rows[0]["TasaIIBB"]);

            if (dtHeader.Rows[0]["LetraComprobante"].ToString() != "B")
            {
                if (dtHeader.Rows[0]["ImporteImpuestoLiquidadoMonedaFacturacion"].ToString() != string.Empty)
                    UnReporte.TotalIva = String.Format(FORMATO_NRO, Convert.ToDecimal(dtHeader.Rows[0]["ImporteImpuestoLiquidadoMonedaFacturacion"].ToString()));
            }
            else
            {
                UnReporte.TotalIva = "0,00";
            }

            decimal subtotal = 0;
            if (dtHeader.Rows[0]["ImporteMonedaFacturacion"].ToString() != string.Empty)
                subtotal = Convert.ToDecimal(dtHeader.Rows[0]["ImporteMonedaFacturacion"].ToString());
            if (dtHeader.Rows[0]["ImportePercepcionIIBBMonedaFacturacion"].ToString() != string.Empty)
                subtotal -= Convert.ToDecimal(dtHeader.Rows[0]["ImportePercepcionIIBBMonedaFacturacion"].ToString());
            UnReporte.SubTotal = String.Format(FORMATO_NRO, subtotal);

            decimal subtotalB = 0;
            if (dtHeader.Rows[0]["ImporteMonedaFacturacionComprobanteB"].ToString() != string.Empty)
                subtotalB = Convert.ToDecimal(dtHeader.Rows[0]["ImporteMonedaFacturacionComprobanteB"].ToString());
            UnReporte.SubTotalComprobanteB = String.Format(FORMATO_NRO, subtotalB);

            decimal subtotalgravado = 0;
            if (dtHeader.Rows[0]["ImporteGravadoMonedaFacturacion"].ToString() != string.Empty)
                subtotalgravado -= Convert.ToDecimal(dtHeader.Rows[0]["ImporteGravadoMonedaFacturacion"].ToString());
            UnReporte.SubTotalGravadoMonedaFacturacion = String.Format(FORMATO_NRO, subtotal);

            decimal totalpercep = 0;
            if (dtHeader.Rows[0]["ImportePercepcionIIBBMonedaFacturacion"].ToString() != string.Empty)
                totalpercep = Convert.ToDecimal(dtHeader.Rows[0]["ImportePercepcionIIBBMonedaFacturacion"].ToString());
            UnReporte.TotalPercepcionIIBB = String.Format(FORMATO_NRO, totalpercep);

            if (dtHeader.Rows[0]["ImporteMonedaFacturacion"].ToString() != string.Empty)
                UnReporte.Total = String.Format(FORMATO_NRO, Convert.ToDecimal(dtHeader.Rows[0]["ImporteMonedaFacturacion"].ToString()));

            if (dtHeader.Rows[0]["ImporteMonedaFacturacionComprobanteB"].ToString() != string.Empty)
                UnReporte.TotalComprobanteB = String.Format(FORMATO_NRO, Convert.ToDecimal(dtHeader.Rows[0]["ImporteMonedaFacturacionComprobanteB"].ToString()));

            if (dtHeader.Rows[0]["ImporteGravadoMonedaFacturacion"].ToString() != string.Empty)
                UnReporte.TotalGravadoMonedaFacturacion = String.Format(FORMATO_NRO, Convert.ToDecimal(dtHeader.Rows[0]["ImporteGravadoMonedaFacturacion"].ToString()));

            UnReporte.LetraCbte = dtHeader.Rows[0]["LetraComprobante"].ToString();

            UnReporte.TipoCbte = tipoDeCopia.ToString();
            UnReporte.NumCodigo = "Código N° " + Utils.Utils.FillWithCeros(CbteCodigo, 2);

            string strTime = WSPrint.Common.GetDateStringValue(dtHeader.Rows[0]["FechaComprobante"].ToString());
            UnReporte.DayCbte = (strTime.Split('/')[0].Length > 1) ? strTime.Split('/')[0] : "0" + strTime.Split('/')[0];
            UnReporte.MonthCbte = (strTime.Split('/')[1].Length > 1) ? strTime.Split('/')[1] : "0" + strTime.Split('/')[1];
            UnReporte.YearCbte = strTime.Split('/')[2].ToString();
            UnReporte.FechaCbte = UnReporte.DayCbte + "/" + UnReporte.MonthCbte + "/" + UnReporte.YearCbte;

            DateTime dVencimiento;
            if (DateTime.TryParse(Convert.ToString(dtHeader.Rows[0]["FechaVencimiento"]), out dVencimiento))
                UnReporte.FechaVto = dVencimiento.ToString("dd/MM/yyyy");

            UnReporte.ObservacionesCabecera = dtHeader.Rows[0]["Observaciones1"].ToString().Replace("|", "\n");
            UnReporte.ObservacionesCuerpo = dtHeader.Rows[0]["Observaciones2"].ToString().Replace("|", "\n");
            UnReporte.ObservacionesPie = dtHeader.Rows[0]["Observaciones3"].ToString().Replace("|", "\n");

            string monedaConvertida = sqlEngine.ObtenerEquivalencia("EquivAFIPMoneda", oSettings.EmpresaID, dtHeader.Rows[0]["CodigoMoneda"].ToString().Trim());
            UnReporte.Moneda = WSPrint.Common.GetDescripcionMoneda(monedaConvertida);

            UnReporte.CAE = dtHeader.Rows[0]["CAE"].ToString();

            string strtimeVto = UnReporte.FechaVto;

            if (dtHeader.Rows[0]["RapiPago"] != null)
                UnReporte.Rapipago = dtHeader.Rows[0]["RapiPago"].ToString();

            if (dtHeader.Rows[0]["PagoFacil"] != null)
                UnReporte.Pagofacil = dtHeader.Rows[0]["PagoFacil"].ToString();

            UnReporte.BarCodeCbte = WSPrint.Common.GetBarCode(oEmpresa.NroDocumento,
                                                    Utils.Utils.FillWithCeros(CbteCodigo, 2),
                                                    dtHeader.Rows[0]["PuntoVenta"].ToString(),
                                                    UnReporte.CAE,
                                                    strtimeVto.Split('/')[2] + ((strtimeVto.Split('/')[1].Length == 1) ? "0" + strtimeVto.Split('/')[1] : strtimeVto.Split('/')[1]) + ((strtimeVto.Split('/')[0].Length == 1) ? "0" + strtimeVto.Split('/')[0] : strtimeVto.Split('/')[0]));
            /**************************************************************************************/
            decimal ImporteGravado = 0;
            if (dtHeader.Rows[0]["ImporteGravado"].ToString() != string.Empty)
                ImporteGravado = Convert.ToDecimal(dtHeader.Rows[0]["ImporteGravado"].ToString());
            UnReporte.ImpuestoSubGrav = String.Format(FORMATO_NRO, ImporteGravado);

            decimal ImporteNoGravado = 0;
            if (dtHeader.Rows[0]["ImporteNoGravado"].ToString() != string.Empty)
                ImporteNoGravado = Convert.ToDecimal(dtHeader.Rows[0]["ImporteNoGravado"].ToString());
            UnReporte.ImporteSubNoGrav = String.Format(FORMATO_NRO, ImporteNoGravado);

            if (dtHeader.Rows[0]["LetraComprobante"].ToString() == "A")
            {
                decimal ImporteSubTotal = ImporteGravado + ImporteNoGravado;
                UnReporte.ImporteSubTotal = String.Format(FORMATO_NRO, ImporteSubTotal);
            }
            if (dtHeader.Rows[0]["LetraComprobante"].ToString() == "B")
            {
                decimal ImporteImpuestoLiquidado = 0;
                if (dtHeader.Rows[0]["ImporteImpuestoLiquidado"].ToString() != string.Empty)
                    ImporteImpuestoLiquidado = Convert.ToDecimal(dtHeader.Rows[0]["ImporteImpuestoLiquidado"].ToString());

                decimal ImporteSubTotal = ImporteGravado + ImporteNoGravado + ImporteImpuestoLiquidado;
                UnReporte.ImporteSubTotal = String.Format(FORMATO_NRO, ImporteSubTotal);
            }
            /**************************************************************************************/
            /*
            decimal CUOTAIVA21 = 0;
            if (dtHeader.Rows[0]["CUOTAIVA21"].ToString() != string.Empty)
                CUOTAIVA21 = Convert.ToDecimal(dtHeader.Rows[0]["CUOTAIVA21"].ToString());
            UnReporte.CUOTAIVA21 = String.Format(FORMATO_NRO, CUOTAIVA21);

            decimal CUOTAIVA105 = 0;
            if (dtHeader.Rows[0]["CUOTAIVA105"].ToString() != string.Empty)
                CUOTAIVA105 = Convert.ToDecimal(dtHeader.Rows[0]["CUOTAIVA105"].ToString());
            UnReporte.CUOTAIVA105 = String.Format(FORMATO_NRO, CUOTAIVA105);
            */
        }