3 using System.Collections.Generic;
17 using System.Windows.Forms;
22 using System.Drawing.Printing;
28 namespace sage.ew.ewbase
76 #region Variables de entorno 81 protected bool _lHera = Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_hera"));
85 protected bool _lSage50 = Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_sage50"));
89 protected bool _lColor = Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_color"));
93 protected bool _lPeso = Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_peso"));
97 protected bool _lCajas = Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_cajas"));
99 #endregion Variables de entorno 104 private Empresa _oEmpresa = null;
112 private Report _oReport = null;
120 private List<OpcionesImpresion> _oOpciones_Impresion;
128 protected List<CampoOrdenacion> _oCamposOrdenacion = null;
138 public delegate
void _ImpresionVistaPreliminarEvent();
140 private String _cPrinter =
"";
141 private String _cRutaFichero =
"";
142 private String _cTemplate;
143 private String _cDestinatario_Email =
"";
144 private String _cPlantillaComunicado =
"";
145 private int _nNumero_Copias = 0;
146 private bool _lIVA_Desglosado =
true;
147 private bool _lEditMode =
false;
148 private bool _lValorado =
true;
149 private bool _lVista_Preliminar =
false;
150 private bool _lFieldRandomBackColor =
false;
151 private bool _lExportar =
false;
152 private bool _lEmail =
false;
153 private bool _lEmailAut =
false;
154 private DataTable _dtPlantillasComunicados = null;
162 protected String _cIdioma =
"";
166 protected UserControl _oUserControlAdicional = null;
170 private Boolean _bUnMailCliente =
false;
174 private Boolean _bMarcarImpreso =
false;
178 private List<FiltroImpresion> _oFiltrosDocumentosImpresion =
new List<FiltroImpresion>();
182 protected String _cReportBaseEW =
"";
186 private String _cErrorMessage =
"";
217 private bool _bImprimirExelOpenXml =
false;
222 public Boolean _ImprimirExelOpenXml
226 return _bImprimirExelOpenXml;
230 _bImprimirExelOpenXml = value;
240 return _oMascaraImport;
251 return _oMascaraPrecio;
262 return _oMascaraPorcent;
273 return _oMascaraUnidades;
284 return _oMascaraPeso;
295 return _oMascaraCajas;
308 public virtual Boolean _ShowEditMode
319 public string _Idioma
327 if (_cIdioma != value)
330 _Printer = String.Empty;
338 public string _ErrorMessage
342 return _cErrorMessage;
346 _cErrorMessage = value;
353 public String _ReportBaseEW
357 return _cReportBaseEW;
364 public Boolean _UnMailCliente
368 return _bUnMailCliente;
372 _bUnMailCliente = value;
380 public Boolean _MarcarImpreso
384 return _bMarcarImpreso;
388 _bMarcarImpreso = value;
395 public string _Template
404 if (_cTemplate != value)
407 _cPrinter = String.Empty;
434 if (_oDocumento == null || String.IsNullOrWhiteSpace(_oDocumento.
_Empresa))
436 _oEmpresa = EW_GLOBAL._Empresa;
438 else if (_oDocumento != null && (_oEmpresa == null || _oEmpresa.
_Codigo != _oDocumento.
_Empresa))
455 if (_oTerminal == null) _oTerminal = EW_GLOBAL._Terminal == null ?
new Terminal() : EW_GLOBAL._Terminal as
Terminal;
468 if (_oFileDialog == null)
470 _oFileDialog = EW_GLOBAL._FileDialog365;
484 if (_oReport == null) _oReport = _CrearReport();
500 return _oTipoImpresion;
504 _oTipoImpresion = value;
511 public virtual bool _DivisaActiva
515 bool divisaActiva =
false;
516 if (_Documento != null &&
529 public virtual String _Printer
533 if (String.IsNullOrWhiteSpace(_cPrinter)) _cPrinter = Obtener_impresora();
534 if (String.IsNullOrWhiteSpace(_cPrinter)) _cPrinter = _DefaultSystemPrinter;
546 public virtual String _DefaultSystemPrinter
550 PrinterSettings loSettings =
new PrinterSettings();
551 return loSettings.PrinterName;
558 public List<OpcionesImpresion> _Opciones_Impresion
562 return _oOpciones_Impresion;
566 _oOpciones_Impresion = value;
573 public virtual UserControl _UserControlAdicional
577 return _oUserControlAdicional;
581 _oUserControlAdicional = value;
588 public bool _IVA_Desglosado
592 return _lIVA_Desglosado;
596 _lIVA_Desglosado = value;
603 public bool _Valorado
618 public virtual bool _Vista_Preliminar
626 _lVista_Preliminar = value;
628 if (value && _ImpresionVistaPreliminar == null)
630 _ImpresionVistaPreliminar += () => { _MarcaDocumentoImpreso(); };
649 public int _Numero_Copias
653 return _nNumero_Copias;
657 _nNumero_Copias = value;
664 public string _Ruta_Fichero
668 return _cRutaFichero;
672 if (value == null) _cRutaFichero =
"";
673 else _cRutaFichero = value;
680 public bool _EditMode
695 public bool _FieldRandomBackColor
699 return _lFieldRandomBackColor;
703 _lFieldRandomBackColor = value;
710 public eFormato_exportacion _Formato_exportacion
714 return _eFormato_exportacion;
718 _eFormato_exportacion = value;
725 public bool _Exportar
740 public string _Destinatario_Email
744 return _cDestinatario_Email;
748 if (value == null) _cDestinatario_Email =
"";
749 else _cDestinatario_Email = value;
756 public bool _EmailAut
786 public virtual List<CampoOrdenacion> _CamposOrdenacion
790 return _oCamposOrdenacion;
794 _oCamposOrdenacion = value;
801 public string _PlantillaComunicado
805 return _cPlantillaComunicado;
809 _cPlantillaComunicado = value;
813 #endregion PROPIEDADES 820 public delegate
void _Evento_Exportacion_Completada(
object sender, ExportEventArgs e);
838 public string _Path {
get;
set; }
840 #endregion Propiedades 842 #region Constructores 861 #endregion Constructores 871 if (_Evento_Exportacion_Finalizada != null)
877 #region Métodos IDocPrint 886 throw new NotImplementedException();
897 throw new NotImplementedException();
919 toDocPrint.
_Email = _Email;
939 if (loCamposOrdenacion.Count > 0)
943 if (tdDatos.Columns.Contains(loCampo.
_Campo))
945 if (!String.IsNullOrEmpty(lcOrden)) lcOrden +=
",";
950 if (!String.IsNullOrEmpty(lcOrden))
954 tdDatos.CaseSensitive =
true;
955 loDataView = tdDatos.DefaultView;
956 loDataView.Sort = lcOrden;
957 tdDatos = loDataView.ToTable();
964 #endregion Métodos IDocPrint 966 #region Métodos auxiliares 973 _Report?._OpenEditor();
988 _Report._Name = _GetFileReportName(_Documento._Nombre);
990 String lcPath = _Ruta_Fichero;
991 Boolean llExportO365 =
false;
993 if (_FileDialog._IsPath(lcPath))
995 lcPath = Path.GetTempFileName() + lcPath.Substring(lcPath.LastIndexOf(
"."));
1000 _Report._FieldRandomBackColor = _FieldRandomBackColor;
1002 _AsignarEventoImpresionVistaPreviaAfter(loAction);
1006 _ExportarOpenXml(lcPath);
1013 _Report._ExecuteAction(ref lcPath, loAction, _Printer, Convert.ToInt16(_Numero_Copias), llSuppressUserInteraction:
true);
1036 _FileDialog._UploadFile(lcPath, _Ruta_Fichero);
1038 _LanzarEvento_ExportacionCompletada(lcPath);
1043 if (!String.IsNullOrWhiteSpace(_Destinatario_Email) && File.Exists(lcPath)) _SendEmail(lcPath);
1046 if (Debugger.IsAttached && !String.IsNullOrEmpty(_Report._Error_Message))
MessageBox.Show(_Report._Error_Message);
1049 _Documento._DocPrint = null;
1091 return loExport.
CreateFile(_Report._ReportTitle, _Report._ReportData);
1118 toReport._ImpresionVistaPreliminar += () => { _ImpresionVistaPreliminar(); };
1122 _Report._ImpresionVistaPreliminar += () => { _ImpresionVistaPreliminar(); };
1135 return _SendEmail(tcFileName,
new List<string>());
1145 protected bool _SendEmail(
string tcFicherosAdjuntos, List<string> toEmailsCCO)
1147 return _SendEmail(tcFicherosAdjuntos.Split(
'|').ToList(), toEmailsCCO);
1157 protected bool _SendEmail(List<string> toFicherosAdjuntos, List<string> toEmailsCCO)
1159 #if ewTools //Rendimiento 1160 EwTools._WriteTrace(EwTools.eMethodStatus.Inicio);
1163 string lcSubject = _Documento._Nombre;
1169 List<string> loEmailsDestino =
new List<string>();
1170 loEmailsDestino = _Destinatario_Email.Split(
';').ToList();
1172 if (toFicherosAdjuntos.Count > 0)
1174 lcBody = (toFicherosAdjuntos.Count > 1) ?
"Se adjuntan los siguientes archivos o vínculos: " :
"Se adjunta el siguiente archivo o vínculo: ";
1175 lcBody +=
string.Join(
", ", toFicherosAdjuntos.Select(f => Path.GetFileName(f)));
1179 string lcCliente =
string.Empty;
1180 string lcProveedor =
string.Empty;
1181 string lcClientePotencial =
string.Empty;
1182 string lcResumen =
string.Empty;
1183 dynamic loDoc = _Documento;
1189 lcCliente = loDoc._Items[0]._Codigo;
1190 lcResumen =
"Entregas a cuenta: " + loDoc._Items[0]._Factura;
1197 lcProveedor = loDoc._Cabecera._Proveedor;
1198 lcResumen =
"Albaran de compra: " + loDoc._Numero;
1202 lcProveedor = loDoc._Cabecera._Proveedor;
1203 lcResumen =
"Depósito de compra: " + loDoc._Numero;
1207 lcProveedor = loDoc._Cabecera._Proveedor;
1208 lcResumen =
"Factura de compra: " + loDoc._Numero;
1212 lcProveedor = loDoc._Cabecera._Proveedor;
1213 lcResumen =
"Pedido de compra: " + loDoc._Numero;
1217 lcProveedor = loDoc._Cabecera._Proveedor;
1218 lcResumen =
"Propuesta de compra: " + loDoc._Numero;
1224 lcCliente = loDoc._Cabecera._Cliente;
1225 lcResumen =
"Albarán de venta: " + loDoc._Letra + loDoc._Numero;
1229 lcCliente = loDoc._Cabecera._Cliente;
1230 lcResumen =
"Depósito de venta: " + loDoc._Letra + loDoc._Numero;
1235 string lcBodyExtra =
"";
1238 if (!
string.IsNullOrWhiteSpace(_Empresa._Mensaje_FactElec_Asunto))
1241 lcBodyExtra = _GetBodyExtra();
1243 if (!
string.IsNullOrWhiteSpace(lcBodyExtra))
1244 lcBody = $
"{FUNCTIONS.TextToHtml(lcBodyExtra)}<br><br>{lcBody}";
1246 lcCliente = loDoc._Cabecera._Cliente;
1247 lcResumen =
"Factura de venta: " + loDoc._Letra + loDoc._Numero;
1251 lcCliente = loDoc._Cabecera._Cliente;
1252 lcResumen =
"Pedido de venta: " + loDoc._Letra + loDoc._Numero;
1256 lcCliente = loDoc._Cabecera._Cliente;
1257 lcClientePotencial = loDoc._Cabecera._Futuro ? Convert.ToString(loDoc._Cabecera._Futuro_Cliente) :
"";
1258 lcResumen =
"Presupuesto de venta: " + loDoc._Letra + loDoc._Numero;
1262 lcCliente = loDoc._Cliente;
1263 lcResumen =
"Servicio: " + loDoc._Letra + loDoc._Numero;
1272 _Emails = loEmailsDestino,
1273 _Subject = lcSubject,
1275 _Attachments = toFicherosAdjuntos,
1276 _ShowEmailForm = !_EmailAut,
1277 _CCOUsuarioActivo = toEmailsCCO.Count == 0,
1278 _CCUsuarioActivo = toEmailsCCO.Count == 0,
1279 _EmailsCCO = toEmailsCCO
1283 ConfigurarPlantillaComunicado(loSendMail, lcCliente, lcProveedor, lcClientePotencial);
1286 _ConfigureSendMail(loSendMail);
1289 llOk = loSendMail.
_Send(lcCliente, lcProveedor, lcResumen);
1291 if (!llOk && !
string.IsNullOrWhiteSpace(loSendMail.
_Error_Message))
1292 FUNCTIONS._MessageBox(loSendMail.
_Error_Message, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, DialogResult.OK);
1303 return _Empresa._Mensaje_FactElec_Cuerpo.Trim();
1322 #if ewTools //Rendimiento 1323 EwTools._WriteTrace(EwTools.eMethodStatus.Inicio);
1326 DataTable ldtLineas =
new DataTable();
1328 List<FilterReportBase> llisFiltros =
new List<FilterReportBase>();
1331 loReport =
new Report(_GetReportFileName(), ldtLineas);
1334 loReport._TableName = loReport._ReportTitle = _GetReportBase();
1337 loReport._ReportTitlePreview = _Documento._ReportTitlePreview;
1338 loReport._Name = _Documento._Nombre;
1341 loReport._FieldNameOnAutosizeForze =
"descripcion";
1343 _ConfigurePath(loReport);
1345 if (_Documento != null)
1348 loReport._TipoDocumento = _GetTipoDocumento();
1351 Dictionary<string, object> ldicParametrosReport =
new Dictionary<string, object>();
1353 #if ewTools //Rendimiento 1354 EwTools._WriteTrace(EwTools.eMethodStatus.Llamando,
"_ConfigurarObtencionFiltros");
1357 _ConfigurarObtencionFiltros(ref ldicParametrosReport);
1358 #if ewTools //Rendimiento 1359 EwTools._WriteTrace(EwTools.eMethodStatus.Volviendo,
"_ConfigurarObtencionFiltros");
1363 _GetFilters(_Documento, ldicParametrosReport, ref llisFiltros);
1365 #if ewTools //Rendimiento 1366 EwTools._WriteTrace(EwTools.eMethodStatus.Llamando,
"_Obtener_Datos_SageReports");
1369 DataTable loDataTable = _Documento._Obtener_Datos_SageReports(ldicParametrosReport);
1371 loDataTable = _OrdenarDatosSageReports(_GetCamposOrdenacion(), loDataTable);
1375 loReport._ReportData = loDataTable;
1377 #if ewTools //Rendimiento 1378 EwTools._WriteTrace(EwTools.eMethodStatus.Volviendo,
"_Obtener_Datos_SageReports");
1381 loReport._WorksWithDivisa = _DivisaActiva;
1384 #if ewTools //Rendimiento 1385 EwTools._WriteTrace(EwTools.eMethodStatus.Llamando,
"Asignar loReport._Filtros ");
1387 loReport._Filtros = llisFiltros;
1388 #if ewTools //Rendimiento 1389 EwTools._WriteTrace(EwTools.eMethodStatus.Volviendo,
"Asignar loReport._Filtros ");
1394 #if ewTools //Rendimiento 1395 EwTools._WriteTrace(EwTools.eMethodStatus.Fin);
1409 private void ConfigurarPlantillaComunicado(
SendMail loSendMail,
string tcCliente,
string tcProveedor,
string tcClientePotencial)
1412 if (
string.IsNullOrWhiteSpace(_PlantillaComunicado))
1416 DataRow dtRow = ConfigurarPlantillaComunicadoCodigo(_PlantillaComunicado);
1420 string lcAsunto = Convert.ToString(dtRow[
"asunto"]);
1421 string lcCuerpo = Convert.ToString(dtRow[
"cuerpo"]);
1424 loSendMail.
_Subject = !
string.IsNullOrWhiteSpace(lcAsunto) ? lcAsunto : loSendMail.
_Subject;
1426 string lcFigura =
string.Empty;
1428 if (!
string.IsNullOrWhiteSpace(tcClientePotencial))
1430 lcFigura = tcClientePotencial;
1433 else if (!
string.IsNullOrWhiteSpace(tcCliente))
1435 lcFigura = tcCliente;
1438 else if (!
string.IsNullOrWhiteSpace(tcProveedor))
1440 lcFigura = tcProveedor;
1445 if (loGenerar.
_Simular(lcFigura, loTipoFigura, lcCuerpo))
1455 private DataRow ConfigurarPlantillaComunicadoCodigo(
string tcCodigo)
1457 DataRow dtRow = null;
1458 if (_dtPlantillasComunicados == null)
1464 if (_dtPlantillasComunicados != null)
1465 dtRow = _dtPlantillasComunicados.AsEnumerable().Where(x => x.Field<
string>(
"codigo") == _PlantillaComunicado).ToList().FirstOrDefault();
1471 private void _ConfigurePath(
Report toReport)
1473 _ConfigureCustomPath(toReport);
1475 toReport.
_PathServer = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_iniservidor"));
1485 ((
ReportPath)toReport.
_Path)._Empresa = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_empresa"));
1486 ((
ReportPath)toReport.
_Path)._Usuario = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_usuario"));
1487 ((
ReportPath)toReport.
_Path)._Caja = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_cajatpv"));
1550 private List<CampoOrdenacion> _GetCamposOrdenacion()
1552 List<CampoOrdenacion> loCamposSeleccionados =
new List<CampoOrdenacion>(); ;
1554 if (_CamposOrdenacion is List<CampoOrdenacion>)
1556 loCamposSeleccionados = (from loCampo in _CamposOrdenacion
1557 where loCampo._Seleccionado && !String.IsNullOrEmpty(loCampo._Campo)
1558 select loCampo).ToList();
1561 return loCamposSeleccionados;
1570 return _Documento._ReportBase;
1577 public String _ReportBase
1581 return _GetReportBase();
1588 public List<FiltroImpresion> _FiltrosDocumentosImpresion
1592 return _oFiltrosDocumentosImpresion;
1596 _oFiltrosDocumentosImpresion = value;
1609 #if ewTools //Rendimiento 1610 EwTools._MedirTiempo(EwTools.eMethodStatus.Inicio);
1616 if (_Exportar || !String.IsNullOrEmpty(_Destinatario_Email))
1618 switch (_Formato_exportacion)
1648 #if ewTools //Rendimiento 1649 EwTools._MedirTiempo(EwTools.eMethodStatus.Fin);
1667 #if ewTools //Rendimiento 1668 EwTools._MedirTiempo(EwTools.eMethodStatus.Inicio);
1672 string lcPrinterName =
"";
1673 DataTable ldtImpresora =
new DataTable();
1675 #region Configuración del terminal 1678 if (_Terminal._ExisteRegistro)
1680 String lcDocumento =
"";
1683 if(!String.IsNullOrEmpty(_ReportBaseEW))
1685 lcDocumento = _ReportBaseEW;
1687 else if (_Documento != null)
1689 lcDocumento = _Documento._ReportBase;
1692 if (String.IsNullOrEmpty(lcPrinterName))
1696 if (Convert.ToBoolean(_Terminal._Campo(
"HERCONFTPV")))
1698 lcSql = String.Format(
"SELECT i.GUID_ID FROM {0} i INNER JOIN {1} c ON i.CODIGO = c.IMPRESORA2 WHERE c.CODIGO = '{2}' ", DB.SQLDatabase(
"TPV",
"IMPRESOR"), DB.SQLDatabase(
"TPV",
"CAJAS"), EW_GLOBAL._GetVariable(
"wc_cajatpv"));
1700 else if (!String.IsNullOrEmpty(_Terminal._Campo(
"IMPNORM").ToString().Trim()))
1702 lcSql = String.Format(
"SELECT i.GUID_ID FROM {0} i WHERE i.CODIGO = '{1}' ", DB.SQLDatabase(
"TPV",
"IMPRESOR"), _Terminal._Campo(
"IMPNORM"));
1706 if(!String.IsNullOrEmpty(lcSql))
1708 ldtImpresora =
new DataTable();
1709 DB.SQLExec(lcSql, ref ldtImpresora);
1711 if(ldtImpresora.Rows.Count > 0)
1713 tpv.Impresora loImpresora =
new tpv.Impresora();
1714 loImpresora._Load(Convert.ToString(ldtImpresora.Rows[0][0]));
1715 if(!String.IsNullOrEmpty(loImpresora._Nombre_Local)) lcPrinterName = functions.FUNCTIONS._GetPrinterDriver(loImpresora._Nombre_Local);
1720 if (String.IsNullOrEmpty(lcPrinterName)) lcPrinterName = Convert.ToString(_Terminal._Campo(
"IMPRESORA")).TrimEnd();
1724 #endregion Configuración del terminal 1726 #region Configuración de último uso SAGE REPORTS 1729 if (String.IsNullOrWhiteSpace(lcPrinterName))
1731 string lcSageReportPrinter =
"";
1733 if (!String.IsNullOrEmpty(_Template))
1735 lcSageReportPrinter = Convert.ToString(DB.SQLValor(
"SAGEREPORTS",
new string[2] {
"USUARIO",
"ID_REPLAN" },
new string[2] { Usuario._This._Codigo, _Template },
"IMPRESORA",
"COMUNES"));
1739 lcSageReportPrinter = Convert.ToString(DB.SQLValor(
"SAGEREPORTS",
new string[2] {
"USUARIO",
"LOWER(REPORT)" },
new string[2] { Usuario._This._Codigo, _GetReportFileName() },
"IMPRESORA",
"COMUNES"));
1741 if (!String.IsNullOrWhiteSpace(lcSageReportPrinter)) lcPrinterName = lcSageReportPrinter.TrimEnd();
1744 #endregion Configuración de último uso SAGE REPORTS 1746 #if ewTools //Rendimiento 1747 EwTools._MedirTiempo(EwTools.eMethodStatus.Fin);
1750 return lcPrinterName;
1759 return Convert.ToString(DB.SQLValor(
"IMP_REPS",
new string[2] {
"TERMINAL",
"UPPER(INFORME)" },
new string[2] { _Terminal._Codigo, tcDocumento },
"IMPRESORA",
"COMUNES"));
1771 #if ewTools //Rendimiento 1772 EwTools._MedirTiempo(EwTools.eMethodStatus.Inicio);
1777 Dictionary<string, object> ldicFiltrosDefecto, ldicFiltrosNegocio;
1781 llOk = _AddFiltersFromDicctionary(ldicFiltrosNegocio, ref tlisFiltros);
1785 llOk = _AddFiltersFromDicctionary(ldicFiltrosDefecto, ref tlisFiltros);
1787 #if ewTools //Rendimiento 1788 EwTools._MedirTiempo(EwTools.eMethodStatus.Fin);
1803 List<String> loKeys = (from loFiltro in toFiltros
1804 select loFiltro._Key).ToList();
1806 foreach (KeyValuePair<string, object> loKeyValue
in toDiccionario)
1808 if(!loKeys.Contains(loKeyValue.Key) && loKeyValue.Value != null)
1810 Type loType = loKeyValue.Value.GetType();
1816 else if (loType == typeof(String) || loType == typeof(Int32) || loType == typeof(Int16) || loType == typeof(Boolean))
1823 throw new ArgumentException(String.Format(
"Tipo de datos del filtro {0} no soportado. Tipo: {1}", loKeyValue.Key, loType.ToString()));
1839 _Configurar_obtencion_filtros(ref toDiccionario);
1860 return _Documento != null ? _Documento._ReportBase :
"";
1869 return String.Format(
"{0}.report", _GetReportName().ToLower());
1872 #endregion Métodos auxiliares 1874 #region Métodos públicos 1921 if(!ValidatePrinting())
1936 _PlantillaComunicado =
"";
1950 _ErrorMessage = $
"No se puede realizar {GetAccion()}.{Environment.NewLine}Sage Reports no está intalado.";
1953 else if (!File.Exists(_Report?._Path?._PathFile))
1955 _ErrorMessage = $
"No se puede realizar {GetAccion()}, el fichero del report {_Report._ReportFile.ToUpper()} no existe.";
1959 if (!
string.IsNullOrEmpty(_Ruta_Fichero) && !Directory.Exists(Path.GetDirectoryName(_Ruta_Fichero)))
1961 if (!
string.IsNullOrEmpty(_Destinatario_Email))
1963 if (Directory.Exists(EW_GLOBAL._Ruta_Exportacion_Docs()))
1965 _Ruta_Fichero = Path.Combine(EW_GLOBAL._Ruta_Exportacion_Docs(), Path.GetFileName(_Ruta_Fichero));
1969 _ErrorMessage =
"La ruta de exportación configurada en el mantenimiento de empresa es incorrecta.";
1974 _ErrorMessage = $
"No se puede realizar {GetAccion()}, el path del fichero de exportación {Path.GetDirectoryName(_Ruta_Fichero)} no existe.";
1977 else if (
string.IsNullOrEmpty(_Ruta_Fichero))
1979 _ErrorMessage =
"La ruta de exportación no puede estar vacia.";
1983 return string.IsNullOrEmpty(_ErrorMessage);
1987 private string GetAccion()
1992 loAction = Obtener_accion();
1998 lcAccion =
"la impresión";
2001 lcAccion =
"la previsualización";
2004 lcAccion =
"la edición";
2007 lcAccion =
"la exportación";
2023 #endregion Métodos públicos 2033 private String _cReportTitlePreview;
2034 private String _cNombre;
2039 public List<T> _Items =
new List<T>();
2044 public String _ErrorMessages =
"";
2052 DataTable ldtLineas =
new DataTable();
2054 List<FilterReportBase> llisFiltros =
new List<FilterReportBase>();
2057 loReport =
new Report(((
DocPrint)_DocPrint)._GetReportFileName(), ldtLineas);
2060 loReport._TableName = loReport._ReportTitle = ((
DocPrint)_DocPrint)._ReportBase;
2063 loReport._ReportTitlePreview = _Items.Count == 1 && !String.IsNullOrWhiteSpace(_Items[0]._ReportTitlePreview) ? _Items[0]._ReportTitlePreview : _ReportTitlePreview;
2064 loReport._Name = _Items.Count == 1 && !String.IsNullOrWhiteSpace(_Items[0]._Nombre) ? _Items[0]._Nombre : _Nombre;
2066 loReport._PathServer = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_iniservidor"));
2067 ((
ReportPath)loReport._Path)._Empresa = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_empresa"));
2068 ((
ReportPath)loReport._Path)._Usuario = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_usuario"));
2069 ((
ReportPath)loReport._Path)._Caja = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_cajatpv"));
2071 if (_Items.Count > 0)
2074 Dictionary<string, object> ldicParametrosReport =
new Dictionary<string, object>();
2079 DataTable loDataTable = _ObtenerDatosSageReports(ldicParametrosReport);
2081 loReport._ReportData = loDataTable;
2084 loReport._WorksWithDivisa = _DivisaActiva;
2087 loReport._Filtros = llisFiltros;
2095 public string _ReportTitlePreview
2099 return _cReportTitlePreview;
2103 _cReportTitlePreview = value;
2110 public string _Nombre
2132 _oDocPrint = _Documento._DocPrint;
2147 ((
DocPrint)_Documento._DocPrint)._ImpresionNormalMultiple = _ImpresionNormalMultiple;
2149 if (_Documento._Show_Print(tnAbrirEn))
2163 if(_Items.Count > 0)
2165 foreach (T loItem
in _Items)
2172 private DataTable _ObtenerDatosSageReports(Dictionary<string, object> tdicParametros = null)
2174 DataTable loDt = null;
2175 DataTable loDtToPrint = null;
2176 StringBuilder loErrors =
new StringBuilder();
2179 if (_Numero_Copias < 0) _Numero_Copias = 0;
2190 while (lnCopias <= _Numero_Copias)
2192 if (loDtToPrint is DataTable)
2194 if (loDt.Rows.Count > 0)
2196 foreach (DataRow loRow
in loDt.Rows)
2198 loDtToPrint.ImportRow(loRow);
2204 loDtToPrint = loDt.Copy();
2210 catch (Exception loEx)
2212 loErrors.AppendLine(loEx.Message);
2217 _ErrorMessages = loErrors.ToString();
2231 if (!File.Exists(_Report._Path._PathFile))
2233 _ErrorMessages = String.Format(
"El report {0} no existe", _Report._ReportFile);
2240 String lcPath = _Ruta_Fichero;
2241 Boolean llExportO365 =
false;
2243 if (_FileDialog._IsPath(lcPath))
2245 lcPath = Path.GetTempFileName() + lcPath.Substring(lcPath.LastIndexOf(
"."));
2246 llExportO365 =
true;
2250 _Report._FieldRandomBackColor = _FieldRandomBackColor;
2252 _AsignarEventoImpresionVistaPreviaAfter(loAction);
2256 _Report._ExecuteAction(ref lcPath, loAction, _Printer, 0, llSuppressUserInteraction:
true);
2274 if (llExportO365) _FileDialog._UploadFile(lcPath, _Ruta_Fichero);
2277 _LanzarEvento_ExportacionCompletada(lcPath);
2282 if (!String.IsNullOrWhiteSpace(_Destinatario_Email) && File.Exists(lcPath)) _SendEmail(lcPath);
2294 Boolean lOk =
false;
bool _Send(string tcCliente="", string tcProveedor="", string tcResumen="")
Envia el correo
virtual String _GetReportFileName()
C106325 Devuelve el nombre del fichero de report
void _UnLock(Report.ReportAction toAction)
Desbloquea el ususario
Clase para el envío de emails
virtual String _GetFileReportName(String tcNombre)
Trata el nombre antes de asignarlo al Report
Interficie del gestor de ficheros o365
bool _Simular()
Método para realizar una simulación del comunicado
ComunicaTipoFigura
Enumerado de tipos de figuras de los documentos
Classe empresa basada en sage.ew.ewmante
void _ConfigurarObtencionFiltros(ref Dictionary< string, object > toDiccionario)
Método auxiliar para la asignación de propiedades específicas de la clase DocPrintXXX Este diccionari...
eTipoDocumento
Tipo documento
virtual List< CampoOrdenacion > _CamposOrdenacion
Devuelve la lista de los campos por lo que se podrá ordenar para la impresión
static bool _EsDivisaEmpresa(string tcCodigoDivisa)
Método que informa de si es la misma divisa que la empresa
bool _GetFilters(ISageReportsFilterProvider toOrigen, Dictionary< string, object > toParams, ref List< FilterReportBase > tlisFiltros)
Método auxiliar que invoca la recuperación de filtros para SageReports
static sage.ew.usuario.Usuario _This
Instancia estática del objeto usuario con los datos del usuario actual (wc_usuario) ...
Definición de la interficie que han de cumplir aquellas clases que quieran proveer de información de ...
virtual bool ValidatePrinting()
Validaciones antes de imprimir
ExportEventArgs(string TcPath)
Constructor con parámetros
Clase documento de DEPOSITO DE COMPRA
bool _Email
Nos indicará si hay que enviar el email
virtual Report.ReportAction Obtener_accion()
Método auxiliar para determinar la acción a realizar Determinar si estamos imprimiendo o previsualiza...
Clase para la impresión de documentos como etiquetas
string _PlantillaComunicado
Nos indica la plantilla de comunicado a utilizar en el email
ExportEventArgs()
Contructor
Clase base de negocio de las entregas a cuenta por facturas
string _Idioma
Nos indicará el código del idioma para la impresión
bool _ValidatePrinting()
Validaciones antes de imprimir
int _Numero_Copias
Nos indicará el número de copias a imprimir
virtual DocPrint _Clonar(DocPrint toDocPrint)
Copia la configuración al Docprint pasado
Clase documento de venta TPV
eFormato_exportacion
Tipos de exportación soportados
ImpresionNormalMultiple _ImpresionNormalMultiple
Indica el tipo de impresión
virtual bool _SendEmail(string tcFileName)
Envia email segun confguracion del usuario Si tiene el opcemp 9050 activo, hace un envío directo medi...
Clase documento de PRESUPUESTOS
ImpresionNormalMultiple
Indica si es una impresión normal o multiple
ewMascara()
Crea una nueva instancia de la classe ewMascara.
void _AsignarEventoImpresionVistaPreviaAfter(Report.ReportAction toAction, Report toReport=null)
Asigna el evento para la impresión desde vista previa
Classe documento Factura de venta
virtual void _OpenEditor()
Abre la edicíon de report calculando las variables a partir del documento
KeyDiccionarioMascara
Clave para diccionario de máscaras
Clase documento de PROPUESTAS DE COMPRA
Dictionary< string, object > _Obtener_Filtros_SageReports(Dictionary< string, object > tdicParametros=null)
Método que devuelve un diccionario con parejas clave-valor para ser convertidas en Filtros de SageRep...
override Boolean _Print()
Override _Print
static Empresa _NewEmpresa(string tcCodigoEmpresa)
Devueleve una nueva instancia de empresa Puede devolver el objeto EW_GLOBAL._EMPRESA ...
string _Template
Indica si se impreme con una template
virtual DataTable _OrdenarDatosSageReports(List< CampoOrdenacion > loCamposOrdenacion, DataTable tdDatos)
Método que ordena los datos segun los campos especificados
String _PathServer
Path de la ruta del servidor
string _Error_Message
Mensaje de error
Classe documento Factura de compra
string _Mensaje_FactElec_Asunto
Envio directo: Texto que se incluirá en el asunto. Este texto se incluira antes del propio texto del ...
virtual Report _CrearReport()
PE-86889 Método que inicializa un reports y le asigna los valores comunes para la impresión ...
Clase documento de PEDIDOS
string _Destinatario_Email
Nos indicará la dirección de email en caso que se desee imprimir en PDF
Parámetros de retorno de exportación
ewTiposExportacion
Enumeración de los diferentes tipos de exportación
ReportAction
PE-84803 enum para las acciones a realizar
virtual Boolean _ExportarOpenXml(String tcPath)
Exportar exel en OpenXml
string _Empresa
Empresa que origina la impresión
static bool IsSageReportInstaled()
India si existe el fichero del deigner y por lo tanto esta instalado.
override string _Codigo
Sobreescribe el metodo _Codigo para cargar la configuración del TPV cuando se estableza el valor del ...
bool _IVA_Desglosado
Nos indicará si el documento se imprimirá con el IVA desglosado
virtual bool _Print()
Método que imprementa la impresión. Se debe implementar en la clase específica
Interficie de los objetos que soportan divisa
virtual void _ConfigureCustomPath(Report toReport)
Permite configurar el path
bool _SendEmail(List< string > toFicherosAdjuntos, List< string > toEmailsCCO)
Envia email segun confguracion del usuario Si tiene el opcemp 9050 activo, hace un envío directo medi...
ReportTPV clase que se utiliza para poder inicializar los datos de la clase Report ...
string _ObtenerImpresoraRes(String tcDocumento)
Obtiene la impresora configurada en IMP_REPS
virtual void _ConfigureSendMail(SendMail sendmail)
Permite reconfigurar el objeto SendMail antes de llamar a _Send()
DataTable _GetPlantillas(int tnTipo=-1)
Devuelve datatable con las plantillas de un tipo concreto
virtual string _GetReportBase()
Devuelve el report base
Definición de la interficie que han de cumplir aquellos clases que quieran modificar los resultados d...
TipoOrden
Indica el tipo de orden
virtual void _Configurar_obtencion_filtros(ref Dictionary< string, object > toDiccionario)
Método auxiliar para la asignación de propiedades específicas de la clase DocPrintXXX Este diccionari...
Clase para indicar el tipo de documento para los campos adicionales
string Obtener_impresora()
Método protected para tratar de establecer la impresora. 1.- Mira de obtener la impresora a través de...
bool _LockConnect(String tcProcess)
Bloquear el registro en la tabla connect
void _Lock(Report.ReportAction toAction)
Bloquea el ususario
Interficia par los documentos que se tiene que marcar como impresos
Clase para la exportación a Excel de los listados
virtual string _GetReportName()
Obtener el nombre del report base
_ImpresionVistaPreliminarEvent _ImpresionVistaPreliminar
Evento delegado para los messagebox
override bool _Show_Print(int tnAbrirEn=1)
ShowPrint
Proporciona características adicionales de las máscaras de Eurowin
TipoOrden _TipoOrden
Tipo de orden
eTipoDocumento
Detalle los tipos de documento posibles de ventas y compras
La paleta usa colores de estilo Excel.
static string _ValidaExtension(ReportAction type, String tcFileName)
Metodo que valida la extensión para un tipo de acción
string _Subject
Asunto del correo
Definición de la interfície necesaria para las páginas(tabPage) a utilizar en formularios de tipo For...
String _Campo
Campo por el que se ordenará
PE-86618 : Clase Terminal
virtual void _ObtenerConfigurarionOpcionesImpresionMultiple()
Metodo para cargar la configuración del UserControl de multiple impresión
IDocPrint _DocPrint
Referencia al objeto de impresión. Se utiliza para finalizar la interacción entre el Documento y el o...
BaseReportPath _Path
Path base
override bool _PrintNET()
PE-86889 Método para realizar la impresión de un documento mediante Sage Reports
Clase de negocio para la generación del comunicado.
int _Numero_Copias
Nos indicará el número de copias a imprimir
Clase documento de ALBARANES DE COMPRA
static Dictionary< string, object > _ObtenerFiltrosDefecto()
Obtine los filtros por defecto
Clase documento de PEDIDOS DE COMPRA
Clase de negocio para el mantenimiento de plantillas de comunicados.
virtual bool _Show_Print(int tnAbrirEn=1)
Método que imprementa la visualización de opciones de impresión. Se debe implementar en la clase espe...
override Report _CrearReport()
Método que inicializa un reports y le asigna los valores comunes para la impresión ...
virtual void _Reset()
Al fallar la validación hay que reiniciar algunos valores de la pantalla ya que ahora ésta no se cier...
virtual bool _Vista_Preliminar
Nos indicará si se realizará una vista preliminar del documento
Clase para traspasar información en el objeto serializado
virtual bool _PrintNET()
PE-86889 Método para realizar la impresión de un documento mediante Sage Reports
Clase base para traspasar información en el objeto serializado
override void _MarcaDocumentoImpreso()
Metodo que se ejecutará al imprimir desde el preview para marcar los documentos como impresos ...
bool _Valorado
Nos indicará si el documento se imprimirá valorado
Clase de negocio para la DIVISA (Moneda)
virtual string _GetBodyExtra()
Texto para el body del mail
Definición de la interficie que deben cumplir los documentos de cualquier tipo para poder interactuar...
virtual TipoDocumento _GetTipoDocumento()
Devuelve la relación del documento para los campos adicionales
bool _UnLockConnect()
Desbloquear el registro en la tabla connect
virtual void _MarcaDocumentoImpreso()
Metodo que se ejecutará al imprimir desde el preview para marcar los documentos como impresos ...
bool _SendEmail(string tcFicherosAdjuntos, List< string > toEmailsCCO)
Envia email segun confguracion del usuario Si tiene el opcemp 9050 activo, hace un envío directo medi...
string _Ruta_Fichero
Nos indicará la ruta donde nos guardará el fichero del documento en formato PDF
bool _EmailAut
Nos indicará si hay que enviar el email automáticamente
bool CreateFile(String tcTitle, DataTable toDt, List< ExcelCell > toListCells=null)
Crea un fichero a partir de los datos del DataTable
Clase para la impresión de documentos (del tipo que sea)
_Evento_Exportacion_Completada _Evento_Exportacion_Finalizada
Delegado del evento para el refresco del formulario
eFormato_exportacion _Obtener_formato_exportacion(ewTiposExportacion teTipo)
Conversor de enumeraciones. Permite pasar de ewTiposExportacion (objetos) a eFormato_exportacion (sag...
String _ValidaExtension(String tcPath)
Nos devuelve el fichero con la extensión
string _Body
Cuerpo del mensaje
DataTable _Obtener_Datos_SageReports(Dictionary< string, object > tdicParametros=null)
Método que devuelve un datatable con los datos para las líneas de SageReports
Diferentes opciones de para la ordenación de los datos para la impresión
bool _AddFiltersFromDicctionary(Dictionary< string, object > toDiccionario, ref List< FilterReportBase > toFiltros)
Método auxiliar que a partir de un diccionario de valores los añade a la lista de filtros recibida po...
virtual String _Printer
C106325 Devuelve la impresora configurada
bool _Exportar
Determina si el documento
virtual UserControl _UserControlAdicional
Opiones de impresión
eFormato_exportacion _Formato_exportacion
Formato de exportación
string _ResultHtml
Resultado html
virtual void _Load_Codigo_Config()
_Load_Codigo_Config: Creamos todos los campos de las tablas relacionadas con la pantalla de configura...
void _LanzarEvento_ExportacionCompletada(string tcPath)
Método auxiliar para el lanzamiento de eventos
Definición de la clase Usuario
Clase de documentos DEPOSITO