ExtensionBaseFactura.cs
5 using sage.ew.db;
6 using sage.ew.docsven;
7 using sage.ew.ewbase;
8 using sage.ew.functions;
9 using sage.ew.global;
10 using sage.ew.reports;
11 using System;
12 using System.Collections.Generic;
13 using System.Data;
14 using System.Linq;
15 using System.Text;
16 using System.Windows.Forms;
17 
18 namespace sage.addons.factucert.Negocio.Documentos
19 {
20 
26  public abstract class ExtensionBaseFactura
28  {
32  private SelloFactCertifEnv _loSelloFactCertifEnv = null;
33 
37  private SelloFactCertifNoEnv _loSelloFactCertifNoEnv = null;
38 
42  private SelloFactCertifIncidEnv _loSelloFactCertifIncidEnv = null;
43 
47  private SelloFactCertifRechaz _loSelloFactCertifRechaz = null;
48 
52  private SelloAnuladaEnv _loSelloAnuladaEnv = null;
53 
57  private SelloAnuladaNoEnv _loSelloAnuladaNoEnv = null;
58 
62  private SelloAnuladaRechaz _loSelloAnuladaRechaz = null;
63 
67  private SelloAnuladaIncidEnv _loSelloAnuladaIncidEnv = null;
68 
70 
71  public abstract DatosAdicionalesBase _DatosAdicionales { get; }
72 
73  protected abstract Int32 _LongMaxNumeroSerieCertificada { get; }
74 
78  public String _MensajeError
79  {
80  get
81  {
82  return _Mensaje_Error;
83  }
84  }
85 
86  protected Boolean _Impreso
87  {
88  get
89  {
90  return _Documento?._Cabecera._Impreso;
91  }
92  }
93 
94  protected String _Ejercicio
95  {
96  get
97  {
98  return _Documento?._Cabecera._Ejercicio.Trim();
99  }
100  }
101 
102  public bool _EsBorrador
103  {
104  get
105  {
106  return _DatosAdicionales._TipoCert == TipoDocCrearFactura.Borrador;
107  }
108  }
109 
116  public override bool _Abandonar_Documento(bool tbNoValidarDocumento = false, bool tlSalirDocumento = false)
117  {
118  bool llOk = base._Abandonar_Documento(tbNoValidarDocumento, tlSalirDocumento);
119 
120  if (llOk && !tlSalirDocumento && _eBeforeAfter == ew.interficies.TipoExecute.After)
121  {
122  // Ocultar los cuatro posibles sellos de factura certificada (no enviada, enviada, incidencias envio y rechazada).
123  //
124  FunctionsFactuCert._RevisarSello(_Mantegrid, _oSelloFactCertEnv, _oSelloFactCertNoEnv, _oSelloFactCertIncidEnv, _oSelloFactCertRechaz, false, 0);
125  }
126 
127  return llOk;
128  }
129 
130 
134  protected internal SelloFactCertifEnv _oSelloFactCertEnv
135  {
136  get
137  {
138  if (_loSelloFactCertifEnv == null)
139  _loSelloFactCertifEnv = new SelloFactCertifEnv();
140 
141  return _loSelloFactCertifEnv;
142  }
143  set
144  {
145  _loSelloFactCertifEnv = value;
146  }
147  }
148 
149 
153  protected internal SelloFactCertifNoEnv _oSelloFactCertNoEnv
154  {
155  get
156  {
157  if (_loSelloFactCertifNoEnv == null)
158  _loSelloFactCertifNoEnv = new SelloFactCertifNoEnv();
159 
160  return _loSelloFactCertifNoEnv;
161  }
162  set
163  {
164  _loSelloFactCertifNoEnv = value;
165  }
166  }
167 
168 
172  protected internal SelloFactCertifIncidEnv _oSelloFactCertIncidEnv
173  {
174  get
175  {
176  if (_loSelloFactCertifIncidEnv == null)
177  _loSelloFactCertifIncidEnv = new SelloFactCertifIncidEnv();
178 
179  return _loSelloFactCertifIncidEnv;
180  }
181  set
182  {
183  _loSelloFactCertifIncidEnv = value;
184  }
185  }
186 
187 
191  protected internal SelloFactCertifRechaz _oSelloFactCertRechaz
192  {
193  get
194  {
195  if (_loSelloFactCertifRechaz == null)
196  _loSelloFactCertifRechaz = new SelloFactCertifRechaz();
197 
198  return _loSelloFactCertifRechaz;
199  }
200  set
201  {
202  _loSelloFactCertifRechaz = value;
203  }
204  }
205 
209  protected internal SelloAnuladaEnv _oSelloAnuladaEnv
210  {
211  get
212  {
213  if (_loSelloAnuladaEnv == null)
214  _loSelloAnuladaEnv = new SelloAnuladaEnv();
215 
216  return _loSelloAnuladaEnv;
217  }
218  set
219  {
220  _loSelloAnuladaEnv = value;
221  }
222  }
223 
227  protected internal SelloAnuladaNoEnv _oSelloAnuladaNoEnv
228  {
229  get
230  {
231  if (_loSelloAnuladaNoEnv == null)
232  _loSelloAnuladaNoEnv = new SelloAnuladaNoEnv();
233 
234  return _loSelloAnuladaNoEnv;
235  }
236  set
237  {
238  _loSelloAnuladaNoEnv = value;
239  }
240  }
241 
245  protected internal SelloAnuladaRechaz _oSelloAnuladaRechaz
246  {
247  get
248  {
249  if (_loSelloAnuladaRechaz == null)
250  _loSelloAnuladaRechaz = new SelloAnuladaRechaz();
251 
252  return _loSelloAnuladaRechaz;
253  }
254  set
255  {
256  _loSelloAnuladaRechaz = value;
257  }
258  }
259 
263  protected internal SelloAnuladaIncidEnv _oSelloAnuladaIncidEnv
264  {
265  get
266  {
267  if (_loSelloAnuladaIncidEnv == null)
268  _loSelloAnuladaIncidEnv = new SelloAnuladaIncidEnv();
269 
270  return _loSelloAnuladaIncidEnv;
271  }
272  set
273  {
274  _loSelloAnuladaIncidEnv = value;
275  }
276  }
277 
282  protected abstract bool _IsDocumentTBAI();
283 
284 
289  public abstract bool _IsFacturaCERTIFICADA();
290 
291 
296  public abstract bool _IsFacturaCERTIFICADAEnviada();
297 
298 
305  public abstract bool _ReCertificar(out string tcMensajeError);
306 
307 
313  public override Dictionary<string, object> _Obtener_Filtros_SageReports(Dictionary<string, object> tdicParametros = null)
314  {
315  bool lbImprimirMarcaCopia = true;
316  FilterReportBase loFilter;
317  Dictionary<string, object> loDic = new Dictionary<string, object>();
318 
319  if (_IsDocumentTBAI())
320  {
321  loDic = base._Obtener_Filtros_SageReports(tdicParametros);
322 
323  if (_Documento._Documento_Vacio() || FunctionsFactuCert.FechaFacturaPosterior(_Documento._Cabecera._FechaFac))
324  {
325  lbImprimirMarcaCopia = tdicParametros is Dictionary<string, object> && tdicParametros.ContainsKey("_ImprimirMarcaCopia") ? Convert.ToBoolean(tdicParametros["_ImprimirMarcaCopia"]) : true;
326 
327  //Componentes comunes de TicketBai y Verifactu
328  loDic.Add("wn_EsBorrador", _EsBorrador ? "1" : "0");
329  loDic.Add("wn_TipoCert", Convert.ToInt16(_DatosAdicionales._TipoCert));
330 
331  if (_Documento?._DocPrint is DocPrintVentaAnulada)
332  {
333  loFilter = new AnuladaFilter();
334  }
335  else if (_EsBorrador)
336  {
337  loFilter = new BorradorFilter();
338  }
339  else
340  {
341  loFilter = new DuplicadoFilter(_Impreso && lbImprimirMarcaCopia);
342  }
343 
344  if (_Documento?._DocPrint is DocPrintVentaFRA && ((DocPrintVentaFRA)_Documento?._DocPrint)._FormatoTiket)
345  {
347  loFilter._PointGenerator = new VerticalPointGenerator();
348  }
349 
350  loDic.Add(loFilter._Key, loFilter);
351 
352  switch ((SistemasFacturacionCertificada)FACTUCERT._FactuCertConfig._Sistema)
353  {
354  case SistemasFacturacionCertificada.TicketBai:
355 
356  loFilter = new NoCerticadaFilter(_DatosAdicionales._TipoCert);
357  loFilter._PointGenerator = new VerticalPointGenerator();
358  loDic.Add(loFilter._Key, loFilter);
359 
360  loFilter = new CodigoTBAIFilter("wc_CodigoTBAI", _DatosAdicionales._TipoCert == TipoDocCrearFactura.Certificada ? _DatosAdicionales._TBAI : "");
361  loFilter._TypeActionFilter = _DatosAdicionales._TipoCert == TipoDocCrearFactura.Certificada ? FilterReportBase.TypeActionFilter.ShowAlways : FilterReportBase.TypeActionFilter.CreateOnEdit;
362  loDic.Add("wc_CodigoTBAI", loFilter);
363 
364  break;
365  case SistemasFacturacionCertificada.VeriFactu:
366 
367  //Pendiente de legal
368  loFilter = new CertificadaFilter(_DatosAdicionales._TipoCert);
369  loFilter._PointGenerator = new VerticalPointGenerator();
370  loDic.Add(loFilter._Key, loFilter);
371 
372  //Compatiblidad con TBAI reports creados
373  loDic.Add("wc_CodigoTBAI", "");
374 
375  break;
376 
377  }
378 
379  switch ((SistemasFacturacionCertificada)FACTUCERT._FactuCertConfig._Sistema)
380  {
381  case SistemasFacturacionCertificada.TicketBai:
382 
383  loFilter = new QRFilterReport("wc_CodigoQR", _DatosAdicionales._TipoCert == TipoDocCrearFactura.Certificada ? _DatosAdicionales._QRTBAI : "", "wc_CodigoQRTBAI");
384  loFilter._GeneratorElement._SectionLocation = BaseGeneratorElement.SectionTypeLocation.LastReportFooterSectionEmpty;
385  loFilter._PointGenerator = new CenterCustomLocation();
386  loFilter._TypeActionFilter = _DatosAdicionales._TipoCert == TipoDocCrearFactura.Certificada ? FilterReportBase.TypeActionFilter.ShowAlways : FilterReportBase.TypeActionFilter.CreateOnEdit;
387  loFilter._GeneratorElement.SectionCondition = String.Format("CString(Filtro.wn_TipoCert) = \"{0}\"", Convert.ToInt16(TipoDocCrearFactura.Certificada));
388  loDic.Add("wc_CodigoQR", loFilter);
389 
390  loDic.Add("wc_CodigoURLVERIFAC", "");
391 
392  break;
393 
394  case SistemasFacturacionCertificada.VeriFactu:
395 
396  loFilter = new QRFilterReport("wc_CodigoQR", _DatosAdicionales._TipoCert == TipoDocCrearFactura.Certificada ? _DatosAdicionales._QRVERIFAC : "", "wc_CodigoQRVERIFAC");
397  loFilter._GeneratorElement._SectionLocation = BaseGeneratorElement.SectionTypeLocation.LastReportFooterSectionEmpty;
398  loFilter._PointGenerator = new CenterCustomLocation();
399  loFilter._TypeActionFilter = _DatosAdicionales._TipoCert == TipoDocCrearFactura.Certificada ? FilterReportBase.TypeActionFilter.ShowAlways : FilterReportBase.TypeActionFilter.CreateOnEdit;
400  loFilter._GeneratorElement.SectionCondition = String.Format("CString(Filtro.wn_TipoCert) = \"{0}\"", Convert.ToInt16(TipoDocCrearFactura.Certificada));
401  loDic.Add("wc_CodigoQR", loFilter);
402 
403  //loFilter = new UrlVerifacFilter("wc_CodigoURLVERIFAC", _DatosAdicionales._TipoCert == TipoDocCrearFactura.Certificada ? _DatosAdicionales._QRVERIFAC : "");
404  //loFilter._TypeActionFilter = _DatosAdicionales._TipoCert == TipoDocCrearFactura.Certificada ? FilterReportBase.TypeActionFilter.ShowAlways : FilterReportBase.TypeActionFilter.CreateOnEdit;
405  //loFilter._GeneratorElement.SectionCondition = String.Format("CString(Filtro.wn_TipoCert) = \"{0}\"", Convert.ToInt16(TipoDocCrearFactura.Certificada));
406  //loDic.Add("wc_CodigoURLVERIFAC", loFilter);
407  loDic.Add("wc_CodigoURLVERIFAC", "");
408 
409  break;
410  }
411  }
412  else
413  {
414  loDic.Add("wn_EsBorrador", "0");
415  loDic.Add("wn_TipoCert", 0);
416  loDic.Add("wc_CodigoTBAI", "");
417  loDic.Add("wc_CodigoQRTBAI", "");
418  loDic.Add("wc_CodigoQRVERIFAC", "");
419  loDic.Add("wc_CodigoURLVERIFAC", "");
420  loDic.Add("wc_CodigoQR", "");
421  loDic.Add("wc_EstadoFactura", "");
422  loDic.Add("wc_FacturaNoCertificada", "");
423 
424  loFilter = new EsCopiaFilter();
425  loDic.Add(loFilter._Key, loFilter);
426  }
427  }
428 
429  return loDic;
430  }
431 
432  protected bool _ValidaLongitud(String tcNumero)
433  {
434  return tcNumero.Trim().Length <= _LongMaxNumeroSerieCertificada;
435  }
436 
441  public override bool _Load()
442  {
443  String lcNumero;
444 
445  if (_eBeforeAfter == ew.interficies.TipoExecute.Before)
446  {
447  if (!_Documento._Existe(_Documento._Empresa, _Documento._Numero, _Documento._Letra))
448  {
449  if (!FACTUCERT.SerieNoCertificada(_Documento._Letra))
450  {
451  if (_ValidaLongitud(_Documento._Numero))
452  {
453  //Si no existe el documento, miramos el borrador
454  lcNumero = String.Format("{0}B", _Documento._Numero.Substring(1));
455  _Documento._Numero = lcNumero;
456  }
457  else
458  {
459  FUNCTIONS._MessageBox(String.Format("El número supera la longitud máxima ({0}).", _LongMaxNumeroSerieCertificada), MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, DialogResult.OK);
460  return false;
461  }
462  }
463  }
464 
465  _Documento._Mensaje_Error = "";
466  }
467  lcNumero = _Documento._Numero;
468 
469  if (Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_serFact")) && (Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_FactSer"))))
470  {
471  lcNumero = _Documento._Letra + lcNumero;
472  }
473 
474  return _Load(_Documento._Empresa, lcNumero, _Documento._Letra);
475  }
476 
483  public override bool _SerieClienteRectificativa(ref string tcSerieCliente)
484  {
485  string lcLetra = _Documento._Letra;
486 
487  if (FACTUCERT.SerieNoCertificada(_Documento._Letra))
488  {
489  tcSerieCliente = Convert.ToString(DB.SQLValor("fcclientes", "cliente", _Documento._Cabecera._Cliente, "letdefrenc", FACTUCERT._NombreAddOn));
490  return true;
491  }
492  else
493  return base._SerieClienteRectificativa(ref tcSerieCliente);
494  }
495 
502  public override bool _SerieCliente(ref string tcSerieCliente)
503  {
504  string lcLetra = _Documento._Letra;
505 
506  if (FACTUCERT.SerieNoCertificada(_Documento._Letra))
507  {
508  tcSerieCliente = Convert.ToString(DB.SQLValor("fcclientes", "cliente", _Documento._Cabecera._Cliente, "letdefvenc", FACTUCERT._NombreAddOn));
509  return true;
510  }
511  else
512  return base._SerieCliente(ref tcSerieCliente);
513  }
514  }
515 
516 }
override bool _Abandonar_Documento(bool tbNoValidarDocumento=false, bool tlSalirDocumento=false)
Al abandonar el documento ha de ocultar el sello si está visible
Sello de factura anulada incidencia envío, para presentar en la factura anulada
SectionTypeLocation _SectionLocation
Indica en que tipo de sección se colocará el componente
Filter report para la generación de objeto barcode del tipo QR
SistemasFacturacionCertificada
SistemasFacturacionCertificada
Definition: Enums.cs:44
Clase para el cálculo de la posición vertical
Este es el espacio de nombres de su módulo. Puede encontrar más información y ayuda en el fichero rea...
Clase base para la generación de IElements
Clase para la impresión de facturas basada en DocPrintVenta
BasePointGenerator _PointGenerator
Clase para calcular la posición
Es como el tipo de entrada asientos pero por negocio, sin formulario, pq quiero que me haga las propu...
Clase para el cálculo de la posición central en report vertical y a la derecha en report horizontal ...
TipoDocCrearFactura
Enumeración para la creación de las facturas
Definition: Enums.cs:163
Sello de factura certificada anulada y enviada, para presentar en la factura anulada ...
Sello de factura certificada rechazada, para presentar en los documentos de albaranes y facturas ...
override bool _Load()
Load sin parametros (Uyiliza las propiedades del documento)
Clase abstarcta para la gestión de las extensiones de documentos
String _Key
Get/Set del la clave del filtro
Sello de factura certificada y enviada, para presentar en los documentos de albaranes y facturas ...
TypeActionFilter
Tipo de datos del filtro
SectionTypeLocation
Indica en que sección debe añadirse
Interfície para subtituir ExtensionBase, para poder separar por Extensiones
Clase para el tratamiento del EsCopia
Clase que se utilizará como base para "DatosAdicionalesFacturarAlbaran" y "DatosAdicionalesTicket" qu...
Sello de factura certificada pero no enviada, para presentar en los documentos de albaranes y factura...
override bool _SerieClienteRectificativa(ref string tcSerieCliente)
Serie asignada al cliente para rectificativas, si el documento tiene una serie no certificada debe pr...
Sello de factura certificada anulada y enviada, para presentar en la factura anulada ...
Sello de factura certificada con incidiencia en el envío (no se ha localizado fichero XML de document...
override Dictionary< string, object > _Obtener_Filtros_SageReports(Dictionary< string, object > tdicParametros=null)
Retorna los datos para los filtros
Clase que permite extender la funcionalidad en las facturas de venta para PaM y nuevos módulos...
Clase base para traspasar información en el objeto serializado
String SectionCondition
Condición para la sección donde se añade el componente
TypeActionFilter _TypeActionFilter
Indica la acción a realizar
BaseGeneratorElement _GeneratorElement
Clase para la generación del IElement
override bool _SerieCliente(ref string tcSerieCliente)
Serie asignada al cliente para documentos defecto, si el documento lleva una serie no certificada deb...