예제 #1
0
        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;
        }
예제 #2
0
        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);
            }
        }