DocPrint.cs
1 //#define ewTools //Descomentar para medir el rendimiento
2 using System;
3 using System.Collections.Generic;
4 using System.Linq;
5 using System.Text;
6 using sage.ew.interficies;
7 using sage.ew.reports;
8 using sage.ew.empresa;
9 using sage.ew.global;
10 using sage.ew.ewbase.Clases;
11 using sage.ew.db;
12 using sage.ew.tpv.Clases;
13 using sage.ew.usuario;
14 using sage.ew.objetos;
15 using System.Data;
16 using System.IO;
17 using System.Windows.Forms;
18 using sage.ew.docsven;
19 using sage.ew.docscompra;
20 using sage.ew.docventatpv;
21 using sage.ew.functions;
22 using System.Drawing.Printing;
23 using sage.ew.enumerations;
25 using System.Diagnostics;
27 
28 namespace sage.ew.ewbase
29 {
33  public class DocPrint : IDocPrint
34  {
39  {
43  Ninguno = 0,
47  Pdf = 1,
51  Excel = 2,
55  Excel_xlsx = 3,
59  Html = 4,
63  Xml = 5,
67  txt = 6,
71  CSV = 7
72  }
73 
74  #region Variables
75 
76  #region Variables de entorno
77 
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"));
98 
99  #endregion Variables de entorno
100 
104  private Empresa _oEmpresa = null;
108  private Terminal _oTerminal = null;
112  private Report _oReport = null;
116  private IDocumentoImprimible _oDocumento = null;
120  private List<OpcionesImpresion> _oOpciones_Impresion;
124  private eFormato_exportacion _eFormato_exportacion = eFormato_exportacion.Ninguno;
128  protected List<CampoOrdenacion> _oCamposOrdenacion = null;
129 
133  public event _ImpresionVistaPreliminarEvent _ImpresionVistaPreliminar;
134 
138  public delegate void _ImpresionVistaPreliminarEvent();
139 
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;
158  private ImpresionNormalMultiple _oTipoImpresion = ImpresionNormalMultiple.Normal;
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 = "";
187 
188  #region Mascaras
189 
193  private ewMascara _oMascaraImport = new ewbase.ewMascara(ew.global.EW_GLOBAL._GetMascara(KeyDiccionarioMascara.wc_total));
197  private ewMascara _oMascaraPrecio = new ewbase.ewMascara(ew.global.EW_GLOBAL._GetMascara(KeyDiccionarioMascara.wc_precioven));
201  protected ewMascara _oMascaraPorcent = new ewbase.ewMascara(ew.global.EW_GLOBAL._GetMascara(KeyDiccionarioMascara.wc_tpc));
205  protected ewMascara _oMascaraUnidades = new ewbase.ewMascara(ew.global.EW_GLOBAL._GetMascara(KeyDiccionarioMascara.wc_unidades));
209  protected ewMascara _oMascaraPeso = new ewbase.ewMascara(ew.global.EW_GLOBAL._GetMascara(KeyDiccionarioMascara.wc_mascarapeso));
213  protected ewMascara _oMascaraCajas = new ewbase.ewMascara(ew.global.EW_GLOBAL._GetMascara(KeyDiccionarioMascara.wc_mascaracajas));
217  private bool _bImprimirExelOpenXml = false;
218 
222  public Boolean _ImprimirExelOpenXml
223  {
224  get
225  {
226  return _bImprimirExelOpenXml;
227  }
228  set
229  {
230  _bImprimirExelOpenXml = value;
231  }
232  }
236  public ewMascara _Mascara_Importes
237  {
238  get
239  {
240  return _oMascaraImport;
241  }
242  }
243 
247  public ewMascara _Mascara_Precios
248  {
249  get
250  {
251  return _oMascaraPrecio;
252  }
253  }
254 
258  public ewMascara _Mascara_Porcentajes
259  {
260  get
261  {
262  return _oMascaraPorcent;
263  }
264  }
265 
269  public ewMascara _Mascara_Unidades
270  {
271  get
272  {
273  return _oMascaraUnidades;
274  }
275  }
276 
280  public ewMascara _Mascara_Pesos
281  {
282  get
283  {
284  return _oMascaraPeso;
285  }
286  }
287 
291  public ewMascara _Mascara_Cajas
292  {
293  get
294  {
295  return _oMascaraCajas;
296  }
297  }
298 
299  #endregion Mascaras
300 
301  #endregion Variables
302 
303  #region PROPIEDADES
304 
308  public virtual Boolean _ShowEditMode
309  {
310  get
311  {
312  return true;
313  }
314  }
315 
319  public string _Idioma
320  {
321  get
322  {
323  return _cIdioma;
324  }
325  set
326  {
327  if (_cIdioma != value)
328  {
329  _cIdioma = value;
330  _Printer = String.Empty;
331  }
332  }
333  }
334 
338  public string _ErrorMessage
339  {
340  get
341  {
342  return _cErrorMessage;
343  }
344  set
345  {
346  _cErrorMessage = value;
347  }
348  }
349 
353  public String _ReportBaseEW
354  {
355  get
356  {
357  return _cReportBaseEW;
358  }
359  }
360 
364  public Boolean _UnMailCliente
365  {
366  get
367  {
368  return _bUnMailCliente;
369  }
370  set
371  {
372  _bUnMailCliente = value;
373  }
374  }
375 
376 
380  public Boolean _MarcarImpreso
381  {
382  get
383  {
384  return _bMarcarImpreso;
385  }
386  set
387  {
388  _bMarcarImpreso = value;
389  }
390  }
391 
395  public string _Template
396  {
397  get
398  {
399  return _cTemplate;
400  }
401  set
402  {
403 
404  if (_cTemplate != value)
405  {
406  _cTemplate = value;
407  _cPrinter = String.Empty;
408  }
409  }
410  }
411 
415  protected IDocumentoImprimible _Documento
416  {
417  get
418  {
419  return _oDocumento;
420  }
421  set
422  {
423  _oDocumento = value;
424  }
425  }
426 
430  protected Empresa _Empresa
431  {
432  get
433  {
434  if (_oDocumento == null || String.IsNullOrWhiteSpace(_oDocumento._Empresa))
435  {
436  _oEmpresa = EW_GLOBAL._Empresa;
437  }
438  else if (_oDocumento != null && (_oEmpresa == null || _oEmpresa._Codigo != _oDocumento._Empresa))
439  {
440  _oEmpresa = Empresa._NewEmpresa(_oDocumento._Empresa);
441  _oEmpresa._Load_Codigo_Config();
442  }
443 
444  return _oEmpresa;
445  }
446  }
447 
451  protected Terminal _Terminal
452  {
453  get
454  {
455  if (_oTerminal == null) _oTerminal = EW_GLOBAL._Terminal == null ? new Terminal() : EW_GLOBAL._Terminal as Terminal;
456 
457  return _oTerminal;
458  }
459  }
460 
464  protected IFileDialog365 _FileDialog
465  {
466  get
467  {
468  if (_oFileDialog == null)
469  {
470  _oFileDialog = EW_GLOBAL._FileDialog365;
471  }
472  return _oFileDialog;
473  }
474  }
475  private IFileDialog365 _oFileDialog = null;
476 
480  protected Report _Report
481  {
482  get
483  {
484  if (_oReport == null) _oReport = _CrearReport();
485  return _oReport;
486  }
487  set
488  {
489  _oReport = value;
490  }
491  }
492 
496  public ImpresionNormalMultiple _ImpresionNormalMultiple
497  {
498  get
499  {
500  return _oTipoImpresion;
501  }
502  set
503  {
504  _oTipoImpresion = value;
505  }
506  }
507 
511  public virtual bool _DivisaActiva
512  {
513  get
514  {
515  bool divisaActiva = false;
516  if (_Documento != null && //Tengo documento
517  _Documento is IDivisaOperable && //Es operable con divisa
518  !string.IsNullOrWhiteSpace(((IDivisaOperable)_Documento)._Divisa)) //Tengo divisa informada
519  {
520  divisaActiva = !Divisa._EsDivisaEmpresa(((IDivisaOperable)_Documento)._Divisa);
521  }
522  return divisaActiva;
523  }
524  }
525 
529  public virtual String _Printer
530  {
531  get
532  {
533  if (String.IsNullOrWhiteSpace(_cPrinter)) _cPrinter = Obtener_impresora();
534  if (String.IsNullOrWhiteSpace(_cPrinter)) _cPrinter = _DefaultSystemPrinter;
535  return _cPrinter;
536  }
537  set
538  {
539  _cPrinter = value;
540  }
541  }
542 
546  public virtual String _DefaultSystemPrinter
547  {
548  get
549  {
550  PrinterSettings loSettings = new PrinterSettings();
551  return loSettings.PrinterName;
552  }
553  }
554 
558  public List<OpcionesImpresion> _Opciones_Impresion
559  {
560  get
561  {
562  return _oOpciones_Impresion;
563  }
564  set
565  {
566  _oOpciones_Impresion = value;
567  }
568  }
569 
573  public virtual UserControl _UserControlAdicional
574  {
575  get
576  {
577  return _oUserControlAdicional;
578  }
579  set
580  {
581  _oUserControlAdicional = value;
582  }
583  }
584 
588  public bool _IVA_Desglosado
589  {
590  get
591  {
592  return _lIVA_Desglosado;
593  }
594  set
595  {
596  _lIVA_Desglosado = value;
597  }
598  }
599 
603  public bool _Valorado
604  {
605  get
606  {
607  return _lValorado;
608  }
609  set
610  {
611  _lValorado = value;
612  }
613  }
614 
618  public virtual bool _Vista_Preliminar
619  {
620  get
621  {
622  return _ImpresionNormalMultiple == ImpresionNormalMultiple.Normal ? _lVista_Preliminar : false;
623  }
624  set
625  {
626  _lVista_Preliminar = value;
627 
628  if (value && _ImpresionVistaPreliminar == null)
629  {
630  _ImpresionVistaPreliminar += () => { _MarcaDocumentoImpreso(); };
631  }
632  }
633  }
634 
638  public virtual void _MarcaDocumentoImpreso()
639  {
640  if (_oDocumento is IMarcaImpreso)
641  {
642  ((IMarcaImpreso)_oDocumento)._Printed();
643  }
644  }
645 
649  public int _Numero_Copias
650  {
651  get
652  {
653  return _nNumero_Copias;
654  }
655  set
656  {
657  _nNumero_Copias = value;
658  }
659  }
660 
664  public string _Ruta_Fichero
665  {
666  get
667  {
668  return _cRutaFichero;
669  }
670  set
671  {
672  if (value == null) _cRutaFichero = ""; //PE-94887 Estos valores se pasan a VFP y este no admite nulos
673  else _cRutaFichero = value;
674  }
675  }
676 
680  public bool _EditMode
681  {
682  get
683  {
684  return _lEditMode;
685  }
686  set
687  {
688  _lEditMode = value;
689  }
690  }
691 
695  public bool _FieldRandomBackColor
696  {
697  get
698  {
699  return _lFieldRandomBackColor;
700  }
701  set
702  {
703  _lFieldRandomBackColor = value;
704  }
705  }
706 
710  public eFormato_exportacion _Formato_exportacion
711  {
712  get
713  {
714  return _eFormato_exportacion;
715  }
716  set
717  {
718  _eFormato_exportacion = value;
719  }
720  }
721 
725  public bool _Exportar
726  {
727  get
728  {
729  return _lExportar;
730  }
731  set
732  {
733  _lExportar = value;
734  }
735  }
736 
740  public string _Destinatario_Email
741  {
742  get
743  {
744  return _cDestinatario_Email;
745  }
746  set
747  {
748  if (value == null) _cDestinatario_Email = ""; //PE-94887 Estos valores se pasan a VFP y este no admite nulos
749  else _cDestinatario_Email = value;
750  }
751  }
752 
756  public bool _EmailAut
757  {
758  get
759  {
760  return _lEmailAut;
761  }
762  set
763  {
764  _lEmailAut = value;
765  }
766  }
767 
771  public bool _Email
772  {
773  get
774  {
775  return _lEmail;
776  }
777  set
778  {
779  _lEmail = value;
780  }
781  }
782 
786  public virtual List<CampoOrdenacion> _CamposOrdenacion
787  {
788  get
789  {
790  return _oCamposOrdenacion;
791  }
792  set
793  {
794  _oCamposOrdenacion = value;
795  }
796  }
797 
801  public string _PlantillaComunicado
802  {
803  get
804  {
805  return _cPlantillaComunicado;
806  }
807  set
808  {
809  _cPlantillaComunicado = value;
810  }
811  }
812 
813  #endregion PROPIEDADES
814 
815  #region Eventos
816 
820  public delegate void _Evento_Exportacion_Completada(object sender, ExportEventArgs e);
821 
825  public event _Evento_Exportacion_Completada _Evento_Exportacion_Finalizada;
826 
830  public class ExportEventArgs : EventArgs
831  {
832 
833  #region Propiedades
834 
838  public string _Path { get; set; }
839 
840  #endregion Propiedades
841 
842  #region Constructores
843 
847  public ExportEventArgs() : base()
848  {
849  _Path = "";
850  }
851 
856  public ExportEventArgs(string TcPath) : base()
857  {
858  _Path = TcPath;
859  }
860 
861  #endregion Constructores
862  }
863 
868  protected void _LanzarEvento_ExportacionCompletada(string tcPath)
869  {
870  //Si hay suscriptores les aviso
871  if (_Evento_Exportacion_Finalizada != null)
872  _Evento_Exportacion_Finalizada(this, new ExportEventArgs(tcPath));
873  }
874 
875  #endregion Eventos
876 
877  #region Métodos IDocPrint
878 
884  public virtual bool _Print()
885  {
886  throw new NotImplementedException();
887  }
888 
895  public virtual bool _Show_Print(int tnAbrirEn = 1)
896  {
897  throw new NotImplementedException();
898  }
899 
905  public virtual DocPrint _Clonar(DocPrint toDocPrint)
906  {
907  toDocPrint._Valorado = _Valorado;
908  toDocPrint._IVA_Desglosado = _IVA_Desglosado;
909  toDocPrint._Idioma = _Idioma;
910  toDocPrint._EmailAut = _EmailAut;
911  toDocPrint._Vista_Preliminar = _Vista_Preliminar;
912  toDocPrint._Destinatario_Email = _Destinatario_Email;
913  toDocPrint._PlantillaComunicado = _PlantillaComunicado;
914  toDocPrint._Numero_Copias = _Numero_Copias;
915  toDocPrint._Ruta_Fichero = _Ruta_Fichero;
916  toDocPrint._CamposOrdenacion = _CamposOrdenacion;
917  toDocPrint._Exportar = _Exportar;
918  toDocPrint._Formato_exportacion = _Formato_exportacion;
919  toDocPrint._Email = _Email;
920  toDocPrint._Template = _Template;
921  toDocPrint._Printer = _Printer;
922  toDocPrint._ImpresionNormalMultiple = _ImpresionNormalMultiple;
923  toDocPrint._UserControlAdicional = null;
924 
925  return toDocPrint;
926  }
927 
928 
935  public virtual DataTable _OrdenarDatosSageReports(List<CampoOrdenacion> loCamposOrdenacion, DataTable tdDatos)
936  {
937  String lcOrden = "";
938 
939  if (loCamposOrdenacion.Count > 0)
940  {
941  foreach (CampoOrdenacion loCampo in loCamposOrdenacion)
942  {
943  if (tdDatos.Columns.Contains(loCampo._Campo))
944  {
945  if (!String.IsNullOrEmpty(lcOrden)) lcOrden += ",";
946  lcOrden += String.Format("{0} {1}", loCampo._Campo, loCampo._TipoOrden == CampoOrdenacion.TipoOrden.Ascendente ? "asc" : "desc");
947  }
948  }
949 
950  if (!String.IsNullOrEmpty(lcOrden))
951  {
952  DataView loDataView;
953 
954  tdDatos.CaseSensitive = true; //Bug 109134
955  loDataView = tdDatos.DefaultView;
956  loDataView.Sort = lcOrden;
957  tdDatos = loDataView.ToTable();
958  }
959  }
960 
961  return tdDatos;
962  }
963 
964  #endregion Métodos IDocPrint
965 
966  #region Métodos auxiliares
967 
971  public virtual void _OpenEditor()
972  {
973  _Report?._OpenEditor();
974  }
975 
980  protected virtual bool _PrintNET()
981  {
982  bool llOk = true;
983 
984  //Determino acción predeterminada
985  Report.ReportAction loAction = Obtener_accion(); //Se crea un método para poder reaprovechar el código desde clases deribadas
986 
987  //Ponemos el nombre que utilizará para la impresión
988  _Report._Name = _GetFileReportName(_Documento._Nombre);
989 
990  String lcPath = _Ruta_Fichero;
991  Boolean llExportO365 = false;
992 
993  if (_FileDialog._IsPath(lcPath))
994  {
995  lcPath = Path.GetTempFileName() + lcPath.Substring(lcPath.LastIndexOf("."));
996  llExportO365 = true;
997  }
998 
999  //T111264
1000  _Report._FieldRandomBackColor = _FieldRandomBackColor;
1001 
1002  _AsignarEventoImpresionVistaPreviaAfter(loAction);
1003 
1004  if (_ImprimirExelOpenXml && _Exportar && loAction == Report.ReportAction.xlsx)
1005  {
1006  _ExportarOpenXml(lcPath);
1007  }
1008  else
1009  {
1010  //Bloqueamos el usuario
1011  _Lock(loAction);
1012  //Bloqueamos el usuario
1013  _Report._ExecuteAction(ref lcPath, loAction, _Printer, Convert.ToInt16(_Numero_Copias), llSuppressUserInteraction: true);
1014  //Desbloqueamos el usuario
1015  _UnLock(loAction);
1016  }
1017 
1018  if (loAction != Report.ReportAction.prn)
1019  {
1020 
1021  //PE-96202
1022  switch (loAction) //En función de la acción determino
1023  {
1024  //No hacer nada, solo exportaciones
1025  case Report.ReportAction.Email:
1026  case Report.ReportAction.none:
1027  case Report.ReportAction.preview:
1028  case Report.ReportAction.prn:
1029  case Report.ReportAction.edit:
1030  break;
1031 
1032  default:
1033 
1034  if (llExportO365)
1035  {
1036  _FileDialog._UploadFile(lcPath, _Ruta_Fichero);
1037  }
1038  _LanzarEvento_ExportacionCompletada(lcPath); //Notifico la ruta de exportación a los suscriptores
1039  break;
1040  }
1041 
1042  //Adicionamente a la exportación se puede haber indicado que lo mande por email
1043  if (!String.IsNullOrWhiteSpace(_Destinatario_Email) && File.Exists(lcPath)) _SendEmail(lcPath);
1044  }
1045 
1046  if (Debugger.IsAttached && !String.IsNullOrEmpty(_Report._Error_Message)) MessageBox.Show(_Report._Error_Message);
1047 
1048  //Corto el vínculo entre el documento y el objeto de impresión para no arrastrar configuraciones
1049  _Documento._DocPrint = null;
1050 
1051  return llOk;
1052  }
1053 
1058  protected void _Lock(Report.ReportAction toAction)
1059  {
1060  if (toAction == Report.ReportAction.edit) Usuario._This._LockConnect($"EDIT {_ReportBase}");
1061  }
1062 
1067  protected void _UnLock(Report.ReportAction toAction)
1068  {
1069  if (toAction == Report.ReportAction.edit) Usuario._This._UnLockConnect();
1070  }
1071 
1072 
1078  public virtual String _GetFileReportName(String tcNombre)
1079  {
1080  return tcNombre;
1081  }
1082 
1088  protected virtual Boolean _ExportarOpenXml(String tcPath)
1089  {
1090  ExportExcel loExport = new ExportExcel(tcPath);
1091  return loExport.CreateFile(_Report._ReportTitle, _Report._ReportData);
1092  }
1093 
1099  public String _ValidaExtension(String tcPath)
1100  {
1101  Report.ReportAction loAction = Obtener_accion();
1102 
1103  return Report._ValidaExtension(loAction, tcPath);
1104 
1105  }
1106 
1112  protected void _AsignarEventoImpresionVistaPreviaAfter(Report.ReportAction toAction, Report toReport = null)
1113  {
1114  if (toAction == Report.ReportAction.preview && _ImpresionVistaPreliminar != null)
1115  {
1116  if (toReport is Report)
1117  {
1118  toReport._ImpresionVistaPreliminar += () => { _ImpresionVistaPreliminar(); };
1119  }
1120  else
1121  {
1122  _Report._ImpresionVistaPreliminar += () => { _ImpresionVistaPreliminar(); };
1123  }
1124  }
1125  }
1126 
1133  protected virtual bool _SendEmail(string tcFileName)
1134  {
1135  return _SendEmail(tcFileName, new List<string>());
1136  }
1137 
1145  protected bool _SendEmail(string tcFicherosAdjuntos, List<string> toEmailsCCO)
1146  {
1147  return _SendEmail(tcFicherosAdjuntos.Split('|').ToList(), toEmailsCCO);
1148  }
1149 
1157  protected bool _SendEmail(List<string> toFicherosAdjuntos, List<string> toEmailsCCO)
1158  {
1159 #if ewTools //Rendimiento
1160  EwTools._WriteTrace(EwTools.eMethodStatus.Inicio);
1161 #endif
1162  bool llOk = true;
1163  string lcSubject = _Documento._Nombre;
1164  string lcBody = "";
1165 
1166  // PE-104751. Revisión para terminar de centralizar el envío del correo mediante la nueva clase "SendMail"
1167 
1168  // Preparar emails destino
1169  List<string> loEmailsDestino = new List<string>();
1170  loEmailsDestino = _Destinatario_Email.Split(';').ToList();
1171 
1172  if (toFicherosAdjuntos.Count > 0)
1173  {
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)));
1176  }
1177 
1178  //PE-101222: Preparar datos para guardar log al enviar email
1179  string lcCliente = string.Empty;
1180  string lcProveedor = string.Empty;
1181  string lcClientePotencial = string.Empty;
1182  string lcResumen = string.Empty;
1183  dynamic loDoc = _Documento;
1184 
1185  if (loDoc != null)
1186  {
1187  if (loDoc is EntregasFactura)
1188  {
1189  lcCliente = loDoc._Items[0]._Codigo;
1190  lcResumen = "Entregas a cuenta: " + loDoc._Items[0]._Factura;
1191  }
1192  else
1193  {
1194  switch ((eTipoDocumento)loDoc._TipoDocumento)
1195  {
1196  case eTipoDocumento.AlbaranCompra:
1197  lcProveedor = loDoc._Cabecera._Proveedor;
1198  lcResumen = "Albaran de compra: " + loDoc._Numero;
1199  break;
1200 
1201  case eTipoDocumento.DepositoCompra:
1202  lcProveedor = loDoc._Cabecera._Proveedor;
1203  lcResumen = "Depósito de compra: " + loDoc._Numero;
1204  break;
1205 
1206  case eTipoDocumento.FacturaCompra:
1207  lcProveedor = loDoc._Cabecera._Proveedor;
1208  lcResumen = "Factura de compra: " + loDoc._Numero;
1209  break;
1210 
1211  case eTipoDocumento.PedidoCompra:
1212  lcProveedor = loDoc._Cabecera._Proveedor;
1213  lcResumen = "Pedido de compra: " + loDoc._Numero;
1214  break;
1215 
1216  case eTipoDocumento.PropuestaCompra:
1217  lcProveedor = loDoc._Cabecera._Proveedor;
1218  lcResumen = "Propuesta de compra: " + loDoc._Numero;
1219  break;
1220 
1221  case eTipoDocumento.AlbaranVenta: // Albaran de venta no facturado
1222  case eTipoDocumento.Factura: // Albaran de venta facturado
1223  case eTipoDocumento.Ticket: // Albaran de venta facturado como ticket
1224  lcCliente = loDoc._Cabecera._Cliente;
1225  lcResumen = "Albarán de venta: " + loDoc._Letra + loDoc._Numero;
1226  break;
1227 
1228  case eTipoDocumento.DepositoVenta:
1229  lcCliente = loDoc._Cabecera._Cliente;
1230  lcResumen = "Depósito de venta: " + loDoc._Letra + loDoc._Numero;
1231  break;
1232 
1233  case eTipoDocumento.FacturaVenta:
1234 
1235  string lcBodyExtra = "";
1236 
1237  //PE-102719 : Tener en cuenta los textos configurables de Informes (Empresa > Configuracion > Informes > Textos)
1238  if (!string.IsNullOrWhiteSpace(_Empresa._Mensaje_FactElec_Asunto))
1239  lcSubject = _oEmpresa._Mensaje_FactElec_Asunto + " : " + lcSubject;
1240 
1241  lcBodyExtra = _GetBodyExtra();
1242 
1243  if (!string.IsNullOrWhiteSpace(lcBodyExtra))
1244  lcBody = $"{FUNCTIONS.TextToHtml(lcBodyExtra)}<br><br>{lcBody}";
1245 
1246  lcCliente = loDoc._Cabecera._Cliente;
1247  lcResumen = "Factura de venta: " + loDoc._Letra + loDoc._Numero;
1248  break;
1249 
1250  case eTipoDocumento.PedidoVenta:
1251  lcCliente = loDoc._Cabecera._Cliente;
1252  lcResumen = "Pedido de venta: " + loDoc._Letra + loDoc._Numero;
1253  break;
1254 
1255  case eTipoDocumento.PresupuestoVenta:
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;
1259  break;
1260 
1261  case eTipoDocumento.Services:
1262  lcCliente = loDoc._Cliente;
1263  lcResumen = "Servicio: " + loDoc._Letra + loDoc._Numero;
1264  break;
1265  }
1266  }
1267  }
1268 
1269  // PE-104208. Usar la nueva clase
1270  SendMail loSendMail = new SendMail
1271  {
1272  _Emails = loEmailsDestino,
1273  _Subject = lcSubject,
1274  _Body = lcBody,
1275  _Attachments = toFicherosAdjuntos,
1276  _ShowEmailForm = !_EmailAut,
1277  _CCOUsuarioActivo = toEmailsCCO.Count == 0,
1278  _CCUsuarioActivo = toEmailsCCO.Count == 0,
1279  _EmailsCCO = toEmailsCCO
1280  };
1281 
1282  // Task 198556 - Configurar email según plantilla
1283  ConfigurarPlantillaComunicado(loSendMail, lcCliente, lcProveedor, lcClientePotencial);
1284 
1285  // Bug 173603 : Permitimos reconfigurar el objeto
1286  _ConfigureSendMail(loSendMail);
1287 
1288  // Envío del correo
1289  llOk = loSendMail._Send(lcCliente, lcProveedor, lcResumen);
1290 
1291  if (!llOk && !string.IsNullOrWhiteSpace(loSendMail._Error_Message))
1292  FUNCTIONS._MessageBox(loSendMail._Error_Message, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, DialogResult.OK);
1293 
1294  return llOk;
1295  }
1296 
1301  protected virtual string _GetBodyExtra()
1302  {
1303  return _Empresa._Mensaje_FactElec_Cuerpo.Trim();
1304  }
1305 
1306  // Bug 173603
1311  public virtual void _ConfigureSendMail(SendMail sendmail)
1312  {
1313 
1314  }
1315 
1320  public virtual Report _CrearReport()
1321  {
1322 #if ewTools //Rendimiento
1323  EwTools._WriteTrace(EwTools.eMethodStatus.Inicio);
1324 #endif
1325 
1326  DataTable ldtLineas = new DataTable();
1327  Report loReport = null;
1328  List<FilterReportBase> llisFiltros = new List<FilterReportBase>();
1329 
1330  //PE-88304
1331  loReport = new Report(_GetReportFileName(), ldtLineas);
1332 
1333  //PE-97636 DEbemos poner el nombre del report base
1334  loReport._TableName = loReport._ReportTitle = _GetReportBase();
1335  //loReport._ReportTitle = lcReportName;
1336 
1337  loReport._ReportTitlePreview = _Documento._ReportTitlePreview; //PE-103490
1338  loReport._Name = _Documento._Nombre;
1339 
1340  //Forzamos que los ajuste de tamaño se realizen sobre el campo definición
1341  loReport._FieldNameOnAutosizeForze = "descripcion";
1342 
1343  _ConfigurePath(loReport);
1344 
1345  if (_Documento != null)
1346  {
1347  //Indicamos el tipo de documento
1348  loReport._TipoDocumento = _GetTipoDocumento();
1349 
1350  //Recuperación de filtros de cabecera de documento
1351  Dictionary<string, object> ldicParametrosReport = new Dictionary<string, object>();
1352 
1353 #if ewTools //Rendimiento
1354  EwTools._WriteTrace(EwTools.eMethodStatus.Llamando, "_ConfigurarObtencionFiltros");
1355 #endif
1356  //Llamo al método específico de cada Subclase para la recuperación de la configuración a utilizar durante la recuperación de filtros en el documento
1357  _ConfigurarObtencionFiltros(ref ldicParametrosReport);
1358 #if ewTools //Rendimiento
1359  EwTools._WriteTrace(EwTools.eMethodStatus.Volviendo, "_ConfigurarObtencionFiltros");
1360 #endif
1361 
1362  //Obtengo los datos específicos del _Documento
1363  _GetFilters(_Documento, ldicParametrosReport, ref llisFiltros);
1364 
1365 #if ewTools //Rendimiento
1366  EwTools._WriteTrace(EwTools.eMethodStatus.Llamando, "_Obtener_Datos_SageReports");
1367 #endif
1368  //Obtengo los datos de las líneas
1369  DataTable loDataTable = _Documento._Obtener_Datos_SageReports(ldicParametrosReport);
1370  //T107428 Ordenamos los datos seleccionados
1371  loDataTable = _OrdenarDatosSageReports(_GetCamposOrdenacion(), loDataTable);
1372 
1373  if (_Documento is ISageReportsEditDataProvider) loDataTable = ((ISageReportsEditDataProvider)_Documento)._Modificar_Datos_SageReports(loDataTable, ldicParametrosReport);
1374 
1375  loReport._ReportData = loDataTable;
1376 
1377 #if ewTools //Rendimiento
1378  EwTools._WriteTrace(EwTools.eMethodStatus.Volviendo, "_Obtener_Datos_SageReports");
1379 #endif
1380  //Asignamos si trabaja con divisas
1381  loReport._WorksWithDivisa = _DivisaActiva;
1382  }
1383 
1384 #if ewTools //Rendimiento
1385  EwTools._WriteTrace(EwTools.eMethodStatus.Llamando, "Asignar loReport._Filtros ");
1386 #endif
1387  loReport._Filtros = llisFiltros;
1388 #if ewTools //Rendimiento
1389  EwTools._WriteTrace(EwTools.eMethodStatus.Volviendo, "Asignar loReport._Filtros ");
1390 #endif
1391  // Lanzar impresión
1392  //loReport._OpenEditor(); //Descomentar esta linea si se estan copiando reports para poder editar el apartado ENLACES y cambiar la tabla
1393 
1394 #if ewTools //Rendimiento
1395  EwTools._WriteTrace(EwTools.eMethodStatus.Fin);
1396 #endif
1397 
1398  return loReport;
1399  }
1400 
1401 
1409  private void ConfigurarPlantillaComunicado(SendMail loSendMail, string tcCliente, string tcProveedor, string tcClientePotencial)
1410  {
1411  // Si no hay plantilla comunicado no hacer nada
1412  if (string.IsNullOrWhiteSpace(_PlantillaComunicado))
1413  return;
1414 
1415  // Obtener la información de la plantilla
1416  DataRow dtRow = ConfigurarPlantillaComunicadoCodigo(_PlantillaComunicado);
1417  if (dtRow == null)
1418  return;
1419 
1420  string lcAsunto = Convert.ToString(dtRow["asunto"]);
1421  string lcCuerpo = Convert.ToString(dtRow["cuerpo"]);
1422 
1423  // Sustituir el asunto
1424  loSendMail._Subject = !string.IsNullOrWhiteSpace(lcAsunto) ? lcAsunto : loSendMail._Subject;
1425 
1426  string lcFigura = string.Empty;
1428  if (!string.IsNullOrWhiteSpace(tcClientePotencial))
1429  {
1430  lcFigura = tcClientePotencial;
1431  loTipoFigura = ComunicadosGenerar.ComunicaTipoFigura.ClientePotencial;
1432  }
1433  else if (!string.IsNullOrWhiteSpace(tcCliente))
1434  {
1435  lcFigura = tcCliente;
1436  loTipoFigura = ComunicadosGenerar.ComunicaTipoFigura.Cliente;
1437  }
1438  else if (!string.IsNullOrWhiteSpace(tcProveedor))
1439  {
1440  lcFigura = tcProveedor;
1441  loTipoFigura = ComunicadosGenerar.ComunicaTipoFigura.Proveedor;
1442  }
1443 
1444  ComunicadosGenerar loGenerar = new ComunicadosGenerar();
1445  if (loGenerar._Simular(lcFigura, loTipoFigura, lcCuerpo))
1446  loSendMail._Body = loGenerar._ResultHtml;
1447  loGenerar = null;
1448  }
1449 
1455  private DataRow ConfigurarPlantillaComunicadoCodigo(string tcCodigo)
1456  {
1457  DataRow dtRow = null;
1458  if (_dtPlantillasComunicados == null)
1459  {
1460  using (PlantillasComunicados loPlantilla = new PlantillasComunicados())
1461  _dtPlantillasComunicados = loPlantilla._GetPlantillas(4);
1462  }
1463 
1464  if (_dtPlantillasComunicados != null)
1465  dtRow = _dtPlantillasComunicados.AsEnumerable().Where(x => x.Field<string>("codigo") == _PlantillaComunicado).ToList().FirstOrDefault();
1466 
1467  return dtRow;
1468  }
1469 
1470 
1471  private void _ConfigurePath(Report toReport)
1472  {
1473  _ConfigureCustomPath(toReport);
1474 
1475  toReport._PathServer = Convert.ToString(EW_GLOBAL._GetVariable("wc_iniservidor"));
1476  }
1477 
1478 
1483  protected virtual void _ConfigureCustomPath(Report toReport)
1484  {
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"));
1488  }
1489 
1494  protected virtual TipoDocumento _GetTipoDocumento()
1495  {
1496  TipoDocumento loTipo;
1497 
1498  if (_Documento is ewDocCompraPEDIDO)
1499  {
1500  loTipo = new TipoDocumento(TipoDocumento.eTipoDocumento.Pedicom);
1501  }
1502  else if (_Documento is ewDocCompraALBARAN)
1503  {
1504  loTipo = new TipoDocumento(TipoDocumento.eTipoDocumento.Albacom);
1505  }
1506  else if (_Documento is ewDocCompraFACTURA)
1507  {
1508  loTipo = new TipoDocumento(TipoDocumento.eTipoDocumento.Factucom);
1509  }
1510  else if (_Documento is ewDocCompraDEPOSITO)
1511  {
1512  loTipo = new TipoDocumento(TipoDocumento.eTipoDocumento.Depocom);
1513  }
1514  else if (_Documento is ewDocCompraPROPUESTA)
1515  {
1516  loTipo = new TipoDocumento(TipoDocumento.eTipoDocumento.Precom);
1517  }
1518  else if (_Documento is ewDocVentaDEPOSITO)
1519  {
1520  loTipo = new TipoDocumento(TipoDocumento.eTipoDocumento.Depoven);
1521  }
1522  else if (_Documento is ewDocVentaPRESUP)
1523  {
1524  loTipo = new TipoDocumento(TipoDocumento.eTipoDocumento.Presuven);
1525  }
1526  else if (_Documento is ewDocVentaTPV)
1527  {
1528  loTipo = new TipoDocumento(TipoDocumento.eTipoDocumento.Albaven);
1529  }
1530  else if (_Documento is ewDocVentaFRA)
1531  {
1532  loTipo = new TipoDocumento(TipoDocumento.eTipoDocumento.Factuven);
1533  }
1534  else if (_Documento is ewDocVentaPED)
1535  {
1536  loTipo = new TipoDocumento(TipoDocumento.eTipoDocumento.Pediven);
1537  }
1538  else
1539  {
1540  loTipo = new TipoDocumento();
1541  }
1542 
1543  return loTipo;
1544  }
1545 
1550  private List<CampoOrdenacion> _GetCamposOrdenacion()
1551  {
1552  List<CampoOrdenacion> loCamposSeleccionados = new List<CampoOrdenacion>(); ;
1553 
1554  if (_CamposOrdenacion is List<CampoOrdenacion>)
1555  {
1556  loCamposSeleccionados = (from loCampo in _CamposOrdenacion
1557  where loCampo._Seleccionado && !String.IsNullOrEmpty(loCampo._Campo)
1558  select loCampo).ToList();
1559  }
1560 
1561  return loCamposSeleccionados;
1562  }
1563 
1568  protected virtual string _GetReportBase()
1569  {
1570  return _Documento._ReportBase;
1571  }
1572 
1577  public String _ReportBase
1578  {
1579  get
1580  {
1581  return _GetReportBase();
1582  }
1583  }
1584 
1588  public List<FiltroImpresion> _FiltrosDocumentosImpresion
1589  {
1590  get
1591  {
1592  return _oFiltrosDocumentosImpresion;
1593  }
1594  set
1595  {
1596  _oFiltrosDocumentosImpresion = value;
1597  }
1598  }
1599 
1600  //PE-95253
1607  protected virtual Report.ReportAction Obtener_accion()
1608  {
1609 #if ewTools //Rendimiento
1610  EwTools._MedirTiempo(EwTools.eMethodStatus.Inicio);
1611 #endif
1612 
1613  Report.ReportAction loAction = _Vista_Preliminar ? Report.ReportAction.preview : Report.ReportAction.prn;
1614 
1615  //Miro si debo modificar la acción por otra de exportación
1616  if (_Exportar || !String.IsNullOrEmpty(_Destinatario_Email)) //Si tengo marcado exportación o destinatario de email
1617  {
1618  switch (_Formato_exportacion)
1619  {
1620  case eFormato_exportacion.Excel:
1621  loAction = Report.ReportAction.xls;
1622  break;
1623  case eFormato_exportacion.Excel_xlsx:
1624  loAction = Report.ReportAction.xlsx;
1625  break;
1626  case eFormato_exportacion.Html:
1627  loAction = Report.ReportAction.html;
1628  break;
1629  case eFormato_exportacion.Xml:
1630  loAction = Report.ReportAction.xml;
1631  break;
1632  //T111264
1633  case eFormato_exportacion.txt:
1634  loAction = Report.ReportAction.txt;
1635  break;
1636  case eFormato_exportacion.CSV:
1637  loAction = Report.ReportAction.delimited;
1638  break;
1639  //Marcada exportación pero sin elegir formato => Se elige PDF
1640  case eFormato_exportacion.Ninguno:
1641  case eFormato_exportacion.Pdf:
1642  default:
1643  loAction = Report.ReportAction.pdf;
1644  break;
1645  }
1646  }
1647 
1648 #if ewTools //Rendimiento
1649  EwTools._MedirTiempo(EwTools.eMethodStatus.Fin);
1650 #endif
1651 
1652  //T111264
1653  if (_EditMode) loAction = Report.ReportAction.edit;
1654 
1655  return loAction;
1656  }
1657 
1665  protected string Obtener_impresora()
1666  {
1667 #if ewTools //Rendimiento
1668  EwTools._MedirTiempo(EwTools.eMethodStatus.Inicio);
1669 #endif
1670 
1671  String lcSql;
1672  string lcPrinterName = "";
1673  DataTable ldtImpresora = new DataTable();
1674 
1675  #region Configuración del terminal
1676 
1677  //Determinamos si realemte hay un registro para este código
1678  if (_Terminal._ExisteRegistro)
1679  {
1680  String lcDocumento = "";
1681 
1682  //Ahora trato de mejorar el resultado mirando si hay una específica para el documento
1683  if(!String.IsNullOrEmpty(_ReportBaseEW))
1684  {
1685  lcDocumento = _ReportBaseEW;
1686  }
1687  else if (_Documento != null)
1688  {
1689  lcDocumento = _Documento._ReportBase;
1690  }
1691 
1692  if (String.IsNullOrEmpty(lcPrinterName))
1693  {
1694  lcSql = "";
1695  //PE-95961
1696  if (Convert.ToBoolean(_Terminal._Campo("HERCONFTPV")))
1697  {
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"));
1699  }
1700  else if (!String.IsNullOrEmpty(_Terminal._Campo("IMPNORM").ToString().Trim()))
1701  {
1702  lcSql = String.Format("SELECT i.GUID_ID FROM {0} i WHERE i.CODIGO = '{1}' ", DB.SQLDatabase("TPV", "IMPRESOR"), _Terminal._Campo("IMPNORM"));
1703  }
1704 
1705 
1706  if(!String.IsNullOrEmpty(lcSql))
1707  {
1708  ldtImpresora = new DataTable();
1709  DB.SQLExec(lcSql, ref ldtImpresora);
1710 
1711  if(ldtImpresora.Rows.Count > 0)
1712  {
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); //PE-95961 Se añade un trim al nombre de impresora ya que viene con espacios en blanco
1716  }
1717  }
1718 
1719  //PE-96827
1720  if (String.IsNullOrEmpty(lcPrinterName)) lcPrinterName = Convert.ToString(_Terminal._Campo("IMPRESORA")).TrimEnd();
1721  }
1722  }
1723 
1724  #endregion Configuración del terminal
1725 
1726  #region Configuración de último uso SAGE REPORTS
1727 
1728  //Sino tengo nombre de impresora lo busco en COMUNES.SAGEREPORTS
1729  if (String.IsNullOrWhiteSpace(lcPrinterName))
1730  {
1731  string lcSageReportPrinter = "";
1732 
1733  if (!String.IsNullOrEmpty(_Template))
1734  {
1735  lcSageReportPrinter = Convert.ToString(DB.SQLValor("SAGEREPORTS", new string[2] { "USUARIO", "ID_REPLAN" }, new string[2] { Usuario._This._Codigo, _Template }, "IMPRESORA", "COMUNES"));
1736  }
1737  else
1738  {
1739  lcSageReportPrinter = Convert.ToString(DB.SQLValor("SAGEREPORTS", new string[2] { "USUARIO", "LOWER(REPORT)" }, new string[2] { Usuario._This._Codigo, _GetReportFileName() }, "IMPRESORA", "COMUNES"));
1740  }
1741  if (!String.IsNullOrWhiteSpace(lcSageReportPrinter)) lcPrinterName = lcSageReportPrinter.TrimEnd(); //Si he obtenido impresora asigno.
1742  }
1743 
1744  #endregion Configuración de último uso SAGE REPORTS
1745 
1746 #if ewTools //Rendimiento
1747  EwTools._MedirTiempo(EwTools.eMethodStatus.Fin);
1748 #endif
1749 
1750  return lcPrinterName;
1751  }
1752 
1757  public string _ObtenerImpresoraRes(String tcDocumento)
1758  {
1759  return Convert.ToString(DB.SQLValor("IMP_REPS", new string[2] { "TERMINAL", "UPPER(INFORME)" }, new string[2] { _Terminal._Codigo, tcDocumento }, "IMPRESORA", "COMUNES"));
1760  }
1761 
1769  protected bool _GetFilters(ISageReportsFilterProvider toOrigen, Dictionary<string, object> toParams, ref List<FilterReportBase> tlisFiltros)
1770  {
1771 #if ewTools //Rendimiento
1772  EwTools._MedirTiempo(EwTools.eMethodStatus.Inicio);
1773 #endif
1774  //Diccionario de recogida de filtros
1775  bool llOk = true;
1776 
1777  Dictionary<string, object> ldicFiltrosDefecto, ldicFiltrosNegocio;
1778 
1779  ldicFiltrosNegocio = toOrigen._Obtener_Filtros_SageReports(toParams);
1780 
1781  llOk = _AddFiltersFromDicctionary(ldicFiltrosNegocio, ref tlisFiltros);
1782 
1783  ldicFiltrosDefecto = ReportTPV._ObtenerFiltrosDefecto();
1784 
1785  llOk = _AddFiltersFromDicctionary(ldicFiltrosDefecto, ref tlisFiltros);
1786 
1787 #if ewTools //Rendimiento
1788  EwTools._MedirTiempo(EwTools.eMethodStatus.Fin);
1789 #endif
1790  return llOk;
1791  }
1792 
1799  protected bool _AddFiltersFromDicctionary(Dictionary<string, object> toDiccionario, ref List<FilterReportBase> toFiltros)
1800  {
1801  bool llOk = true;
1802 
1803  List<String> loKeys = (from loFiltro in toFiltros
1804  select loFiltro._Key).ToList();
1805 
1806  foreach (KeyValuePair<string, object> loKeyValue in toDiccionario)
1807  {
1808  if(!loKeys.Contains(loKeyValue.Key) && loKeyValue.Value != null)
1809  {
1810  Type loType = loKeyValue.Value.GetType();
1811 
1812  if(loKeyValue.Value is FilterReportBase)
1813  {
1814  toFiltros.Add((FilterReportBase)loKeyValue.Value);
1815  }
1816  else if (loType == typeof(String) || loType == typeof(Int32) || loType == typeof(Int16) || loType == typeof(Boolean))
1817  {
1818  toFiltros.Add(new FilterReport(loKeyValue.Key, Convert.ToString(loKeyValue.Value), FilterReport.TypeFilter.Especial));
1819  }
1820  else
1821  {
1822  //Sage Reports soporta objects pero la clase puente ReportTPV no esta preparada
1823  throw new ArgumentException(String.Format("Tipo de datos del filtro {0} no soportado. Tipo: {1}", loKeyValue.Key, loType.ToString()));
1824  }
1825  }
1826  }
1827 
1828  return llOk;
1829  }
1830 
1837  public void _ConfigurarObtencionFiltros(ref Dictionary<string, object> toDiccionario)
1838  {
1839  _Configurar_obtencion_filtros(ref toDiccionario);
1840  }
1841 
1848  protected virtual void _Configurar_obtencion_filtros(ref Dictionary<string, object> toDiccionario)
1849  {
1850  //Este método debe implementarse en las clases deribadas y sirve para generar un diccionario con las propiedades específicas del DocPrintXXX concreto y poder
1851  //mandarlo al _Documento usando los métodos de la BASE (DocPrint)
1852  }
1853 
1858  protected virtual string _GetReportName()
1859  {
1860  return _Documento != null ? _Documento._ReportBase : "";
1861  }
1862 
1867  public virtual String _GetReportFileName()
1868  {
1869  return String.Format("{0}.report", _GetReportName().ToLower());
1870  }
1871 
1872  #endregion Métodos auxiliares
1873 
1874  #region Métodos públicos
1875 
1880  {
1881 
1882  }
1883 
1884  //PE-95253
1891  {
1892  eFormato_exportacion leResultado = eFormato_exportacion.Ninguno;
1893 
1894  switch (teTipo)
1895  {
1896  case ewTiposExportacion.Excel:
1897  leResultado = eFormato_exportacion.Excel;
1898  break;
1899  case ewTiposExportacion.HTML:
1900  leResultado = eFormato_exportacion.Html;
1901  break;
1902 
1903  case ewTiposExportacion.XML:
1904  leResultado = eFormato_exportacion.Xml;
1905  break;
1906 
1907  case ewTiposExportacion.PDF:
1908  default:
1909  leResultado = eFormato_exportacion.Pdf;
1910  break;
1911  }
1912  return leResultado;
1913  }
1914 
1919  public bool _ValidatePrinting()
1920  {
1921  if(!ValidatePrinting())
1922  {
1923  _Reset();
1924  return false;
1925  }
1926 
1927  return true;
1928  }
1929 
1933  protected virtual void _Reset()
1934  {
1935  _oReport = null;
1936  _PlantillaComunicado = "";
1937  _Exportar = false;
1938  }
1939 
1944  protected virtual bool ValidatePrinting()
1945  {
1946  _ErrorMessage = "";
1947 
1949  {
1950  _ErrorMessage = $"No se puede realizar {GetAccion()}.{Environment.NewLine}Sage Reports no está intalado.";
1951  }
1952  // PE-101701. Hay que comprobar que el documento exista en el disco
1953  else if (!File.Exists(_Report?._Path?._PathFile))
1954  {
1955  _ErrorMessage = $"No se puede realizar {GetAccion()}, el fichero del report {_Report._ReportFile.ToUpper()} no existe.";
1956  }
1957  else if (_Exportar)
1958  {
1959  if (!string.IsNullOrEmpty(_Ruta_Fichero) && !Directory.Exists(Path.GetDirectoryName(_Ruta_Fichero)))
1960  {
1961  if (!string.IsNullOrEmpty(_Destinatario_Email))
1962  {
1963  if (Directory.Exists(EW_GLOBAL._Ruta_Exportacion_Docs()))
1964  {
1965  _Ruta_Fichero = Path.Combine(EW_GLOBAL._Ruta_Exportacion_Docs(), Path.GetFileName(_Ruta_Fichero));
1966  }
1967  else
1968  {
1969  _ErrorMessage = "La ruta de exportación configurada en el mantenimiento de empresa es incorrecta.";
1970  }
1971  }
1972  else
1973  {
1974  _ErrorMessage = $"No se puede realizar {GetAccion()}, el path del fichero de exportación {Path.GetDirectoryName(_Ruta_Fichero)} no existe.";
1975  }
1976  }
1977  else if (string.IsNullOrEmpty(_Ruta_Fichero))
1978  {
1979  _ErrorMessage = "La ruta de exportación no puede estar vacia.";
1980  }
1981  }
1982 
1983  return string.IsNullOrEmpty(_ErrorMessage);
1984 
1985  }
1986 
1987  private string GetAccion()
1988  {
1989  string lcAccion;
1990  Report.ReportAction loAction;
1991 
1992  loAction = Obtener_accion();
1993 
1994  switch (loAction)
1995  {
1996  case Report.ReportAction.htmlPrn:
1997  case Report.ReportAction.prn:
1998  lcAccion = "la impresión";
1999  break;
2000  case Report.ReportAction.preview:
2001  lcAccion = "la previsualización";
2002  break;
2003  case Report.ReportAction.edit:
2004  lcAccion = "la edición";
2005  break;
2006  default:
2007  lcAccion = "la exportación";
2008  break;
2009 
2010  }
2011 
2012  return lcAccion;
2013  }
2014 
2018  public DocPrint()
2019  {
2020 
2021  }
2022 
2023  #endregion Métodos públicos
2024  }
2025 
2030  public class MultiDocPrint<T> : DocPrint where T : IDocumentoImprimible
2031  {
2032  private IDocPrint _oDocPrint = null;
2033  private String _cReportTitlePreview;
2034  private String _cNombre;
2035 
2039  public List<T> _Items = new List<T>();
2040 
2044  public String _ErrorMessages = "";
2045 
2050  public override Report _CrearReport()
2051  {
2052  DataTable ldtLineas = new DataTable();
2053  Report loReport = null;
2054  List<FilterReportBase> llisFiltros = new List<FilterReportBase>();
2055 
2056  //PE-88304
2057  loReport = new Report(((DocPrint)_DocPrint)._GetReportFileName(), ldtLineas);
2058 
2059  //PE-97636 DEbemos poner el nombre del report base
2060  loReport._TableName = loReport._ReportTitle = ((DocPrint)_DocPrint)._ReportBase;
2061  //loReport._ReportTitle = lcReportName;
2062 
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;
2065 
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"));
2070 
2071  if (_Items.Count > 0)
2072  {
2073  //Recuperación de filtros de cabecera de documento
2074  Dictionary<string, object> ldicParametrosReport = new Dictionary<string, object>();
2075 
2076  _AddFiltersFromDicctionary(ReportTPV._ObtenerFiltrosDefecto(), ref llisFiltros);
2077 
2078  //Obtengo los datos de las líneas
2079  DataTable loDataTable = _ObtenerDatosSageReports(ldicParametrosReport);
2080 
2081  loReport._ReportData = loDataTable;
2082 
2083  //Asignamos si trabaja con divisas
2084  loReport._WorksWithDivisa = _DivisaActiva;
2085 
2086  }
2087  loReport._Filtros = llisFiltros;
2088 
2089  return loReport;
2090  }
2091 
2095  public string _ReportTitlePreview
2096  {
2097  get
2098  {
2099  return _cReportTitlePreview;
2100  }
2101  set
2102  {
2103  _cReportTitlePreview = value;
2104  }
2105  }
2106 
2110  public string _Nombre
2111  {
2112  get
2113  {
2114  return _cNombre;
2115  }
2116  set
2117  {
2118  _cNombre = value;
2119  }
2120  }
2121 
2125  public IDocPrint _DocPrint
2126  {
2127  get
2128  {
2129  if (!(_oDocPrint is IDocPrint))
2130  {
2131  _Documento = ((IDocumentoImprimible)Activator.CreateInstance(typeof(T), true));
2132  _oDocPrint = _Documento._DocPrint;
2133  }
2134  return _oDocPrint;
2135  }
2136  }
2137 
2143  public override bool _Show_Print(int tnAbrirEn = 1)
2144  {
2145  if (_DocPrint is IDocPrint)
2146  {
2147  ((DocPrint)_Documento._DocPrint)._ImpresionNormalMultiple = _ImpresionNormalMultiple;
2148 
2149  if (_Documento._Show_Print(tnAbrirEn))
2150  {
2151  ((DocPrint)_Documento._DocPrint)._Clonar((DocPrint)this);
2152  return true;
2153  }
2154  }
2155  return false;
2156  }
2157 
2161  public override void _MarcaDocumentoImpreso()
2162  {
2163  if(_Items.Count > 0)
2164  {
2165  foreach (T loItem in _Items)
2166  {
2167  if (loItem is IMarcaImpreso) ((IMarcaImpreso)loItem)._Printed();
2168  }
2169  }
2170  }
2171 
2172  private DataTable _ObtenerDatosSageReports(Dictionary<string, object> tdicParametros = null)
2173  {
2174  DataTable loDt = null;
2175  DataTable loDtToPrint = null;
2176  StringBuilder loErrors = new StringBuilder();
2177  Int32 lnCopias = 0;
2178 
2179  if (_Numero_Copias < 0) _Numero_Copias = 0;
2180 
2181  foreach (IDocumentoImprimible loItem in _Items)
2182  {
2183  try
2184  {
2185  loItem._DocPrint._Numero_Copias = _Numero_Copias;
2186 
2187  loDt = loItem._Obtener_Datos_SageReports(tdicParametros);
2188  if (loItem is ISageReportsEditDataProvider) loDt = ((ISageReportsEditDataProvider)loItem)._Modificar_Datos_SageReports(loDt, tdicParametros);
2189 
2190  while (lnCopias <= _Numero_Copias)
2191  {
2192  if (loDtToPrint is DataTable)
2193  {
2194  if (loDt.Rows.Count > 0)
2195  {
2196  foreach (DataRow loRow in loDt.Rows)
2197  {
2198  loDtToPrint.ImportRow(loRow);
2199  }
2200  }
2201  }
2202  else
2203  {
2204  loDtToPrint = loDt.Copy();
2205  }
2206  lnCopias++;
2207  }
2208  lnCopias = 0;
2209  }
2210  catch (Exception loEx)
2211  {
2212  loErrors.AppendLine(loEx.Message);
2213  }
2214  }
2215 
2216  _Numero_Copias = 0;
2217  _ErrorMessages = loErrors.ToString();
2218 
2219  return loDtToPrint;
2220  }
2221 
2226  protected override bool _PrintNET()
2227  {
2228  bool llOk = true;
2229 
2230  // PE-101701. Hay que comprobar que el documento exista en el disco
2231  if (!File.Exists(_Report._Path._PathFile))
2232  {
2233  _ErrorMessages = String.Format("El report {0} no existe", _Report._ReportFile);
2234  return false;
2235  }
2236 
2237  //Determino acción predeterminada
2238  Report.ReportAction loAction = Obtener_accion(); //Se crea un método para poder reaprovechar el código desde clases deribadas
2239 
2240  String lcPath = _Ruta_Fichero;
2241  Boolean llExportO365 = false;
2242  //FileDialog365 oFileDialog = DeterminarExportacionO365(ref lcPath, ref llExportO365);
2243  if (_FileDialog._IsPath(lcPath))
2244  {
2245  lcPath = Path.GetTempFileName() + lcPath.Substring(lcPath.LastIndexOf("."));
2246  llExportO365 = true;
2247  }
2248 
2249  //T111264
2250  _Report._FieldRandomBackColor = _FieldRandomBackColor;
2251 
2252  _AsignarEventoImpresionVistaPreviaAfter(loAction);
2253  //Bloqueamos el usuario
2254  _Lock(loAction);
2255  //Ejecutamos
2256  _Report._ExecuteAction(ref lcPath, loAction, _Printer, 0, llSuppressUserInteraction: true);
2257  //Desbloqueamos el usuario
2258  _UnLock(loAction);
2259 
2260  if (loAction != Report.ReportAction.prn)
2261  {
2262  //PE-96202
2263  switch (loAction) //En función de la acción determino
2264  {
2265  //No hacer nada, solo exportaciones
2266  case Report.ReportAction.Email:
2267  case Report.ReportAction.none:
2268  case Report.ReportAction.preview:
2269  case Report.ReportAction.prn:
2270  case Report.ReportAction.edit:
2271  break;
2272  default:
2273  //PE-97035
2274  if (llExportO365) _FileDialog._UploadFile(lcPath, _Ruta_Fichero);
2275 
2276  //Notifico la ruta de exportación a los suscriptores
2277  _LanzarEvento_ExportacionCompletada(lcPath);
2278  break;
2279  }
2280 
2281  //Adicionamente a la exportación se puede haber indicado que lo mande por email
2282  if (!String.IsNullOrWhiteSpace(_Destinatario_Email) && File.Exists(lcPath)) _SendEmail(lcPath);
2283  }
2284 
2285  return llOk;
2286  }
2287 
2292  public override Boolean _Print()
2293  {
2294  Boolean lOk = false;
2295 
2297  {
2298  lOk = _PrintNET();
2299  }
2300 
2301  return lOk;
2302  }
2303 
2304  }
2305 }
bool _Send(string tcCliente="", string tcProveedor="", string tcResumen="")
Envia el correo
Definition: SendMail.cs:198
virtual String _GetReportFileName()
C106325 Devuelve el nombre del fichero de report
Definition: DocPrint.cs:1867
void _UnLock(Report.ReportAction toAction)
Desbloquea el ususario
Definition: DocPrint.cs:1067
Clase para el envío de emails
Definition: SendMail.cs:21
virtual String _GetFileReportName(String tcNombre)
Trata el nombre antes de asignarlo al Report
Definition: DocPrint.cs:1078
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
Definition: clsEmpresa.cs:48
void _ConfigurarObtencionFiltros(ref Dictionary< string, object > toDiccionario)
Método auxiliar para la asignación de propiedades específicas de la clase DocPrintXXX Este diccionari...
Definition: DocPrint.cs:1837
eTipoDocumento
Tipo documento
Definition: Report.cs:2260
virtual List< CampoOrdenacion > _CamposOrdenacion
Devuelve la lista de los campos por lo que se podrá ordenar para la impresión
Definition: DocPrint.cs:787
static bool _EsDivisaEmpresa(string tcCodigoDivisa)
Método que informa de si es la misma divisa que la empresa
Definition: Divisa.cs:1671
bool _GetFilters(ISageReportsFilterProvider toOrigen, Dictionary< string, object > toParams, ref List< FilterReportBase > tlisFiltros)
Método auxiliar que invoca la recuperación de filtros para SageReports
Definition: DocPrint.cs:1769
static sage.ew.usuario.Usuario _This
Instancia estática del objeto usuario con los datos del usuario actual (wc_usuario) ...
Definition: clsUsuario.cs:341
Definición de la interficie que han de cumplir aquellas clases que quieran proveer de información de ...
Definition: IDocPrint.cs:444
virtual bool ValidatePrinting()
Validaciones antes de imprimir
Definition: DocPrint.cs:1944
ExportEventArgs(string TcPath)
Constructor con parámetros
Definition: DocPrint.cs:856
Clase documento de DEPOSITO DE COMPRA
bool _Email
Nos indicará si hay que enviar el email
Definition: DocPrint.cs:772
virtual Report.ReportAction Obtener_accion()
Método auxiliar para determinar la acción a realizar Determinar si estamos imprimiendo o previsualiza...
Definition: DocPrint.cs:1607
Clase para la impresión de documentos como etiquetas
Definition: DocPrint.cs:2030
string _PlantillaComunicado
Nos indica la plantilla de comunicado a utilizar en el email
Definition: DocPrint.cs:802
Clase base de negocio de las entregas a cuenta por facturas
string _Idioma
Nos indicará el código del idioma para la impresión
Definition: DocPrint.cs:320
bool _ValidatePrinting()
Validaciones antes de imprimir
Definition: DocPrint.cs:1919
int _Numero_Copias
Nos indicará el número de copias a imprimir
Definition: DocPrint.cs:650
virtual DocPrint _Clonar(DocPrint toDocPrint)
Copia la configuración al Docprint pasado
Definition: DocPrint.cs:905
Clase documento de venta TPV
Definition: DocVentaTpv.cs:47
eFormato_exportacion
Tipos de exportación soportados
Definition: DocPrint.cs:38
ImpresionNormalMultiple _ImpresionNormalMultiple
Indica el tipo de impresión
Definition: DocPrint.cs:497
virtual bool _SendEmail(string tcFileName)
Envia email segun confguracion del usuario Si tiene el opcemp 9050 activo, hace un envío directo medi...
Definition: DocPrint.cs:1133
Clase documento de PRESUPUESTOS
Definition: DocsPresup.cs:39
ImpresionNormalMultiple
Indica si es una impresión normal o multiple
Definition: reports.cs:12
ewMascara()
Crea una nueva instancia de la classe ewMascara.
Definition: clsEwBase.cs:6261
void _AsignarEventoImpresionVistaPreviaAfter(Report.ReportAction toAction, Report toReport=null)
Asigna el evento para la impresión desde vista previa
Definition: DocPrint.cs:1112
Classe documento Factura de venta
Definition: DocsVentaFra.cs:61
virtual void _OpenEditor()
Abre la edicíon de report calculando las variables a partir del documento
Definition: DocPrint.cs:971
KeyDiccionarioMascara
Clave para diccionario de máscaras
Clase documento de PROPUESTAS DE COMPRA
static Boolean _TransformReportToLabel(Report toReport)
_TransformReportToLabel
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
Definition: DocPrint.cs:2292
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
Definition: DocPrint.cs:396
virtual DataTable _OrdenarDatosSageReports(List< CampoOrdenacion > loCamposOrdenacion, DataTable tdDatos)
Método que ordena los datos segun los campos especificados
Definition: DocPrint.cs:935
String _PathServer
Path de la ruta del servidor
Definition: Report.cs:547
string _Error_Message
Mensaje de error
Definition: SendMail.cs:167
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 ...
Definition: clsEmpresa.cs:5764
virtual Report _CrearReport()
PE-86889 Método que inicializa un reports y le asigna los valores comunes para la impresión ...
Definition: DocPrint.cs:1320
Clase documento de PEDIDOS
Definition: DocsPed.cs:39
string _Destinatario_Email
Nos indicará la dirección de email en caso que se desee imprimir en PDF
Definition: DocPrint.cs:741
Parámetros de retorno de exportación
Definition: DocPrint.cs:830
ewTiposExportacion
Enumeración de los diferentes tipos de exportación
ReportAction
PE-84803 enum para las acciones a realizar
Definition: Report.cs:92
virtual Boolean _ExportarOpenXml(String tcPath)
Exportar exel en OpenXml
Definition: DocPrint.cs:1088
string _Empresa
Empresa que origina la impresión
Definition: IDocPrint.cs:386
static bool IsSageReportInstaled()
India si existe el fichero del deigner y por lo tanto esta instalado.
Definition: Report.cs:1982
override string _Codigo
Sobreescribe el metodo _Codigo para cargar la configuración del TPV cuando se estableza el valor del ...
Definition: clsEmpresa.cs:2518
bool _IVA_Desglosado
Nos indicará si el documento se imprimirá con el IVA desglosado
Definition: DocPrint.cs:589
virtual bool _Print()
Método que imprementa la impresión. Se debe implementar en la clase específica
Definition: DocPrint.cs:884
Interficie de los objetos que soportan divisa
virtual void _ConfigureCustomPath(Report toReport)
Permite configurar el path
Definition: DocPrint.cs:1483
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...
Definition: DocPrint.cs:1157
ReportTPV clase que se utiliza para poder inicializar los datos de la clase Report ...
Definition: ReportTPV.cs:29
string _ObtenerImpresoraRes(String tcDocumento)
Obtiene la impresora configurada en IMP_REPS
Definition: DocPrint.cs:1757
virtual void _ConfigureSendMail(SendMail sendmail)
Permite reconfigurar el objeto SendMail antes de llamar a _Send()
Definition: DocPrint.cs:1311
DataTable _GetPlantillas(int tnTipo=-1)
Devuelve datatable con las plantillas de un tipo concreto
virtual string _GetReportBase()
Devuelve el report base
Definition: DocPrint.cs:1568
Definición de la interficie que han de cumplir aquellos clases que quieran modificar los resultados d...
Definition: IDocPrint.cs:471
TipoOrden
Indica el tipo de orden
Definition: IDocPrint.cs:289
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...
Definition: DocPrint.cs:1848
Clase para indicar el tipo de documento para los campos adicionales
Definition: Report.cs:2253
string Obtener_impresora()
Método protected para tratar de establecer la impresora. 1.- Mira de obtener la impresora a través de...
Definition: DocPrint.cs:1665
bool _LockConnect(String tcProcess)
Bloquear el registro en la tabla connect
Definition: clsUsuario.cs:5015
void _Lock(Report.ReportAction toAction)
Bloquea el ususario
Definition: DocPrint.cs:1058
Interficia par los documentos que se tiene que marcar como impresos
Clase para la exportación a Excel de los listados
Definition: ExportExcel.cs:25
virtual string _GetReportName()
Obtener el nombre del report base
Definition: DocPrint.cs:1858
_ImpresionVistaPreliminarEvent _ImpresionVistaPreliminar
Evento delegado para los messagebox
Definition: DocPrint.cs:133
override bool _Show_Print(int tnAbrirEn=1)
ShowPrint
Definition: DocPrint.cs:2143
Proporciona características adicionales de las máscaras de Eurowin
Definition: clsEwBase.cs:6212
TipoOrden _TipoOrden
Tipo de orden
Definition: IDocPrint.cs:271
eTipoDocumento
Detalle los tipos de documento posibles de ventas y compras
Definition: docsvenenum.cs:32
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
Definition: Report.cs:1177
string _Subject
Asunto del correo
Definition: SendMail.cs:94
DocPrint()
Constructor
Definition: DocPrint.cs:2018
Definición de la interfície necesaria para las páginas(tabPage) a utilizar en formularios de tipo For...
Definition: IDocPrint.cs:16
String _Campo
Campo por el que se ordenará
Definition: IDocPrint.cs:241
PE-86618 : Clase Terminal
Definition: Terminal.cs:22
virtual void _ObtenerConfigurarionOpcionesImpresionMultiple()
Metodo para cargar la configuración del UserControl de multiple impresión
Definition: DocPrint.cs:1879
IDocPrint _DocPrint
Referencia al objeto de impresión. Se utiliza para finalizar la interacción entre el Documento y el o...
Definition: IDocPrint.cs:407
BaseReportPath _Path
Path base
Definition: Report.cs:436
override bool _PrintNET()
PE-86889 Método para realizar la impresión de un documento mediante Sage Reports
Definition: DocPrint.cs:2226
Clase de negocio para la generación del comunicado.
int _Numero_Copias
Nos indicará el número de copias a imprimir
Definition: IDocPrint.cs:38
Clase documento de ALBARANES DE COMPRA
static Dictionary< string, object > _ObtenerFiltrosDefecto()
Obtine los filtros por defecto
Definition: ReportTPV.cs:169
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...
Definition: DocPrint.cs:895
override Report _CrearReport()
Método que inicializa un reports y le asigna los valores comunes para la impresión ...
Definition: DocPrint.cs:2050
virtual void _Reset()
Al fallar la validación hay que reiniciar algunos valores de la pantalla ya que ahora ésta no se cier...
Definition: DocPrint.cs:1933
virtual bool _Vista_Preliminar
Nos indicará si se realizará una vista preliminar del documento
Definition: DocPrint.cs:619
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
Definition: DocPrint.cs:980
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 ...
Definition: DocPrint.cs:2161
bool _Valorado
Nos indicará si el documento se imprimirá valorado
Definition: DocPrint.cs:604
Clase de negocio para la DIVISA (Moneda)
Definition: Divisa.cs:76
virtual string _GetBodyExtra()
Texto para el body del mail
Definition: DocPrint.cs:1301
Definición de la interficie que deben cumplir los documentos de cualquier tipo para poder interactuar...
Definition: IDocPrint.cs:376
virtual TipoDocumento _GetTipoDocumento()
Devuelve la relación del documento para los campos adicionales
Definition: DocPrint.cs:1494
bool _UnLockConnect()
Desbloquear el registro en la tabla connect
Definition: clsUsuario.cs:5024
virtual void _MarcaDocumentoImpreso()
Metodo que se ejecutará al imprimir desde el preview para marcar los documentos como impresos ...
Definition: DocPrint.cs:638
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...
Definition: DocPrint.cs:1145
string _Ruta_Fichero
Nos indicará la ruta donde nos guardará el fichero del documento en formato PDF
Definition: DocPrint.cs:665
bool _EmailAut
Nos indicará si hay que enviar el email automáticamente
Definition: DocPrint.cs:757
bool CreateFile(String tcTitle, DataTable toDt, List< ExcelCell > toListCells=null)
Crea un fichero a partir de los datos del DataTable
Definition: ExportExcel.cs:118
Clase para la impresión de documentos (del tipo que sea)
Definition: DocPrint.cs:33
_Evento_Exportacion_Completada _Evento_Exportacion_Finalizada
Delegado del evento para el refresco del formulario
Definition: DocPrint.cs:825
eFormato_exportacion _Obtener_formato_exportacion(ewTiposExportacion teTipo)
Conversor de enumeraciones. Permite pasar de ewTiposExportacion (objetos) a eFormato_exportacion (sag...
Definition: DocPrint.cs:1890
String _ValidaExtension(String tcPath)
Nos devuelve el fichero con la extensión
Definition: DocPrint.cs:1099
string _Body
Cuerpo del mensaje
Definition: SendMail.cs:99
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
Definition: IDocPrint.cs:198
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...
Definition: DocPrint.cs:1799
virtual String _Printer
C106325 Devuelve la impresora configurada
Definition: DocPrint.cs:530
bool _Exportar
Determina si el documento
Definition: DocPrint.cs:726
virtual UserControl _UserControlAdicional
Opiones de impresión
Definition: DocPrint.cs:574
eFormato_exportacion _Formato_exportacion
Formato de exportación
Definition: DocPrint.cs:711
virtual void _Load_Codigo_Config()
_Load_Codigo_Config: Creamos todos los campos de las tablas relacionadas con la pantalla de configura...
Definition: clsEmpresa.cs:2865
void _LanzarEvento_ExportacionCompletada(string tcPath)
Método auxiliar para el lanzamiento de eventos
Definition: DocPrint.cs:868
Definición de la clase Usuario
Definition: clsUsuario.cs:113
Clase de documentos DEPOSITO
Definition: DocsDeposito.cs:33