clsEwModulosExtension.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Xml;
6 using System.Xml.Schema;
7 using System.Xml.Serialization;
8 using System.Xml.Linq;
9 using sage.ew.interficies;
11 using System.Windows.Forms;
12 using sage.ew.objetos;
13 using sage.ew.db;
14 using System.Data;
15 using System.Reflection;
16 using System.ComponentModel;
17 using sage.ew.docsven;
18 using sage.ew.docscompra;
19 using sage.ew.formul.Forms;
20 using sage.ew.formul;
21 using sage.ew.contabilidad;
22 using sage.ew.cliente;
23 using sage.ew.tpv.Clases;
24 using sage.ew.tpv;
25 using sage.ew.global;
26 using sage.ew.ewbase.Clases;
28 using System.Diagnostics;
29 using System.Threading;
30 
31 namespace sage.ew.ewbase
32 {
37  {
38 
39  }
40 
41 
46  {
47 
48  }
49 
50 
55  {
56 
57  }
58 
59 
64  {
65 
66  }
67 
68 
73  {
74 
75  }
76 
77 
82  {
83 
84  }
85 
86 
91  {
92 
93  }
94 
95 
100  {
101 
102  }
103 
104 
109  {
114  {
115 
116  }
117 
125  public override string _SqlConculta(string tcEmpresa, string tcNumero, string tCampoClave3 = "")
126  {
127  string lcSql = "";
128  string lcCondicion = string.Empty;
129 
130  // Si hay configuración,
131  if (!string.IsNullOrWhiteSpace(_DataBase) && !string.IsNullOrWhiteSpace(_Tabla) && !string.IsNullOrWhiteSpace(_CampoEmpresa) && !string.IsNullOrWhiteSpace(_CampoNumero))
132  {
133  // Task 210973 Optimizar consulta
134  lcCondicion = _Condicion;
135  if (string.IsNullOrWhiteSpace(_Condicion) || (_Condicion.ToLower().Trim().StartsWith("ejercicio") && _Condicion.Length < 20))
136  {
137  lcCondicion = _Condicion.ToLower().Replace("ejercicio", "t1.ejercicio");
138  lcSql = $@"
139  Select t1.*
140  from {DB.SQLDatabase(_DataBase, _Tabla)} t1
141  Inner join {DB.SQLDatabase("GESTION", "C_ALBCOM")} t2 ON t1.numero = t2.numero AND t1.proveedor = t2.proveedor
142  Where t1.Empresa = {DB.SQLString(tcEmpresa)} and t2.Empresa = {DB.SQLString(tcEmpresa)}
143  and t2.factura = {DB.SQLString(tcNumero)}";
144  }
145  else
146  {
147  lcSql = $@"
148  Select *
149  From {DB.SQLDatabase(_DataBase, _Tabla)}
150  Where Empresa = {DB.SQLString(tcEmpresa)}
151  And numero + proveedor in (Select numero + proveedor
152  From {DB.SQLDatabase("GESTION", "C_ALBCOM")}
153  Where factura = {DB.SQLString(tcNumero)}
154  and Empresa = {DB.SQLString(tcEmpresa)}) ";
155  }
156 
157  // Si s'ha definit condició, l'afegim al Where
158  if (!string.IsNullOrWhiteSpace(lcCondicion))
159  {
160  lcSql += " And " + lcCondicion;
161  }
162  }
163 
164  return lcSql;
165  }
170  public override bool _Delete()
171  {
172  return true;
173  }
174 
180  protected internal override bool _Borrar_Registros_Tabla(DataRow toRow)
181  {
182  // Preparo la consulta
183  string lcDelete = "Delete From " + DB.SQLDatabase(_DataBase, _Tabla) +
184  " Where Empresa = " + DB.SQLString(_cEmpresa) +
185  " And numero = " + DB.SQLString(toRow["Numero"]) +
186  " And proveedor = " + DB.SQLString(toRow["Proveedor"]) +
187  " And Linea = " + DB.SQLString(toRow["Linea"]);
188 
189  // Si s'ha definit condició, l'afegim al Where
190  if (!string.IsNullOrWhiteSpace(_Condicion))
191  {
192  lcDelete += " And " + _Condicion;
193  }
194 
195  // Executo
196  DB.SQLExec(lcDelete);
197 
198  return true;
199  }
200 
206  protected internal override bool _Guardar_Registro_Tabla(_ExtensionDocumentoLinea toLinia)
207  {
208  return ((_ExtensionDocVentaDocumentoFacturaLinea)toLinia)._Guardar_Registro_Tabla();
209  }
210 
216  protected internal override DataRow _ObtenerDatosLineaExtension(IDocumentLinea loDocVentaLin, string tcClave3 = "")
217  {
218  DataRow dataRow = null;
219 
220  // Busco el registro correspondiente
221  DataRow[] loRow = _dtResultadoConsulta.Select(_CampoEmpresa + "=" + DB.SQLString(loDocVentaLin._Empresa) + " And " +
222  _CampoNumero + "=" + DB.SQLString(loDocVentaLin._Numero) + " And " +
223  _CampoLinea + "=" + DB.SQLString(loDocVentaLin._LineaReal) + " And " +
224  "Proveedor =" + DB.SQLString(((dynamic)loDocVentaLin)._Proveedor));
225 
226  if (loRow.Count() > 0)
227  {
228  dataRow = loRow[0];
229  }
230 
231  return dataRow;
232  }
233 
238  protected internal override string _WhereLinea(IExtensionDocsDocumentoLinea linea)
239  {
240  // Preparo la consulta
241  string wherelinea = "Empresa = " + DB.SQLString(linea._LineaDocumento._Empresa) + " And Numero = " + DB.SQLString(linea._LineaDocumento._Numero);
242 
243  wherelinea += " And Proveedor = " + DB.SQLString(((dynamic)linea._LineaDocumento)._Proveedor);
244 
245  // Si s'ha definit condició, l'afegim al Where
246  if (!string.IsNullOrWhiteSpace(this._Condicion))
247  {
248  wherelinea += " And " + this._Condicion;
249  }
250 
251  // Afegim el camp linia
252  wherelinea = wherelinea + " And Linea = " + DB.SQLString(linea._LineaDocumento._LineaReal);
253 
254  return wherelinea;
255  }
256 
262  protected internal override string _GetLineaKeysValues(IExtensionDocsDocumentoLinea linea)
263  {
264  string keysvalues = "";
265 
266  // Preparem valors clau menys la línia
267  keysvalues = DB.SQLString(this._cEmpresa) + ", " + DB.SQLString(linea._LineaDocumento._Numero) + ", " + DB.SQLString(((dynamic)linea._LineaDocumento)._Proveedor);
268 
269  return keysvalues;
270  }
271 
277  protected internal override string _GetLineaKeysNames(IExtensionDocsDocumentoLinea linea)
278  {
279  string namesvalues = "";
280 
281  // Preparem camps clau
282  namesvalues = " Empresa, Numero, Proveedor ";
283 
284  return namesvalues;
285  }
286 
290  protected internal override DataRow _GetDataRowLinia(IDocumentLinea toLiniaDoc)
291  {
292  DataRow dataRow = null;
293 
294  DataRow[] loRow = this._dtResultadoConsulta.Select(this._CampoNumero + " = " + DB.SQLString(toLiniaDoc._Numero) + " And " + this._CampoProveedor + " = " + DB.SQLString(((dynamic)toLiniaDoc)._Proveedor) + " And " + this._CampoLinea + " = " + toLiniaDoc._LineaReal.ToString());
295  if (loRow.Count() > 0)
296  {
297  dataRow = loRow[0];
298  }
299 
300  return dataRow;
301  }
302 
307  public virtual bool _Contabilizar()
308  {
309  return true;
310  }
311 
316  public virtual bool _Descontabilizar()
317  {
318  return true;
319  }
320 
326  public virtual bool _Facturar(bool tlRepeticion = false)
327  {
328  return true;
329  }
330 
335  public virtual void _FacturarError()
336  {
337  }
338  }
339 
340 
345  {
346 
347  }
348 
349 
354  {
355 
356  }
357 
358 
363  {
364 
365  }
366 
367 
372  {
373 
374  }
375 
376 
381  {
382 
383  }
384 
385 
390  {
391 
392  }
393 
394 
399  {
400 
401  }
402 
403 
408  {
409 
410  }
411 
412 
417  {
421  protected internal bool _ll_FactSer = Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_Factser")); //treballar amb series de documents (albarans)
425  protected internal bool _ll_SerFact = Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_Serfact")); //treballar amb series de documents (factures)
426 
427  #region CONSTRUCTORES
428 
429 
434  {
435  //_CampoLetra = "";
436  //_CampoClave3 = "";
437  }
438 
439 
440  #endregion CONSTRUCTORES
441 
442 
443  #region MÉTODOS PÚBLICOS OVERRIDE SOBREESCRITOS DE '_ExtensionDocVentaDocumento'
444 
445 
450  public override bool _Load()
451  {
452  string lcNumeroDoc = _Documento?._Numero;
453 
454  if (this._ll_FactSer && this._ll_SerFact)
455  {
456  lcNumeroDoc = _Documento?._Letra + lcNumeroDoc;
457  }
458 
459  return _Load(_Documento?._Empresa, lcNumeroDoc, _Documento?._Letra);
460  }
461 
469  public override string _SqlConculta(string tcEmpresa, string tcNumero, string tCampoClave3 = "")
470  {
471  string lcSql = "";
472  string lcCondicion = string.Empty;
473 
474  // Si hay configuración,
475  if (!string.IsNullOrWhiteSpace(_DataBase) && !string.IsNullOrWhiteSpace(_Tabla) && !string.IsNullOrWhiteSpace(_CampoEmpresa) && !string.IsNullOrWhiteSpace(_CampoNumero))
476  {
477  // Task 210973 Optimizar consulta
478  lcCondicion = _Condicion;
479  if (string.IsNullOrWhiteSpace(_Condicion) || (_Condicion.ToLower().Trim().StartsWith("ejercicio") && _Condicion.Length < 20))
480  {
481  lcCondicion = _Condicion.ToLower().Replace("ejercicio", "t1.ejercicio");
482  lcSql = $@"
483  Select t1.*
484  from {DB.SQLDatabase(_DataBase, _Tabla)} t1
485  Inner join {DB.SQLDatabase("GESTION", "C_ALBVEN")} t2 ON t1.numero = t2.numero AND t1.letra = t2.letra
486  Where t1.Empresa = {DB.SQLString(tcEmpresa)} and t2.Empresa = {DB.SQLString(tcEmpresa)}
487  and t2.factura = {DB.SQLString(tcNumero)}";
488  }
489  else
490  {
491  lcSql = $@"
492  Select *
493  From {DB.SQLDatabase(_DataBase, _Tabla)}
494  Where Empresa = {DB.SQLString(tcEmpresa)}
495  and numero + letra in (Select numero + letra
496  From {DB.SQLDatabase("GESTION", "C_ALBVEN")}
497  Where factura = {DB.SQLString(tcNumero)}
498  and Empresa = {DB.SQLString(tcEmpresa)}) ";
499  }
500 
501  // Si s'ha definit condició, l'afegim al Where
502  if (!string.IsNullOrWhiteSpace(lcCondicion))
503  {
504  lcSql += " And " + lcCondicion;
505  }
506  }
507 
508  return lcSql;
509  }
510 
511 
516  public override bool _Delete()
517  {
518  return true;
519  }
520 
521 
529  public override bool _LineaMover(IDocumentLinea lineadocumento, int liniaant, int linidestino)
530  {
531  bool moved = false;
532  string lcSql = "";
533 
534  // Si s'ha definit línia, fem el cavi
535  if (!string.IsNullOrWhiteSpace(this._CampoLinea))
536  {
537  lcSql = "Update " + DB.SQLDatabase(this._DataBase, this._Tabla) +
538  " Set " + this._CampoLinea + " = " + DB.SQLString(linidestino) +
539  " Where " + this._CampoEmpresa + " = " + DB.SQLString(this._cEmpresa) +
540  " And " + this._CampoNumero + " = " + DB.SQLString(lineadocumento._Numero);
541 
542  // Si s'ha definit 3ª clau, l'afegim al Where
543  if (!string.IsNullOrWhiteSpace(this._CampoClave3))
544  {
545  lcSql += " And " + this._CampoClave3 + " = " + DB.SQLString(lineadocumento._Letra);
546  }
547 
548  lcSql += " And " + this._CampoLinea + " = " + DB.SQLString(liniaant);
549 
550  moved = DB.SQLExec(lcSql);
551  }
552 
553  return moved;
554  }
555 
556 
557  #endregion MÉTODOS PÚBLICOS OVERRIDE SOBREESCRITOS DE '_ExtensionDocVentaDocumento'
558 
559 
560  #region MÉTODOS PUBLIC VIRTUAL PARA SER SOBREESCRITOS EN LOS ADDONS
561 
566  public virtual bool _Contabilizar()
567  {
568  return true;
569  }
570 
575  public virtual bool _Descontabilizar()
576  {
577  return true;
578  }
579 
588  public virtual bool _FacturaElectronica(ref XmlDocument oXml)
589  {
590  return true;
591  }
592 
593 
594  #endregion MÉTODOS PUBLIC VIRTUAL PARA SER SOBREESCRITOS EN LOS ADDONS
595 
596 
597  #region MÉTODOS PROTECTED INTERNAL
598 
599 
605  protected internal override bool _Borrar_Registros_Tabla(DataRow toRow)
606  {
607  // Preparo la consulta
608  string lcDelete = "Delete From " + DB.SQLDatabase(_DataBase, _Tabla) +
609  " Where Empresa = " + DB.SQLString(_cEmpresa) +
610  " And numero = " + DB.SQLString(toRow["Numero"]) +
611  " And letra = " + DB.SQLString(toRow["Letra"]) +
612  " And Linea = " + DB.SQLString(toRow["Linea"]);
613 
614  // Si s'ha definit condició, l'afegim al Where
615  if (!string.IsNullOrWhiteSpace(_Condicion))
616  {
617  lcDelete += " And " + _Condicion;
618  }
619 
620  // Executo
621  DB.SQLExec(lcDelete);
622 
623  return true;
624  }
625 
626 
632  protected internal override bool _Guardar_Registro_Tabla(_ExtensionDocumentoLinea toLinia)
633  {
634  return ((_ExtensionDocVentaDocumentoFacturaLinea)toLinia)._Guardar_Registro_Tabla();
635  }
636 
637 
643  protected internal override DataRow _ObtenerDatosLineaExtension(IDocumentLinea loDocVentaLin, string tcClave3 = "")
644  {
645  DataRow dataRow = null;
646 
647  // Busco el registro correspondiente
648  DataRow[] loRow = _dtResultadoConsulta.Select(_CampoEmpresa + "=" + DB.SQLString(loDocVentaLin._Empresa) + " And " +
649  _CampoNumero + "=" + DB.SQLString(loDocVentaLin._Numero) + " And " +
650  _CampoLinea + "=" + DB.SQLString(loDocVentaLin._LineaReal) + " And " +
651  "Letra =" + DB.SQLString(loDocVentaLin._Letra));
652 
653  if (loRow.Count() > 0)
654  {
655  dataRow = loRow[0];
656  }
657 
658  return dataRow;
659  }
660 
661 
666  protected internal override string _WhereLinea(IExtensionDocsDocumentoLinea linea)
667  {
668  // Preparo la consulta
669  string wherelinea = "Empresa = " + DB.SQLString(linea._LineaDocumento._Empresa) + " And Numero = " + DB.SQLString(linea._LineaDocumento._Numero);
670 
671  wherelinea += " And Letra = " + DB.SQLString(linea._LineaDocumento._Letra);
672 
673  // Si s'ha definit condició, l'afegim al Where
674  if (!string.IsNullOrWhiteSpace(this._Condicion))
675  {
676  wherelinea += " And " + this._Condicion;
677  }
678 
679  // Afegim el camp linia
680  wherelinea = wherelinea + " And Linea = " + DB.SQLString(linea._LineaDocumento._LineaReal);
681 
682  return wherelinea;
683  }
684 
685 
691  protected internal override string _GetLineaKeysValues(IExtensionDocsDocumentoLinea linea)
692  {
693  string keysvalues = "";
694 
695  // Preparem valors clau menys la línia
696  keysvalues = DB.SQLString(this._cEmpresa) + ", " + DB.SQLString(linea._LineaDocumento._Numero) + ", " + DB.SQLString(linea._LineaDocumento._Letra);
697 
698  return keysvalues;
699  }
700 
701 
707  protected internal override string _GetLineaKeysNames(IExtensionDocsDocumentoLinea linea)
708  {
709  string namesvalues = "";
710 
711  // Preparem camps clau
712  namesvalues = " Empresa, Numero, Letra ";
713 
714  return namesvalues;
715  }
716 
717 
721  protected internal override DataRow _GetDataRowLinia(IDocumentLinea toLiniaDoc)
722  {
723  DataRow dataRow = null;
724  string campoletra = "";
725 
726  if (!string.IsNullOrEmpty(this._CampoLetra))
727  {
728  campoletra = " And " + this._CampoLetra + " = " + DB.SQLString(toLiniaDoc._Letra);
729  }
730 
731  DataRow[] loRow = this._dtResultadoConsulta.Select(this._CampoNumero + " = " + DB.SQLString(toLiniaDoc._Numero) + campoletra + " And " + this._CampoLinea + " = " + toLiniaDoc._LineaReal.ToString());
732  if (loRow.Count() > 0)
733  {
734  dataRow = loRow[0];
735  }
736 
737  return dataRow;
738  }
739 
740 
741  #endregion MÉTODOS PROTECTED INTERNAL
742  }
743 
744 
749  {
755  protected internal override string _SqlConculta(string tcListaCampos = "*")
756  {
757  // Paràmetres
758  string lcEmpresa = _LineaDocumento._Empresa;
759  string lcNumero = _LineaDocumento._Numero;
760  string lcProveedor = ((dynamic)_LineaDocumento)._Proveedor;
761 
762  string lcSql = "";
763 
764  lcSql = "Select " + tcListaCampos + " " +
765  " From " + DB.SQLDatabase(this._Parent._DataBase, this._Parent._Tabla) +
766  " Where Empresa = " + DB.SQLString(lcEmpresa) +
767  " And Numero = " + DB.SQLString(lcNumero);
768 
769  // Si s'ha definit 3ª clau, l'afegim al Where
770  lcSql += " And Proveedor = " + DB.SQLString(lcProveedor);
771 
772  // Si s'ha definit línia, l'afegim al Where
773  lcSql += " And Linea = " + DB.SQLString(_LineaDocumento._LineaReal);
774 
775  // Si s'ha definit condició, l'afegim al Where
776  if (!string.IsNullOrWhiteSpace(this._Parent._Condicion))
777  {
778  lcSql += " And " + this._Parent._Condicion;
779  }
780 
781  return lcSql;
782  }
783  }
784 
785 
790  {
796  protected internal override string _SqlConculta(string tcListaCampos = "*")
797  {
798  // Paràmetres
799  string lcEmpresa = _LineaDocumento._Empresa;
800  string lcNumero = _LineaDocumento._Numero;
801  string lcLetra = _LineaDocumento._Letra;
802 
803  string lcSql = "";
804 
805  lcSql = "Select " + tcListaCampos + " " +
806  " From " + DB.SQLDatabase(this._Parent._DataBase, this._Parent._Tabla) +
807  " Where Empresa = " + DB.SQLString(lcEmpresa) +
808  " And Numero = " + DB.SQLString(lcNumero);
809 
810  // Si s'ha definit 3ª clau, l'afegim al Where
811  lcSql += " And Letra = " + DB.SQLString(lcLetra);
812 
813  // Si s'ha definit línia, l'afegim al Where
814  lcSql += " And Linea = " + DB.SQLString(_LineaDocumento._LineaReal);
815 
816  // Si s'ha definit condició, l'afegim al Where
817  if (!string.IsNullOrWhiteSpace(this._Parent._Condicion))
818  {
819  lcSql += " And " + this._Parent._Condicion;
820  }
821 
822  return lcSql;
823  }
824  }
825 
826 
831  {
835  public string _CampoLetra
836  {
837  get
838  {
839  return _CampoClave3;
840  }
841  set
842  {
843  _CampoClave3 = value;
844  }
845  }
846 
850  public override void _Documento_Asignado()
851  {
852  base._Documento_Asignado();
853 
854  if (_Documento != null)
855  {
856  // PE-98927. Agregar referencia a docsven y las capturas de eventos para cada tipo de documento
857  // PE-98608. Intentem capturar els events de les línes
858  if (_Documento is docventatpv.ewDocVentaTPV)
859  {
860  docventatpv.ewDocVentaTPV loDocVentaTPV = (docventatpv.ewDocVentaTPV)_Documento;
861  loDocVentaTPV._Event_Camps_Cab_Change_Before += new docventatpv.ewDocVentaTPV._Event_Camps_Cab_Change_Before_Handler(_Event_Camps_Cab_Change_Before);
862  loDocVentaTPV._Event_Camps_Cab_Change_After += new docventatpv.ewDocVentaTPV._Event_Camps_Cab_Change_After_Handler(_Event_Camps_Cab_Change_After);
863  loDocVentaTPV._Event_Camps_Lin_Change += new docventatpv.ewDocVentaTPV._Event_Camps_Lin_Change_Handler(_Event_Camps_Lin_Change);
864  }
865 
866  if (_Documento is docsven.ewDocVentaPRESUP)
867  {
868  ewDocVentaPRESUP loDocVentaPresup = (ewDocVentaPRESUP)_Documento;
869  loDocVentaPresup._Event_Camps_Cab_Change_Before += new ewDocVentaPRESUP._Event_Camps_Cab_Change_Before_Handler(_Event_Camps_Cab_Change_Before);
870  loDocVentaPresup._Event_Camps_Cab_Change_After += new ewDocVentaPRESUP._Event_Camps_Cab_Change_After_Handler(_Event_Camps_Cab_Change_After);
871  loDocVentaPresup._Event_Camps_Lin_Change += new docsven.ewDocVentaPRESUP._Event_Camps_Lin_Change_Handler(_Event_Camps_Lin_Change);
872  }
873 
874  if (_Documento is docsven.ewDocVentaDEPOSITO)
875  {
876  ewDocVentaDEPOSITO loDocVentaDeposito = (ewDocVentaDEPOSITO)_Documento;
877  loDocVentaDeposito._Event_Camps_Cab_Change_Before += new ewDocVentaDEPOSITO._Event_Camps_Cab_Change_Before_Handler(_Event_Camps_Cab_Change_Before);
878  loDocVentaDeposito._Event_Camps_Cab_Change_After += new ewDocVentaDEPOSITO._Event_Camps_Cab_Change_After_Handler(_Event_Camps_Cab_Change_After);
879  loDocVentaDeposito._Event_Camps_Lin_Change += new ewDocVentaDEPOSITO._Event_Camps_Lin_Change_Handler(_Event_Camps_Lin_Change);
880  }
881 
882  if (_Documento is docsven.ewDocVentaFRA)
883  {
884  ewDocVentaFRA loDocVentaFra = (ewDocVentaFRA)_Documento;
885  loDocVentaFra._Event_Camps_Cab_Change_Before += new ewDocVentaFRA._Event_Camps_Cab_Change_Before_Handler(_Event_Camps_Cab_Change_Before);
886  loDocVentaFra._Event_Camps_Cab_Change_After += new ewDocVentaFRA._Event_Camps_Cab_Change_After_Handler(_Event_Camps_Cab_Change_After);
887  loDocVentaFra._Event_Camps_Lin_Change += new ewDocVentaFRA._Event_Camps_Lin_Change_Handler(_Event_Camps_Lin_Change);
888  }
889 
890  if (_Documento is docsven.ewDocVentaPED)
891  {
892  ewDocVentaPED loDocVentaPed = (ewDocVentaPED)_Documento;
893  loDocVentaPed._Event_Camps_Cab_Change_Before += new ewDocVentaPED._Event_Camps_Cab_Change_Before_Handler(_Event_Camps_Cab_Change_Before);
894  loDocVentaPed._Event_Camps_Cab_Change_After += new ewDocVentaPED._Event_Camps_Cab_Change_After_Handler(_Event_Camps_Cab_Change_After);
895  loDocVentaPed._Event_Camps_Lin_Change += new ewDocVentaPED._Event_Camps_Lin_Change_Handler(_Event_Camps_Lin_Change);
896  loDocVentaPed._Event_Camps_Lin_Ped_Change += _Event_Camps_Lin_Ped_Change;
897  }
898  }
899  }
900 
904  public Dictionary<string, object> _GetPropiedades()
905  {
906  List<string> lstPropExcluidas = new List<string> { };
907  Dictionary<string, object> dicTemp = functions.FUNCTIONS._GetPropiedades(this, lstPropExcluidas, _Documento);
908 
909  return dicTemp;
910  }
911 
912  // Req.147971. Capturamos eventos de cambio de propiedades de los pedidos
913  private void _Event_Camps_Lin_Ped_Change(CampsDocVentaLin teCampo, dynamic toLinia, ewCampo toewCampo)
914  {
915  // Llamamos al método virtualizado
916  _Camps_Lin_Change(teCampo, toLinia, toewCampo);
917  }
918 
919  // PE-98608. Capturamos el evente de canvios de valores en los campos
920  private void _Event_Camps_Lin_Change(docsven.CampsDocVentaLin teCampo, dynamic toLinia, ewCampo toewCampo)
921  {
922  // Llamamos al método virtualizado
923  _Camps_Lin_Change(teCampo, toLinia, toewCampo);
924  }
925 
932  public virtual void _Camps_Lin_Change(docsven.CampsDocVentaLin teCampo, dynamic toLinia, ewCampo toewCampo)
933  {
934 
935  }
936 
937  private void _Event_Camps_Cab_Change_Before(CampsDocVentaCab teCampo, ewCampo toewCampo, ref bool tlOk)
938  {
939  if (tlOk) tlOk = _Camps_Cab_Change_Before(teCampo, toewCampo); // Llamamos al método virtualizado
940  }
941 
947  public virtual bool _Camps_Cab_Change_Before(CampsDocVentaCab teCampo, ewCampo toewCampo)
948  {
949  return true;
950  }
951 
952  private void _Event_Camps_Cab_Change_After(CampsDocVentaCab teCampo, ewCampo toewCampo)
953  {
954  // Llamamos al método virtualizado
955  _Camps_Cab_Change_After(teCampo, toewCampo);
956  }
957 
963  public virtual void _Camps_Cab_Change_After(CampsDocVentaCab teCampo, ewCampo toewCampo)
964  {
965 
966  }
967 
974  public virtual bool _Clonar(docsven.Docsven.IDocVenta<docsven.Docsven.IDocVentaCab, docsven.Docsven.IDocVentaLin, docsven.Docsven.IDocVentaPie> toDocumento, ref docsven.Docsven.IDocVenta<docsven.Docsven.IDocVentaCab, docsven.Docsven.IDocVentaLin, docsven.Docsven.IDocVentaPie> toDocumentoDuplicado)
975  {
976  return true;
977  }
978 
986  public override string _SqlConculta(string tcEmpresa, string tcNumero, string tcLetra = "")
987  {
988  return base._SqlConculta(tcEmpresa, tcNumero, tcLetra);
989  }
990 
998  public override bool _Load(string tcEmpresa, string tcNumero, string tcLetra = "")
999  {
1000  return base._Load(tcEmpresa, tcNumero, tcLetra);
1001  }
1002 
1007  public override bool _Load()
1008  {
1009  return _Load(_Documento?._Empresa, _Documento?._Numero, _Documento?._Letra);
1010  }
1011 
1019  public override bool _New(string tcEmpresa, string tcNumero = "", string tcLetra = "")
1020  {
1021  return base._New(tcEmpresa, tcNumero, tcLetra);
1022  }
1023 
1030  public virtual bool _Tiquet_to_albaran(dynamic toDocumentoOrigen, dynamic toDocumentoDestino)
1031  {
1032  return true;
1033  }
1034 
1041  public virtual bool _Albaran_to_Tiquet(dynamic toDocumentoOrigen, dynamic toDocumentoDestino)
1042  {
1043  return true;
1044  }
1045 
1051  public virtual bool _CodigoCambiado(CampsDocVentaCab teCampo, ewCampo teValor)
1052  {
1053  return true;
1054  }
1055 
1060  public virtual bool _CobrarTiquet()
1061  {
1062  return true;
1063  }
1064 
1074  public virtual bool _Facturar(List<string> tlisAlbaranes, string tcNumeroFra = "", string tcSerieFra = "", bool tlFechaOperacion = false, decimal? tnCambio = null)
1075  {
1076  return true;
1077  }
1078 
1083  public virtual void _FacturarError()
1084  {
1085  }
1086 
1091  public virtual bool _RestarNumero()
1092  {
1093  return true;
1094  }
1095 
1102  public virtual bool _CambiarNumeroDocumento(string tcOldNumero, string tcNewNumero)
1103  {
1104  return true;
1105  }
1106 
1112  public virtual bool _RevisarAbonoDocumento(dynamic toDocumentoOriginal)
1113  {
1114  return true;
1115  }
1116 
1121  public virtual bool _Validar_Ticket0()
1122  {
1123  return true;
1124  }
1125 
1131  public virtual bool _SerieCliente(ref string tcSerieCliente)
1132  {
1133  return true;
1134  }
1135 
1141  public virtual bool _SerieClienteRectificativa(ref string tcSerieCliente)
1142  {
1143  return true;
1144  }
1145  }
1146 
1147 
1152  {
1153 
1157  public string _CampoProveedor
1158  {
1159  get
1160  {
1161  return _CampoClave3;
1162  }
1163  set
1164  {
1165  _CampoClave3 = value;
1166  }
1167  }
1171  public override void _Documento_Asignado()
1172  {
1173  base._Documento_Asignado();
1174 
1175  if (_Documento != null)
1176  {
1177  if (_Documento is docscompra.ewDocCompraALBARAN)
1178  {
1179  ewDocCompraALBARAN loDocCompraAlb = (ewDocCompraALBARAN)_Documento;
1180  loDocCompraAlb._Event_Camps_Cab_Change_Before += new ewDocCompraALBARAN._Event_Camps_Cab_Change_Before_Handler(_Event_Camps_Cab_Change_Before);
1181  loDocCompraAlb._Event_Camps_Cab_Change_After += new ewDocCompraALBARAN._Event_Camps_Cab_Change_After_Handler(_Event_Camps_Cab_Change_After);
1182  loDocCompraAlb._Event_Camps_Lin_Change += new ewDocCompraALBARAN._Event_Camps_Lin_Change_Handler(_Event_Camps_Lin_Change);
1183  }
1184 
1185  if (_Documento is docscompra.ewDocCompraPROPUESTA)
1186  {
1187  ewDocCompraPROPUESTA loDocCompraPro = (ewDocCompraPROPUESTA)_Documento;
1188  loDocCompraPro._Event_Camps_Cab_Change_Before += new ewDocCompraPROPUESTA._Event_Camps_Cab_Change_Before_Handler(_Event_Camps_Cab_Change_Before);
1189  loDocCompraPro._Event_Camps_Cab_Change_After += new ewDocCompraPROPUESTA._Event_Camps_Cab_Change_After_Handler(_Event_Camps_Cab_Change_After);
1190  loDocCompraPro._Event_Camps_Lin_Change += new ewDocCompraPROPUESTA._Event_Camps_Lin_Change_Handler(_Event_Camps_Lin_Change);
1191  }
1192 
1193  if (_Documento is docscompra.ewDocCompraDEPOSITO)
1194  {
1195  ewDocCompraDEPOSITO loDocCompraDep = (ewDocCompraDEPOSITO)_Documento;
1196  loDocCompraDep._Event_Camps_Cab_Change_Before += new ewDocCompraDEPOSITO._Event_Camps_Cab_Change_Before_Handler(_Event_Camps_Cab_Change_Before);
1197  loDocCompraDep._Event_Camps_Cab_Change_After += new ewDocCompraDEPOSITO._Event_Camps_Cab_Change_After_Handler(_Event_Camps_Cab_Change_After);
1198  loDocCompraDep._Event_Camps_Lin_Change += new ewDocCompraDEPOSITO._Event_Camps_Lin_Change_Handler(_Event_Camps_Lin_Change);
1199  }
1200 
1201  if (_Documento is docscompra.ewDocCompraPEDIDO)
1202  {
1203  ewDocCompraPEDIDO loDocCompraPed = (ewDocCompraPEDIDO)_Documento;
1204  loDocCompraPed._Event_Camps_Cab_Change_Before += new ewDocCompraPEDIDO._Event_Camps_Cab_Change_Before_Handler(_Event_Camps_Cab_Change_Before);
1205  loDocCompraPed._Event_Camps_Cab_Change_After += new ewDocCompraPEDIDO._Event_Camps_Cab_Change_After_Handler(_Event_Camps_Cab_Change_After);
1206  loDocCompraPed._Event_Camps_Lin_Change += new ewDocCompraPEDIDO._Event_Camps_Lin_Change_Handler(_Event_Camps_Lin_Change);
1207  //loDocCompraPed._Event_Camps_Lin_Ped_Change += _Event_Camps_Lin_Ped_Change;
1208  }
1209  }
1210  }
1211 
1212  private void LoDocCompraAlb__Event_Camps_Cab_Change_Before(CampsDocCompraCab teCampo, ewCampo toewCampo, ref bool tlOk)
1213  {
1214  throw new NotImplementedException();
1215  }
1216 
1217  // Req.147971. Capturamos eventos de cambio de propiedades de los pedidos
1218  private void _Event_Camps_Lin_Ped_Change(CampsDocCompraLin teCampo, dynamic toLinia, ewCampo toewCampo)
1219  {
1220  // Llamamos al método virtualizado
1221  _Camps_Lin_Change(teCampo, toLinia, toewCampo);
1222  }
1223 
1224  // PE-98608. Capturamos el evente de canvios de valores en los campos
1225  private void _Event_Camps_Lin_Change(CampsDocCompraLin teCampo, dynamic toLinia, ewCampo toewCampo)
1226  {
1227  // Llamamos al método virtualizado
1228  _Camps_Lin_Change(teCampo, toLinia, toewCampo);
1229  }
1230 
1237  public virtual void _Camps_Lin_Change(CampsDocCompraLin teCampo, dynamic toLinia, ewCampo toewCampo)
1238  {
1239 
1240  }
1241 
1242  private void _Event_Camps_Cab_Change_Before(CampsDocCompraCab teCampo, ewCampo toewCampo, ref bool tlOk)
1243  {
1244  if(tlOk) tlOk = _Camps_Cab_Change_Before(teCampo, toewCampo); // Llamamos al método virtualizado
1245  }
1246 
1252  public virtual bool _Camps_Cab_Change_Before(CampsDocCompraCab teCampo, ewCampo toewCampo)
1253  {
1254  return true;
1255  }
1256 
1257  private void _Event_Camps_Cab_Change_After(CampsDocCompraCab teCampo, ewCampo toewCampo)
1258  {
1259  // Llamamos al método virtualizado
1260  _Camps_Cab_Change_After(teCampo, toewCampo);
1261  }
1262 
1268  public virtual void _Camps_Cab_Change_After(CampsDocCompraCab teCampo, ewCampo toewCampo)
1269  {
1270 
1271  }
1272 
1280  {
1281  return true;
1282  }
1283 
1291  public override string _SqlConculta(string tcEmpresa, string tcNumero, string tcProveedor = "")
1292  {
1293  return base._SqlConculta(tcEmpresa, tcNumero, tcProveedor);
1294  }
1295 
1303  public override bool _Load(string tcEmpresa, string tcNumero, string tcProveedor = "")
1304  {
1305  return base._Load(tcEmpresa, tcNumero, tcProveedor);
1306  }
1307 
1315  public override bool _New(string tcEmpresa, string tcNumero = "", string tcProveedor = "")
1316  {
1317  return base._New(tcEmpresa, tcNumero, tcProveedor);
1318  }
1319 
1325  public virtual bool _CodigoCambiado(CampsDocCompraCab teCampo, ewCampo teValor)
1326  {
1327  return true;
1328  }
1329  }
1330 
1331 
1336  {
1337  #region PROPIEDADES
1338 
1343  public virtual TipoExecute _eBeforeAfter
1344  {
1345  get { return _leBeforeAfter; }
1346  set { _leBeforeAfter = value; }
1347  }
1348  private TipoExecute _leBeforeAfter;
1349 
1353  public virtual String _Error_Message
1354  {
1355  get { return _cError_Message; }
1356  set { _cError_Message = value; }
1357  }
1358  private string _cError_Message = "";
1359 
1363  public virtual dynamic _Documento
1364  {
1365  get { return _oDocumento; }
1366  set { _oDocumento = value; }
1367  }
1368  private dynamic _oDocumento = null;
1369 
1373  public IMante _Mante { get; set; }
1374 
1378  public FormBase _FormMante { get; set; }
1379 
1383  public string _DataBase { get; set; }
1384 
1388  public string _Tabla { get; set; }
1389 
1393  public bool _IsNew { get; set; }
1394 
1395  #endregion PROPIEDADES
1396 
1397 
1398  #region METODOS
1399 
1405  public virtual bool _New(string tcCodigo = "")
1406  {
1407  throw new Exception("Este método no está preparado para las extensiones de documentos de stock. Debe utilizar _Load(Dictionary<string,object> toKey) en su lugar.");
1408  }
1409 
1415  public virtual bool _New(Dictionary<string, object> toDicKey)
1416  {
1417  return true;
1418  }
1419 
1424  public virtual bool _Load()
1425  {
1426  throw new Exception("Este método no está preparado para las extensiones de documentos de stock. Debe utilizar _Load(Dictionary<string,object> toKey) en su lugar.");
1427  }
1428 
1434  public virtual bool _Load(Dictionary<string, object> toDicKey)
1435  {
1436  return true;
1437  }
1438 
1443  public virtual bool _Save()
1444  {
1445  return true;
1446  }
1447 
1452  public virtual bool _Delete()
1453  {
1454  return true;
1455  }
1456 
1461  public virtual bool _Validar_Solo_Lectura()
1462  {
1463  return false;
1464  }
1465 
1472  public virtual bool _Abandonar_Documento(bool tbNoValidarDocumento = false, bool tlSalirDocumento = false)
1473  {
1474  return true;
1475  }
1476 
1482  public virtual IExtensionDocsDocumentoLinea _AddLinea(IDocumentLinea toLineaDocumento)
1483  {
1484  return null;
1485  }
1486 
1492  public virtual bool _Delete_Linea(IDocumentLinea toLineaDocumento)
1493  {
1494  return true;
1495  }
1496 
1500  public void _Show()
1501  {
1502  throw new Exception("Este método no está preparado para las extensiones de documentos de stock.");
1503  }
1504 
1508  public void _ShowDialog()
1509  {
1510  throw new Exception("Este método no está preparado para las extensiones de documentos de stock.");
1511  }
1512 
1513 
1518  public bool _Init()
1519  {
1520  throw new Exception("Este método no está preparado para las extensiones de documentos de stock.");
1521  }
1522 
1527  public bool _Refresh()
1528  {
1529  throw new Exception("Este método no está preparado para las extensiones de documentos de stock.");
1530  }
1531 
1535  public void _Cancel()
1536  {
1537  throw new Exception("Este método no está preparado para las extensiones de documentos de stock.");
1538  }
1539 
1544  public bool _Clonar()
1545  {
1546  throw new Exception("Este método no está preparado para las extensiones de documentos de stock.");
1547  }
1548 
1553  public void _Error(IEWException toException)
1554  {
1555  throw new Exception("Este método no está preparado para las extensiones de documentos de stock.");
1556  }
1557 
1562  public void _Bloquear_Controles(bool tlReadOnly)
1563  {
1564  throw new Exception("Este método no está preparado para las extensiones de documentos de stock.");
1565  }
1566 
1572  public bool _Duplicar(IDuplicador duplicador)
1573  {
1574  throw new Exception("Este método no está preparado para las extensiones de documentos de stock.");
1575  }
1576 
1583  public bool _TraspasarSiguienteEjercicio(string tcEjerActual, string tcEjerSig, bool tbIsNew)
1584  {
1585  throw new Exception("Este método no está preparado para las extensiones de documentos de stock.");
1586  }
1587 
1588  #endregion METODOS
1589  }
1590 
1595  {
1596  #region CONSTRUCTORS
1597 
1602  {
1603  _DefPropiedades = new Dictionary<string, DefPropiedad>();
1604  }
1605 
1606  #endregion CONSTRUCTORS
1607 
1608 
1609  //--------------------------------------------------------------------------//
1610 
1611 
1612  #region PROPIETATS
1613  public string _Mensaje_Error = "";
1617 
1621  protected internal string _CampoClave3;
1622 
1627  public TipoExecute _eBeforeAfter { get; set; }
1628 
1629  private dynamic _oDocumento;
1633  public dynamic _Documento
1634  {
1635  get
1636  {
1637  return _oDocumento;
1638  }
1639  set
1640  {
1641  // PE-98608. Llamamos a asignar documento para recoger eventos...
1642  _oDocumento = value;
1643  _Documento_Asignado();
1644  }
1645  }
1646 
1650  public string _DataBase { get; set; }
1651 
1655  public string _Tabla { get; set; }
1656 
1660  public string _Condicion { get; set; }
1661 
1665  public string _CampoEmpresa { get; set; }
1666 
1670  public string _CampoNumero { get; set; }
1671 
1675  public string _CampoLinea { get; set; }
1676 
1680  public Type _ExtensionDocsDocumentoLineaType { get; set; }
1681 
1682  private TiposUpdate _eTipoUpdate = TiposUpdate.Update;
1686  public TiposUpdate _TipoUpdate
1687  {
1688  get { return _eTipoUpdate; }
1689  set { _eTipoUpdate = value; }
1690  }
1691 
1692  private Mantegrid _oMantegrid;
1696  public Mantegrid _Mantegrid
1697  {
1698  get
1699  {
1700  return _oMantegrid;
1701  }
1702  set
1703  {
1704  _oMantegrid = value;
1705 
1706  if (_oMantegrid == null) return;
1707 
1708  //PE98308 - ho comento pq al posar a true ens fa apareixer el browser al gridartdocventa i gridartdoccompra quan no hi han de ser.
1709  //_oMantegrid._MostrarBrowMante = true;
1710 
1711  _oMantegrid._Grid.CellBeginEdit += new DataGridViewCellCancelEventHandler(_Grid_CellBeginEdit);
1712  _oMantegrid._Grid.CellEndEdit += new DataGridViewCellEventHandler(_Grid_CellEndEdit);
1713 
1714  _oGrid = _oMantegrid._Grid; // Task 115209: Plugin 3.0 - Asociamos la grid para poder reutilizar el código en los documentos y traspasos
1715 
1716  _Configurar_Grid();
1717  }
1718  }
1719 
1720  // Task 115209: Plugin 3.0 - Traspasos
1721  private ewgrid _oGrid;
1725  public ewgrid _Grid
1726  {
1727  get
1728  {
1729  return _oGrid;
1730  }
1731  set
1732  {
1733  _oGrid = value;
1734 
1735  if (_oGrid == null) return;
1736 
1737  // Task 194577 - Dependiendo de la propiedad, realizamos la configuración
1738  if (_ConfigurarGrid)
1739  {
1740  _oGrid.CellBeginEdit += new DataGridViewCellCancelEventHandler(_ewGrid_CellBeginEditTraspaso);
1741  _oGrid.CellEndEdit += new DataGridViewCellEventHandler(_ewGrid_CellEndEditTraspaso);
1742 
1743  _Configurar_ewgridTraspaso();
1744  }
1745  }
1746  }
1747 
1748  private ewgrid _oGridCopia;
1752  public ewgrid _GridCopia
1753  {
1754  get
1755  {
1756  return _oGridCopia;
1757  }
1758  set
1759  {
1760  _oGridCopia = value;
1761  }
1762  }
1763 
1764  private bool _lConfigurarGrid = true;
1768  public bool _ConfigurarGrid
1769  {
1770  get { return _lConfigurarGrid; }
1771  set { _lConfigurarGrid = value; }
1772  }
1773 
1777  private void _Configurar_ewgridTraspaso()
1778  {
1779  _lTraspaso = true;
1780  string lcDataPropertyName = string.Empty, lcMensajePropiedades = string.Empty;
1781 
1782  bool llLineas = (this._Lineas.Count >= 0);
1783 
1784  // Añadimos las columnas que tenemos de campos marcados como traspasables
1785  foreach (KeyValuePair<string, DefPropiedad> loPropietat in _DefPropiedades)
1786  {
1787  if (!string.IsNullOrWhiteSpace(loPropietat.Value._CampoTabla) && loPropietat.Value._ColumnaGrid != null && loPropietat.Value._Traspasable) // Presentamos las columnas que son traspasables
1788  {
1789  lcDataPropertyName = ColumnaTraspaso(loPropietat.Value);
1790 
1791  if (!llLineas || (this._Lineas[0].GetType().GetProperty(lcDataPropertyName) == null))
1792  {
1793  if (llLineas) // Control de propiedades inexistentes
1794  {
1795  if (!string.IsNullOrWhiteSpace(lcMensajePropiedades))
1796  lcMensajePropiedades += ", ";
1797 
1798  lcMensajePropiedades += lcDataPropertyName;
1799  }
1800 
1801  lcDataPropertyName = loPropietat.Value._DataPropertyName;
1802  }
1803 
1804  _AddGridColumna(loPropietat.Value, lcDataPropertyName);
1805  }
1806  }
1807 
1808  if (llLineas)
1809  RefrescarGridTraspaso();
1810 
1811  // Si hay alguna propiedad que no existe, presentamos el aviso correspondiente. De momento lo controlamos en la extensión origen
1812  if (!string.IsNullOrWhiteSpace(lcMensajePropiedades))
1813  _Mensaje_Error = "Para poder realizar el traspaso de información de la extensión " + this.GetType().ToString() +
1814  "es necesario que existan las siguientes propiedades: " + lcMensajePropiedades + ".";
1815 
1816  _lTraspaso = false;
1817  }
1818 
1822  private void RefrescarGridTraspaso()
1823  {
1824  if (_ExtensionDocsDocumentoLineaType != null)
1825  {
1826  string lcDataPropertyName;
1827  int lnIndexLinia;
1828 
1829  foreach (_ExtensionDocumentoLinea loLinea in _Lineas)
1830  {
1831  foreach (KeyValuePair<string, DefPropiedad> loPropietat in _DefPropiedades)
1832  {
1833  if (!string.IsNullOrWhiteSpace(loPropietat.Value._CampoTabla) && (loPropietat.Value._Traspasable) && (this._Grid.Columns.Contains(this.ColumnaTraspaso(loPropietat.Value))))
1834  {
1835  lcDataPropertyName = loPropietat.Value._DataPropertyName;
1836 
1837  object loValue = loLinea._GetPropertyValue(lcDataPropertyName); // Recuperamos el valor del campo del traspaso
1838 
1839  lnIndexLinia = _Lineas.IndexOf(loLinea);
1840 
1841  lcDataPropertyName = this.ColumnaTraspaso(loPropietat.Value);
1842  loLinea._SetPropertyValue(lcDataPropertyName, loValue); // Actualizamos la propiedad del negocio para se pueda traspasar correctamente
1843 
1844  this._Grid.Rows[lnIndexLinia].Cells[lcDataPropertyName].Value = loValue; // Asignamos el valor a la celda de la gtrid
1845  }
1846  }
1847  }
1848  }
1849  }
1850 
1856  private string ColumnaTraspaso(DefPropiedad toDefPropiedad)
1857  {
1858  return toDefPropiedad._DataPropertyName + "_Traspaso";
1859  }
1860  // FTask 115209: Plugin 3.0 - Traspasos
1861 
1862  #endregion PROPIETATS
1863 
1864 
1865  //--------------------------------------------------------------------------//
1866 
1867 
1868  #region EVENTS
1869 
1870  // Inicia la edición de la celda
1871  private void _Grid_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
1872  {
1873 
1874  }
1875 
1880  public bool _CurrentCellValue()
1881  {
1882  if (this._Grid.CurrentCell == null)
1883  return false;
1884 
1885  return CellValueChange(this._Grid, new DataGridViewCellEventArgs(this._Grid.CurrentCell.ColumnIndex, this._Grid.CurrentCell.RowIndex));
1886  }
1887 
1893  private bool CellValueChange(object sender, DataGridViewCellEventArgs e)
1894  {
1895  bool llOk = false;
1896 
1897  // PE-96322. Comprobar si se ha configurado tabla de líneas
1898  if (_ExtensionDocsDocumentoLineaType == null)
1899  return false;
1900 
1901  DefPropiedad loColActual = null;
1902 
1903  // Busco la cel·la que s'ha modificat
1904  DataGridViewCell loCell = _Mantegrid._Grid.Rows[e.RowIndex].Cells[e.ColumnIndex];
1905 
1906  // Task 115209. Certificamos que existe el Row en las líneas
1907  if ((e.RowIndex + 1) > _Lineas.Count)
1908  return false;
1909 
1910  // Busco l'objecte _Linia associat al DataGridViewRow
1911  IExtensionDocsDocumentoLinea loLinia = _Lineas[e.RowIndex];
1912 
1913  if (loLinia == null)
1914  return false;
1915 
1916  // Busquem la columna a la colecció
1917  _DefPropiedades.TryGetValue(_Mantegrid._Grid.Columns[e.ColumnIndex].Name, out loColActual);
1918 
1919  if (loColActual != null)
1920  {
1921  // Tenim columna. Fem comprovacions
1922  bool lbHiHaError = Columna_Validar_Valor(loColActual, _Mantegrid._Grid.Rows[e.RowIndex]);
1923 
1924  if (lbHiHaError)
1925  {
1926  // S'ha de restaurar el valor anterior
1927  loCell.Value = loLinia._GetPropertyValue(loColActual._DataPropertyName);
1928  }
1929  else
1930  {
1931  // Assignem el valor a la propietat de la línia associada
1932  loLinia._SetPropertyValue(loColActual._DataPropertyName, loCell.Value);
1933 
1934  // Comprobar si ha sido posible asignar el valor
1935  object cellValue = loLinia._GetPropertyValue(loColActual._DataPropertyName);
1936  if (!object.Equals(cellValue, loCell.Value))
1937  {
1938  loCell.Value = cellValue;
1939  }
1940  }
1941 
1942  llOk = true;
1943  }
1944 
1945  return llOk;
1946  }
1947 
1948  // Finaliza la edición de la celda
1949  private void _Grid_CellEndEdit(object sender, DataGridViewCellEventArgs e)
1950  {
1951  CellValueChange(sender, e);
1952  }
1953 
1954  // Task 115209: Plugin 3.0 - Traspasos
1955  // Inicia la edición de la celda
1956  private void _ewGrid_CellBeginEditTraspaso(object sender, DataGridViewCellCancelEventArgs e)
1957  {
1958 
1959  }
1960 
1961  // Finaliza la edición de la celda
1962  private void _ewGrid_CellEndEditTraspaso(object sender, DataGridViewCellEventArgs e)
1963  {
1964  // PE-96322. Comprobar si se ha configurado tabla de líneas
1965  if (_ExtensionDocsDocumentoLineaType == null)
1966  return;
1967 
1968  // Busco l'objecte _Linia associat al DataGridViewRow
1969  IExtensionDocsDocumentoLinea loLinia = _Lineas[e.RowIndex];
1970 
1971  if (loLinia == null) return;
1972 
1973  _lTraspaso = true;
1974 
1975  // Busquem la columna a la colecció
1976  string lcDataPropertyName = _oGrid.Columns[e.ColumnIndex].Name;
1977 
1978  if (string.IsNullOrWhiteSpace(_oGrid.Columns[e.ColumnIndex].DataPropertyName) && lcDataPropertyName.Contains("_Traspaso") && lcDataPropertyName.Length > 9)
1979  {
1980  DefPropiedad loColActual = null;
1981 
1982  string lcColumnNameDefPropiedad = lcDataPropertyName.Substring(0, lcDataPropertyName.Length - 9);
1983 
1984  _DefPropiedades.TryGetValue(lcColumnNameDefPropiedad, out loColActual); // En _Defpropiedades se ha de buscar por el nombre, no por el del traspaso
1985 
1986  if (loColActual != null)
1987  {
1988  // Tenim columna. Fem comprovacions
1989  bool lbError = Columna_Validar_Valor(loColActual, _oGrid.Rows[e.RowIndex], lcDataPropertyName);
1990 
1991  // Busco la cel·la que s'ha modificat
1992  DataGridViewCell loCell = _oGrid.Rows[e.RowIndex].Cells[e.ColumnIndex];
1993 
1994  if (lbError)
1995  loCell.Value = loLinia._GetPropertyValue(lcDataPropertyName); // S'ha de restaurar el valor anterior
1996  else
1997  loLinia._SetPropertyValue(lcDataPropertyName, loCell.Value); // Assignem el valor a la propietat de la línia associada
1998  }
1999  }
2000 
2001  _lTraspaso = false;
2002  }
2003  // FTask 115209: Plugin 3.0 - Traspasos
2004 
2005  #endregion EVENTS
2006 
2007 
2008  //--------------------------------------------------------------------------//
2009 
2010 
2011  #region CAMPS
2012 
2016  public Dictionary<string, DefPropiedad> _DefPropiedades = new Dictionary<string, DefPropiedad>();
2017 
2021  public List<IExtensionDocsDocumentoLinea> _Lineas = new List<IExtensionDocsDocumentoLinea>();
2022 
2026  public DataTable _dtResultadoConsulta;
2027 
2031  public bool _bIsLoading;
2032 
2033  // Necessitem guardar els valors de les claus amb que hem recuperat els últims registres
2034  // PE-100108. Declarar Internal las variables de filtro
2035  internal string _cEmpresa;
2036  internal string _cNumero;
2037  internal string _cClave3;
2038  internal bool _lTraspaso = false; // Task 115209: Plugin 3.0 - Traspasos
2039 
2040  #endregion CAMPS
2041 
2042 
2043  //--------------------------------------------------------------------------//
2044 
2045 
2046  #region METODES DE INTERFICIE
2047 
2056  public virtual bool _ValidacionModificacionUnidades(bool tlOrigenUnidades, decimal tnUnidadesOld, DataTable toResultados, IDocumentLinea toLineaDocumento)
2057  {
2058  return true;
2059  }
2060 
2066  public virtual Dictionary<string, object> _Obtener_Filtros_SageReports(Dictionary<string, object> tdicParametros = null)
2067  {
2068  return new Dictionary<string, object>();
2069  }
2070 
2077  {
2078  IExtensionDocsDocumentoLinea loLinaExt = null;
2079 
2080  if (this._Lineas.Count > 0)
2081  {
2082  foreach (IExtensionDocsDocumentoLinea liniaext in this._Lineas)
2083  {
2084  if (liniaext._LineaDocumento.Equals(toLiniaDoc))
2085  {
2086  loLinaExt = liniaext;
2087 
2088  break;
2089  }
2090  }
2091  }
2092 
2093  return loLinaExt;
2094  }
2095 
2101  protected internal virtual DataRow _GetDataRowLinia(IDocumentLinea toLiniaDoc)
2102  {
2103  DataRow dataRow = null;
2104 
2105  if (_dtResultadoConsulta != null)
2106  {
2107  // Esborro la línea al datatable intern
2108  DataRow[] loRow = this._dtResultadoConsulta.Select(this._CampoLinea + " = " + toLiniaDoc._LineaReal.ToString());
2109  if (loRow.Count() > 0)
2110  {
2111  dataRow = loRow[0];
2112  }
2113  }
2114 
2115  return dataRow;
2116  }
2117 
2121  public virtual void _Documento_Asignado()
2122  {
2123 
2124  }
2125 
2129  public virtual void _Mantegrid_Vinculado()
2130  {
2131 
2132  }
2133 
2140  public DefPropiedad _AddPropiedad(string tcDataPropertyName, string tcCampoTabla = "")
2141  {
2142  DefPropiedad loNewPropiedad = new DefPropiedad(tcDataPropertyName, tcCampoTabla);
2143  _DefPropiedades.Add(tcDataPropertyName, loNewPropiedad);
2144 
2145  return loNewPropiedad;
2146  }
2147 
2155  public DefPropiedad _AddPropiedad(string tcDataPropertyName, string tcCampoTabla = "", bool tlTraspasable = false)
2156  {
2157  DefPropiedad loNewPropiedad = new DefPropiedad(tcDataPropertyName, tcCampoTabla, tlTraspasable); // Task 115209: Plugin 3.0 - Traspasos
2158  _DefPropiedades.Add(tcDataPropertyName, loNewPropiedad);
2159 
2160  return loNewPropiedad;
2161  }
2162 
2168  public virtual IExtensionDocsDocumentoLinea _AddLinea(IDocumentLinea toLineaDocumento)
2169  {
2170  IExtensionDocsDocumentoLinea loLinia = _Añadir_Linea(toLineaDocumento);
2171 
2172  return loLinia;
2173  }
2174 
2181  public virtual IExtensionDocsDocumentoLinea _InsertLinea(IDocumentLinea toLineaDocumento, int tnPosLlista)
2182  {
2183  IExtensionDocsDocumentoLinea loLinia = _Insertar_Linea(toLineaDocumento, tnPosLlista);
2184 
2185  return loLinia;
2186  }
2187 
2194  public _ExtensionDocumentoLinea _SearchLinea(_ExtensionDocumento toExtensionDocumento, dynamic toLinea)
2195  {
2196  _ExtensionDocumentoLinea loExtensionLinea = _Get_Linea_Ext(toLinea);
2197 
2198  return loExtensionLinea;
2199  }
2200 
2207  {
2208  _ExtensionDocumentoLinea loExtensionLinea = null;
2209 
2210  // RQ 143973. Comprobar si hay líneas
2211  if (toExtensionDocumento._Lineas.Any())
2212  {
2213  loExtensionLinea = (_ExtensionDocumentoLinea)toExtensionDocumento._Lineas.Last();
2214  }
2215 
2216  return loExtensionLinea;
2217  }
2218 
2227  public virtual bool _LineaToDocumento(IExtensionDocsDocumento toExtensionDestino, dynamic toLineaOrigen, dynamic toLineaDestino, bool tlVisualLayer = true)
2228  {
2229  string lcPropertyName;
2230  object loPropiedad;
2231  _ExtensionDocumentoLinea loExtensionLineaDestino = null, loExtensionLineaOrigen = null;
2232 
2233  loExtensionLineaOrigen = this._SearchLinea(this, toLineaOrigen);
2234  if (loExtensionLineaOrigen == null)
2235  return false;
2236 
2237  _ExtensionDocumento loExtensionDestino = (_ExtensionDocumento)toExtensionDestino;
2238  loExtensionLineaDestino = this._SearchLastLinea(loExtensionDestino); // En la extensión destino siempre buscamos la última línea
2239  if (loExtensionLineaDestino == null)
2240  return false;
2241 
2242  foreach (KeyValuePair<string, DefPropiedad> loPropietat in _DefPropiedades)
2243  {
2244  if (!string.IsNullOrWhiteSpace(loPropietat.Value._CampoTabla) && loPropietat.Value._Traspasable)
2245  {
2246  if (tlVisualLayer) // Traspaso realizado desde el formulario frmTraspaso
2247  {
2248  lcPropertyName = this.ColumnaTraspaso(loPropietat.Value);
2249  loPropiedad = loExtensionLineaOrigen._GetPropertyValue(lcPropertyName);
2250  }
2251  else // Pasamos la información a la propiedad de _Traspaso por si el usuario tiene una serie de validaciones en el "Set" de propiedad
2252  {
2253  lcPropertyName = loPropietat.Value._DataPropertyName;
2254  loPropiedad = loExtensionLineaOrigen._GetPropertyValue(lcPropertyName);
2255  lcPropertyName = this.ColumnaTraspaso(loPropietat.Value);
2256  loExtensionLineaOrigen._SetPropertyValue(lcPropertyName, loPropiedad);
2257  }
2258 
2259  loExtensionLineaDestino._SetPropertyValue(loPropietat.Value._DataPropertyName, loPropiedad);
2260  }
2261  }
2262 
2263  return true;
2264  }
2265  // FTask 115209: Plugin 3.0 - Traspasos
2266 
2271  public virtual bool _Delete()
2272  {
2273  // En el before no hay que borrar
2274  if (_eBeforeAfter == TipoExecute.Before)
2275  {
2276  return true;
2277  }
2278 
2279  // Esborro els registres de la taula
2280  _Borrar_Registros_Tabla();
2281 
2282  // Buido llistes i referencies
2283  _Descargar_Todas_Lineas();
2284 
2285  // Buido claus
2286  _cEmpresa = "";
2287  _cNumero = "";
2288  _cClave3 = "";
2289 
2290  // PE-100158. Buidar DataTable caché
2291  _Load_Linies(_cEmpresa, _cNumero, _cClave3);
2292 
2293  return true;
2294  }
2295 
2300  public virtual bool _Delete_Validate()
2301  {
2302  return true;
2303  }
2304 
2309  public virtual bool _Delete_Linea(IDocumentLinea toLineaDocumento)
2310  {
2311  if (_eBeforeAfter == TipoExecute.Before)
2312  {
2313  return true;
2314  }
2315 
2316  // Busquem la linia associada
2317  _ExtensionDocumentoLinea loLiniaAs = null;
2318  foreach (_ExtensionDocumentoLinea loLinia in _Lineas)
2319  {
2320  if (object.Equals(loLinia._LineaDocumento, toLineaDocumento))
2321  {
2322  loLiniaAs = loLinia;
2323  break;
2324  }
2325  }
2326 
2327  if (loLiniaAs != null)
2328  {
2329  loLiniaAs._eBeforeAfter = TipoExecute.Before;
2330  if (!loLiniaAs._Delete())
2331  {
2332  return false;
2333  }
2334 
2335  _Lineas.Remove(loLiniaAs);
2336 
2337  loLiniaAs._eBeforeAfter = TipoExecute.After;
2338  if (loLiniaAs._Delete())
2339  {
2340  // Forzamos guardar para que borre el registro en la tabla
2341  _Save(true);
2342  }
2343 
2344  loLiniaAs = null;
2345  }
2346 
2347  // PE-99436. Si sale por aquí siempre true
2348  return true;
2349  }
2350 
2355  public virtual void _Error(IEWException toException)
2356  {
2357 
2358  }
2359 
2363  public virtual void _Printed()
2364  {
2365 
2366  }
2367 
2371  public virtual void _UnPrinted()
2372  {
2373 
2374  }
2375 
2379  public virtual bool _Load()
2380  {
2381  return true;
2382  }
2383 
2391  public virtual bool _Load(string tcEmpresa, string tcNumero, string tcClave3 = "")
2392  {
2393  // De momento no realizamos ninguna acción en modo Before
2394  if (this._eBeforeAfter == TipoExecute.Before)
2395  return true;
2396 
2397  // Vacimos datos actuales
2398  _Descargar_Todas_Lineas();
2399 
2400  _cEmpresa = "";
2401  _cNumero = "";
2402  _cClave3 = "";
2403 
2404  // Si hay configuración,
2405  if (!string.IsNullOrWhiteSpace(_DataBase) && !string.IsNullOrWhiteSpace(_Tabla) && !string.IsNullOrWhiteSpace(_CampoEmpresa) && !string.IsNullOrWhiteSpace(_CampoNumero))
2406  {
2407  // Guardem els valors de les claus
2408  _cEmpresa = tcEmpresa;
2409  _cNumero = tcNumero;
2410  _cClave3 = tcClave3;
2411  }
2412 
2413  // PE-100158. Buidar DataTable caché
2414  _Load_Linies(_cEmpresa, _cNumero, _cClave3);
2415 
2416  _bIsLoading = true;
2417 
2418  // PE-96322. Comprobar si se ha configurado tabla de líneas
2419  if (_ExtensionDocsDocumentoLineaType != null)
2420  {
2421  // Para cada línea del documento añadimos una linea al módulo
2422  foreach (IDocumentLinea loDocVentaLin in _Documento._Lineas)
2423  {
2424  // Añadimos la línea
2425  IExtensionDocsDocumentoLinea loLinia = _Añadir_Linea(loDocVentaLin);
2426 
2427  if (loLinia != null)
2428  {
2429  // Si se ha definido campo línea, añadimos una instnacia para cada una
2430  if (_dtResultadoConsulta != null && !string.IsNullOrWhiteSpace(_CampoLinea))
2431  {
2432  DataRow loRow = _ObtenerDatosLineaExtension(loDocVentaLin, tcClave3);
2433 
2434  if (loRow != null)
2435  {
2436  // Ponemos el valor a las propiedades
2437  foreach (KeyValuePair<string, DefPropiedad> loPropietat in _DefPropiedades)
2438  {
2439  if (!string.IsNullOrWhiteSpace(loPropietat.Value._CampoTabla))
2440  {
2441  loLinia._SetPropertyValue(loPropietat.Value._DataPropertyName, loRow[loPropietat.Value._CampoTabla]);
2442  }
2443  }
2444  }
2445  }
2446  }
2447  }
2448  }
2449 
2450  _bIsLoading = false;
2451 
2452  return true;
2453  }
2454 
2460  protected internal virtual DataRow _ObtenerDatosLineaExtension(IDocumentLinea loDocVentaLin, string tcClave3 = "")
2461  {
2462  DataRow dataRow = null;
2463 
2464  // Si s'ha definit 3ª clau, l'afegim al Where
2465  string campoclave3 = "";
2466  if (!string.IsNullOrWhiteSpace(_CampoClave3))
2467  {
2468  campoclave3 += " And " + _CampoClave3 + "=" + DB.SQLString(tcClave3);
2469  }
2470 
2471  // Busco el registro correspondiente
2472  DataRow[] loRow = _dtResultadoConsulta.Select(_CampoEmpresa + "=" + DB.SQLString(loDocVentaLin._Empresa) + " And " +
2473  _CampoNumero + "=" + DB.SQLString(loDocVentaLin._Numero) + " And " +
2474  _CampoLinea + "=" + DB.SQLString(loDocVentaLin._LineaReal) +
2475  campoclave3);
2476 
2477  if (loRow.Count() > 0)
2478  {
2479  dataRow = loRow[0];
2480  }
2481 
2482  return dataRow;
2483  }
2484 
2490  protected internal virtual string _WhereLinea(IExtensionDocsDocumentoLinea linea)
2491  {
2492  // Preparo la consulta
2493  string wherelinea = this._CampoEmpresa + " = " + DB.SQLString(this._cEmpresa) + " And " + this._CampoNumero + " = " + DB.SQLString(this._cNumero);
2494 
2495  // Si s'ha definit camp 3ª clau, l'afegim al Where
2496  if (!string.IsNullOrWhiteSpace(this._CampoClave3))
2497  {
2498  wherelinea += " And " + this._CampoClave3 + " = " + DB.SQLString(this._cClave3);
2499  }
2500 
2501  // Si s'ha definit condició, l'afegim al Where
2502  if (!string.IsNullOrWhiteSpace(this._Condicion))
2503  {
2504  wherelinea += " And " + this._Condicion;
2505  }
2506 
2507  // Afegim el camp linia
2508  wherelinea = wherelinea + " And " + this._CampoLinea + " = " + DB.SQLString(linea._LineaDocumento._LineaReal);
2509 
2510  return wherelinea;
2511  }
2512 
2518  protected internal virtual string _GetLineaKeysValues(IExtensionDocsDocumentoLinea linea)
2519  {
2520  // Preparem valors clau menys la línia
2521  string keysvalues = DB.SQLString(this._cEmpresa) + ", " + DB.SQLString(this._cNumero);
2522  if (!string.IsNullOrWhiteSpace(this._CampoClave3))
2523  keysvalues += ", " + DB.SQLString(this._cClave3);
2524 
2525  return keysvalues;
2526  }
2527 
2533  protected internal virtual string _GetLineaKeysNames(IExtensionDocsDocumentoLinea linea)
2534  {
2535  // Preparem camps clau
2536  string namesvalues = this._CampoEmpresa + ", " + this._CampoNumero;
2537  if (!string.IsNullOrWhiteSpace(this._CampoClave3))
2538  namesvalues += ", " + this._CampoClave3;
2539 
2540  return namesvalues;
2541  }
2542 
2546  public virtual void _Refresh()
2547  {
2548  if (this._Grid != null && !string.IsNullOrWhiteSpace(_cEmpresa) && !string.IsNullOrWhiteSpace(_cNumero))
2549  {
2550  //_Load(_cEmpresa, _cNumero, _cClave3);
2551 
2552  if (this._Grid.Rows.Count == 0)
2553  {
2554  return;
2555  }
2556 
2557  string lcDataPropertyName;
2558  int lnIndexLinia;
2559 
2560  foreach (_ExtensionDocumentoLinea loLinea in _Lineas)
2561  {
2562  foreach (KeyValuePair<string, DefPropiedad> loPropietat in _DefPropiedades)
2563  {
2564  if (loPropietat.Value._ColumnaGrid != null)
2565  {
2566  lcDataPropertyName = loPropietat.Value._DataPropertyName;
2567 
2568  object loValue = loLinea._GetPropertyValue(lcDataPropertyName);
2569 
2570  lnIndexLinia = _Lineas.IndexOf(loLinea);
2571 
2572  if (lnIndexLinia < this._Grid.Rows.Count)
2573  {
2574  if (this._Grid.Columns.Contains(lcDataPropertyName))
2575  {
2576  this._Grid.Rows[lnIndexLinia].Cells[lcDataPropertyName].Value = loValue;
2577  }
2578  }
2579  }
2580  }
2581  }
2582  }
2583  }
2584 
2592  public virtual bool _New(string tcEmpresa, string tcNumero = "", string tcClave3 = "")
2593  {
2594  // Guardem els valors de les claus pels nous registres
2595  _cEmpresa = tcEmpresa;
2596  _cNumero = tcNumero;
2597  _cClave3 = tcClave3;
2598 
2599  // PE-100158. Buidar DataTable caché
2600  _Load_Linies(_cEmpresa, _cNumero, _cClave3);
2601 
2602  _Lineas.Clear();
2603 
2604  return true;
2605  }
2606 
2611  public virtual bool _Print()
2612  {
2613  return true;
2614  }
2615 
2621  public virtual bool _Save(bool tbForzarGuardarLineas = false)
2622  {
2623  if (_eBeforeAfter == TipoExecute.Before)
2624  return true;
2625 
2626  Debug.WriteLineIf(Debugger.IsAttached, $"_EstensionDocumento _SAVE {DateTime.Now}");
2627 
2628  // Si no se fuerza a guardar líneas no hacemos nada. Las líneas se guardan en la clase de líneas
2629  if (tbForzarGuardarLineas)
2630  {
2631  if (_TipoUpdate == TiposUpdate.Update)
2632  {
2633  // Actualitzar
2634  _Actualizar_Registros_Tabla();
2635  }
2636  else
2637  {
2638  // Esborro els registres de la taula
2639  _Borrar_Registros_Tabla();
2640 
2641  // Volco tots els registres a la taula
2642  _Guardar_Registros_Tabla();
2643  }
2644 
2645  // PE-100158. Buidar DataTable caché
2646  _Load_Linies(_cEmpresa, _cNumero, _cClave3);
2647  }
2648 
2649  return true;
2650  }
2651 
2658  public virtual bool _Abandonar_Documento(bool tbNoValidarDocumento = false, bool tlSalirDocumento = false)
2659  {
2660  if (this._eBeforeAfter == TipoExecute.Before)
2661  return true;
2662 
2663  bool lbAbandonar = true;
2664 
2665  // Buidar llistes i referencies
2666  _Descargar_Todas_Lineas();
2667 
2668  // PE-100158. Buidar DataTable caché
2669  _Load_Linies("", "", "");
2670 
2671  //Bug 128308: Faltaba borrar estas propiedades ya que estamos descargando el documento y las hemos de dejar vacías
2672  _cNumero = "";
2673  _cEmpresa = "";
2674  _cClave3 = "";
2675 
2676  return lbAbandonar;
2677  }
2678 
2686  public virtual bool _To_Documento(Dictionary<string, object> toParams, dynamic toDocumentoDestino, bool tbEsNou)
2687  {
2688  return true;
2689  }
2690 
2696  public virtual bool _Es_Valido(bool tlAbandonaDocumento = false)
2697  {
2698  return true;
2699  }
2700 
2705  public virtual bool _Validaciones_Previas_Documento()
2706  {
2707  return true;
2708  }
2709 
2710  // Task 115211
2715  public virtual bool _IsTraspasable()
2716  {
2717  return false;
2718  }
2719  // FTask 115211
2720 
2724  public virtual void _Totalizar()
2725  {
2726 
2727  }
2728 
2732  public virtual void _Totales_Especiales_Documento(IDocumentLinea tolinea)
2733  {
2734 
2735  }
2736 
2741  public virtual bool _Validar_Solo_Lectura()
2742  {
2743  return false;
2744  }
2745 
2753  public virtual string _SqlConculta(string tcEmpresa, string tcNumero, string tCampoClave3 = "")
2754  {
2755  string lcSql = "";
2756 
2757  // Si hay configuración,
2758  if (!string.IsNullOrWhiteSpace(_DataBase) && !string.IsNullOrWhiteSpace(_Tabla) && !string.IsNullOrWhiteSpace(_CampoEmpresa) && !string.IsNullOrWhiteSpace(_CampoNumero))
2759  {
2760  lcSql = "Select * " +
2761  " From " + DB.SQLDatabase(_DataBase, _Tabla) +
2762  " Where " + _CampoEmpresa + " = " + DB.SQLString(tcEmpresa) +
2763  " And " + _CampoNumero + " = " + DB.SQLString(tcNumero);
2764 
2765  // Si s'ha definit 3ª clau, l'afegim al Where
2766  if (!string.IsNullOrWhiteSpace(_CampoClave3))
2767  {
2768  lcSql += " And " + _CampoClave3 + " = " + DB.SQLString(tCampoClave3);
2769  }
2770 
2771  // Si s'ha definit condició, l'afegim al Where
2772  if (!string.IsNullOrWhiteSpace(_Condicion))
2773  {
2774  lcSql += " And " + _Condicion;
2775  }
2776  }
2777 
2778  return lcSql;
2779  }
2780 
2788  public virtual List<String> _Buscar_Por_Referencia(String tcLetraReferencia, String tcNumeroReferencia, List<String> toDocumentos)
2789  {
2790  return toDocumentos;
2791  }
2792 
2797  public virtual bool _MarcaCancelar(bool tlCancelar)
2798  {
2799  return true;
2800  }
2801 
2806  public virtual bool _MarcaTraspasar(bool tlTraspaso)
2807  {
2808  return true;
2809  }
2810 
2815  public virtual void _Duplicar(dynamic toDestino)
2816  {
2817 
2818  }
2819 
2820  #endregion METODES DE INTERFICIE
2821 
2822 
2823  //--------------------------------------------------------------------------//
2824 
2825 
2826  #region METODES PRIVATS
2827 
2828 
2835  protected internal void _Load_Linies(string tcEmpresa, string tcNumero, string tcClave3)
2836  {
2837  // Recarregar els registres actualitzats per a futures actualitzacions
2838  string lcSql = _SqlConculta(tcEmpresa, tcNumero, tcClave3);
2839  if (!string.IsNullOrWhiteSpace(lcSql))
2840  {
2841  // PE-98101. Hay que inicializar el DataTable
2842  _dtResultadoConsulta = new DataTable();
2843  DB.SQLExec(lcSql, ref _dtResultadoConsulta);
2844  }
2845  }
2846 
2847  // Borra todas las líneas
2848  private void _Descargar_Todas_Lineas()
2849  {
2850  // Borrar todas las líneas recuperadas
2851 
2852  for (int i = _Lineas.Count - 1; i > -1; i--)
2853  {
2854  _ExtensionDocumentoLinea loLinia = (_ExtensionDocumentoLinea)_Lineas[i];
2855  _Borrar_Linea(loLinia);
2856  }
2857 
2858  _Lineas.Clear();
2859  }
2860 
2861  // Borra la línea
2862  private void _Borrar_Linea(_ExtensionDocumentoLinea toLinia)
2863  {
2864  // Treiem la línia de la llista
2865  _Lineas.Remove(toLinia);
2866  toLinia = null;
2867  }
2868 
2869  // Añade un nuevo item a cada colección
2870  private _ExtensionDocumentoLinea _Añadir_Linea(IDocumentLinea toLiniaDocumento, DataGridViewRow tdgvRowLastInsert = null)
2871  {
2872  // PE-98254. Controlar null
2873  if (_ExtensionDocsDocumentoLineaType == null)
2874  {
2875  return default(_ExtensionDocumentoLinea);
2876  }
2877 
2878  // PE-98465. Comprovar si la línia ja està afegida. Docsven aprofita la última línia si està buida però es dispara _AddLinea igualment
2879  foreach (_ExtensionDocumentoLinea loLinea in _Lineas)
2880  {
2881  if (object.Equals(toLiniaDocumento._LineaReal, loLinea._LineaDocumento._LineaReal) &&
2882  object.Equals(toLiniaDocumento._Numero, loLinea._LineaDocumento._Numero) &&
2883  object.Equals(toLiniaDocumento._Empresa, loLinea._LineaDocumento._Empresa))
2884  {
2885  // Existeix, la retornem
2886  return loLinea;
2887  }
2888  }
2889 
2890 
2891  // Afegir un nou item a la col·lecció de línies
2892  _ExtensionDocumentoLinea loLinia = (_ExtensionDocumentoLinea)Activator.CreateInstance(_ExtensionDocsDocumentoLineaType);
2893 
2894  if (loLinia != null)
2895  {
2896  _Lineas.Add(loLinia);
2897 
2898  // Assigno referencies
2899  loLinia._Parent = this;
2900  if (_Documento != null)
2901  {
2902  loLinia._CabeceraDocumento = _Documento._Cabecera;
2903  loLinia._Documento = _Documento;
2904  }
2905  if (toLiniaDocumento != null)
2906  {
2907  loLinia._LineaDocumento = toLiniaDocumento;
2908  //toLiniaDocumento._LiniaModulo = toLiniaDocumento;
2909  }
2910 
2911  // Desencadenem l'event que s'ha afegit línia
2912  loLinia._AddedLinea();
2913  }
2914 
2915  return loLinia;
2916  }
2917 
2918  // Inserta una nueva línea en la posición indicada
2919  private _ExtensionDocumentoLinea _Insertar_Linea(IDocumentLinea toLiniaDocumento, int tnPosLlista)
2920  {
2921  // PE-98254. Controlar null
2922  if (_ExtensionDocsDocumentoLineaType == null)
2923  {
2924  return default(_ExtensionDocumentoLinea);
2925  }
2926 
2927  // Comprovem que si les dues col·leccions tenen el mateix número de items és que no s'ha d'insertar res
2928  if (_Lineas.Count == _Documento._Lineas.Count)
2929  return default(_ExtensionDocumentoLinea);
2930 
2931  // Afegir un nou item a la col·lecció de línies
2932  _ExtensionDocumentoLinea loLinia = (_ExtensionDocumentoLinea)Activator.CreateInstance(_ExtensionDocsDocumentoLineaType);
2933 
2934  if (loLinia != null)
2935  {
2936  // En la posició que ens arriba
2937  _Lineas.Insert(tnPosLlista, loLinia);
2938 
2939  // Assigno referencies
2940  loLinia._Parent = this;
2941  if (_Documento != null)
2942  {
2943  loLinia._CabeceraDocumento = _Documento._Cabecera;
2944  loLinia._Documento = _Documento;
2945  }
2946 
2947  if (toLiniaDocumento != null)
2948  {
2949  loLinia._LineaDocumento = toLiniaDocumento;
2950  }
2951 
2952  // Desencadenem l'event que s'ha afegit línia
2953  loLinia._InsertedLinea(tnPosLlista);
2954  }
2955 
2956  return loLinia;
2957  }
2958 
2959  // Actualitza els registres (No Delete-Insert)
2960  private bool _Actualizar_Registros_Tabla()
2961  {
2962  // Si hem configurat taula
2963  if (!string.IsNullOrWhiteSpace(_DataBase) && !string.IsNullOrWhiteSpace(_Tabla) && !string.IsNullOrWhiteSpace(_CampoLinea) && !string.IsNullOrWhiteSpace(_CampoEmpresa) && !string.IsNullOrWhiteSpace(_CampoNumero))
2964  {
2965  // I si tenim claus de registres carregats
2966  if (!string.IsNullOrWhiteSpace(_cEmpresa) && !string.IsNullOrWhiteSpace(_cNumero))
2967  {
2968  // Per cada una de les linies
2969  foreach (_ExtensionDocumentoLinea loLinia in _Lineas)
2970  {
2971  // Si la línia ja existia
2972  DataRow[] ldtExisteix = _dtResultadoConsulta.Select(_CampoLinea + " = " + DB.SQLString(loLinia._LineaDocumento._LineaReal));
2973  if (ldtExisteix.Count() > 0)
2974  {
2975  // la actualitzem
2976  _Actualizar_Registro_Tabla(loLinia, ldtExisteix[0]);
2977  }
2978  else
2979  {
2980  // si no, la insertem
2981  _Guardar_Registro_Tabla(loLinia);
2982  }
2983  }
2984 
2985  // Ara falta esborrar de la taula els que ja no están a _Lineas
2986  foreach (DataRow loRow in _dtResultadoConsulta.Rows)
2987  {
2988  // busquem cada registre llegit de la taula a la colecció de línies
2989  bool lbExist = false;
2990 
2991  foreach (_ExtensionDocumentoLinea loLinia in _Lineas)
2992  {
2993  if (loLinia._LineaDocumento._LineaReal == Convert.ToInt32(loRow[_CampoLinea]))
2994  {
2995  lbExist = true;
2996  break;
2997  }
2998  }
2999 
3000  // i si no hi és, l'esborrem
3001  if (!lbExist)
3002  {
3003  _Borrar_Registros_Tabla(loRow);
3004  }
3005  }
3006  }
3007  }
3008 
3009  return true;
3010  }
3011 
3012  // Actualitza els registres (No Delete-Insert)
3013  private bool _Actualizar_Registro_Tabla(_ExtensionDocumentoLinea toLinia, DataRow existeix)
3014  {
3015  // Preparo la consulta
3016  string lcUpdate = "Update " + DB.SQLDatabase(_DataBase, _Tabla) + " ";
3017  string lcWhere = " Where " + _CampoEmpresa + " = " + DB.SQLString(_cEmpresa) + " And " + _CampoNumero + " = " + DB.SQLString(_cNumero);
3018 
3019  // Si s'ha definit camp 3ª clau, l'afegim al Where
3020  if (!string.IsNullOrWhiteSpace(_CampoClave3))
3021  {
3022  lcWhere += " And " + _CampoClave3 + " = " + DB.SQLString(_cClave3);
3023  }
3024 
3025  // Si s'ha definit condició, l'afegim al Where
3026  if (!string.IsNullOrWhiteSpace(_Condicion))
3027  {
3028  lcWhere += " And " + _Condicion;
3029  }
3030 
3031  // Afegim el camp linia
3032  string lcWhereLinia = lcWhere + " And " + _CampoLinea + " = " + DB.SQLString(toLinia._LineaDocumento._LineaReal);
3033 
3034  // la actualitzem
3035  string lcSets = "";
3036  string lcComa = "";
3037 
3038  // Afegim les propietats i valors
3039  foreach (KeyValuePair<string, DefPropiedad> loProp in _DefPropiedades)
3040  {
3041  object loValue = toLinia._GetPropertyValue(loProp.Value._DataPropertyName);
3042 
3043  if (loProp.Value._Updatable && !string.IsNullOrWhiteSpace(loProp.Value._CampoTabla))
3044  {
3045  bool update = false; // ForceUpdate;
3046  if (!update)
3047  {
3048  // Comparamos los valores
3049  object fieldvalue = existeix[loProp.Value._CampoTabla];
3050 
3051  update = !object.Equals(loValue, fieldvalue);
3052 
3053  if (update)
3054  {
3055  // Comprobar los null
3056  if (loValue == null && fieldvalue == DBNull.Value)
3057  {
3058  update = false;
3059  }
3060 
3061  // Comprobar espacios string
3062  if (update && loValue is string && fieldvalue is string)
3063  {
3064  update = !object.Equals(loValue.ToString().Trim(), fieldvalue.ToString().Trim());
3065  }
3066  }
3067  }
3068 
3069  if (update)
3070  {
3071  lcSets += lcComa + loProp.Value._CampoTabla + " = " + DB.SQLString(loValue);
3072  lcComa = ", ";
3073  }
3074  }
3075  }
3076 
3077  if (!string.IsNullOrWhiteSpace(lcSets))
3078  {
3079  // Montem la Sql final
3080  string lcSql = lcUpdate + " Set " + lcSets + lcWhereLinia;
3081 
3082  // i l'executem
3083  DB.SQLExec(lcSql);
3084  }
3085 
3086  return true;
3087  }
3088 
3089  // Esborra tots els registres carregats de la taula
3090  private bool _Borrar_Registros_Tabla()
3091  {
3092  // En caso que estemos haciendo un documento nuevo, no tendremos datos (PE-97109)
3093  if (_dtResultadoConsulta == null)
3094  return true;
3095 
3096  // Si hem configurat taula
3097  if (!string.IsNullOrWhiteSpace(_DataBase) && !string.IsNullOrWhiteSpace(_Tabla) && !string.IsNullOrWhiteSpace(_CampoLinea) && !string.IsNullOrWhiteSpace(_CampoEmpresa) && !string.IsNullOrWhiteSpace(_CampoNumero))
3098  {
3099  // I si tenim claus de registres carregats
3100  if (!string.IsNullOrWhiteSpace(_cEmpresa) && !string.IsNullOrWhiteSpace(_cNumero))
3101  {
3102  foreach (DataRow loRow in _dtResultadoConsulta.Rows)
3103  {
3104  _Borrar_Registros_Tabla(loRow);
3105  }
3106  }
3107  }
3108 
3109  return true;
3110  }
3111 
3117  protected internal virtual bool _Borrar_Registros_Tabla(DataRow toRow)
3118  {
3119  string lcSql = "";
3120 
3121  // Preparo la consulta
3122  string lcDelete = "Delete From " + DB.SQLDatabase(_DataBase, _Tabla) +
3123  " Where " + _CampoEmpresa + " = " + DB.SQLString(_cEmpresa) + " And " +
3124  _CampoNumero + " = " + DB.SQLString(_cNumero);
3125 
3126  // Si s'ha definit camp 3ª clau, l'afegim al Where
3127  if (!string.IsNullOrWhiteSpace(_CampoClave3))
3128  {
3129  lcDelete += " And " + _CampoClave3 + " = " + DB.SQLString(_cClave3);
3130  }
3131 
3132  // Si s'ha definit condició, l'afegim al Where
3133  if (!string.IsNullOrWhiteSpace(_Condicion))
3134  {
3135  lcDelete += " And " + _Condicion;
3136  }
3137 
3138  // Busco el valor del camp línia
3139  int lnLinia = Convert.ToInt32(toRow[_CampoLinea]);
3140 
3141  // Acabo de montar la consulta
3142  lcSql = lcDelete + " And " + _CampoLinea + " = " + DB.SQLString(lnLinia);
3143 
3144  // Executo
3145  return DB.SQLExec(lcSql);
3146  }
3147 
3148  // Guardar todos las líneas cargadas a la tabla
3149  private bool _Guardar_Registros_Tabla()
3150  {
3151  // Si hem configurat taula
3152  if (!string.IsNullOrWhiteSpace(_DataBase) && !string.IsNullOrWhiteSpace(_Tabla) && !string.IsNullOrWhiteSpace(_CampoLinea) && !string.IsNullOrWhiteSpace(_CampoEmpresa) && !string.IsNullOrWhiteSpace(_CampoNumero))
3153  {
3154  // I si tenim claus de registres carregats
3155  if (!string.IsNullOrWhiteSpace(_cEmpresa) && !string.IsNullOrWhiteSpace(_cNumero))
3156  {
3157  // Per cada una de les linies
3158  foreach (_ExtensionDocumentoLinea loLinia in _Lineas)
3159  {
3160  _Guardar_Registro_Tabla(loLinia);
3161  }
3162  }
3163  }
3164 
3165  return true;
3166  }
3167 
3173  protected internal virtual bool _Guardar_Registro_Tabla(_ExtensionDocumentoLinea toLinia)
3174  {
3175 
3176  // Controlar que la línea exista (PE-97109)
3177  if (toLinia._LineaDocumento == null)
3178  return true;
3179 
3180  // Preparem el Insert
3181  string lcInsert = "Insert Into " + DB.SQLDatabase(_DataBase, _Tabla);
3182 
3183  // Preparem camps clau
3184  string lcFields = " (" + _CampoEmpresa + ", " + _CampoNumero;
3185  if (!string.IsNullOrWhiteSpace(_CampoClave3))
3186  lcFields += ", " + _CampoClave3;
3187 
3188  // Preparem valors clau menys la línia
3189  string lcValues = " Values(" + DB.SQLString(_cEmpresa) + ", " + DB.SQLString(_cNumero);
3190  if (!string.IsNullOrWhiteSpace(_CampoClave3))
3191  lcValues += ", " + DB.SQLString(_cClave3);
3192 
3193  // Afegim el camp linia
3194  string lcFieldInsert = lcFields + ", " + _CampoLinea;
3195  string lcValuesInsert = lcValues + ", " + DB.SQLString(toLinia._LineaDocumento._LineaReal);
3196 
3197  // Afegim les propietats i valors
3198  foreach (KeyValuePair<string, DefPropiedad> loProp in _DefPropiedades)
3199  {
3200  if (loProp.Value._Updatable && !string.IsNullOrWhiteSpace(loProp.Value._CampoTabla))
3201  {
3202  lcFieldInsert += ", " + loProp.Value._CampoTabla;
3203  lcValuesInsert += ", " + DB.SQLString(toLinia._GetPropertyValue(loProp.Value._DataPropertyName));
3204  }
3205  }
3206 
3207  // Montem la Sql final
3208  string lcSql = lcInsert + lcFieldInsert + ") " + lcValuesInsert + ")";
3209 
3210  // i l'executem
3211  return DB.SQLExec(lcSql);
3212  }
3213 
3217  private void _Configurar_Grid()
3218  {
3219  // Afegeixo les columnes
3220  foreach (KeyValuePair<string, DefPropiedad> loPropietat in _DefPropiedades)
3221  {
3222  if (loPropietat.Value._ColumnaGrid != null)
3223  {
3224  _AddGridColumna(loPropietat.Value);
3225  }
3226  }
3227  }
3228 
3234  private void _AddGridColumna(DefPropiedad toColumna, string tcDataPropertyName = "") // Task 115209: Plugin 3.0 - Traspasos
3235  {
3236  ewgrid loGrid = _oGrid;
3237 
3238  string lcDataPropertyName;
3239 
3240  if (string.IsNullOrWhiteSpace(tcDataPropertyName))
3241  lcDataPropertyName = toColumna._DataPropertyName;
3242  else
3243  lcDataPropertyName = tcDataPropertyName; // FTask 115209: Plugin 3.0 - Traspasos
3244 
3245  switch (toColumna._ColumnaGrid._TipoColumna)
3246  {
3247  case _TiposColumnaGrid.TextoFormateado:
3248  using (objetos.UserControls.Mantegrid.ewDataGridViewMaskedTextColumn loCol = new objetos.UserControls.Mantegrid.ewDataGridViewMaskedTextColumn(toColumna._ColumnaGrid._FormatString))
3249  {
3250  loCol.Name = lcDataPropertyName; // Task 115209: Plugin 3.0 - Traspasos
3251  loCol.HeaderText = toColumna._ColumnaGrid._Header;
3252  loCol.ValueType = typeof(string);
3253  loCol.ReadOnly = toColumna._ColumnaGrid._ReadOnly;
3254  loCol._ReadOnly = toColumna._ColumnaGrid._ReadOnly; //Task 126374
3255  loCol._NoParar = toColumna._ColumnaGrid._NoPararEnColumna;
3256  loCol.Visible = toColumna._ColumnaGrid._Visible;
3257 
3258  // Orden de posición de la columna
3259  if (toColumna._ColumnaGrid._PosicionColumna > -1)
3260  {
3261  loCol.DisplayIndex = toColumna._ColumnaGrid._PosicionColumna;
3262  }
3263 
3264  // Aplicar ancho en la columna
3265  if (toColumna._ColumnaGrid._Width != 0)
3266  {
3267  loCol.Width = Convert.ToInt16(toColumna._ColumnaGrid._Width * 15);
3268  }
3269 
3270  // Afegir el browser
3271  if (toColumna._ColumnaGrid._Browser != null)
3272  {
3273  _Mantegrid._TeclaF4(lcDataPropertyName, toColumna._ColumnaGrid._Browser); // Task 115209: Plugin 3.0 - Traspasos
3274  }
3275 
3276  // Afegir el mante
3277  if (toColumna._ColumnaGrid._Mante != null)
3278  {
3279  _Mantegrid._TeclaF5(lcDataPropertyName, toColumna._ColumnaGrid._Mante); // Task 115209: Plugin 3.0 - Traspasos
3280  }
3281 
3282  loGrid.Columns.Add(loCol);
3283  };
3284  break;
3285 
3286  case _TiposColumnaGrid.Texto:
3287  using (objetos.UserControls.Mantegrid.ewDataGridViewTextBoxColumn loCol = new objetos.UserControls.Mantegrid.ewDataGridViewTextBoxColumn())
3288  {
3289  loCol.Name = lcDataPropertyName; // Task 115209: Plugin 3.0 - Traspasos
3290  loCol.HeaderText = toColumna._ColumnaGrid._Header;
3291  loCol.ValueType = typeof(string);
3292  loCol.ReadOnly = toColumna._ColumnaGrid._ReadOnly;
3293  loCol._ReadOnly = toColumna._ColumnaGrid._ReadOnly; //Task 126374
3294  loCol._NoParar = toColumna._ColumnaGrid._NoPararEnColumna;
3295  loCol.Visible = toColumna._ColumnaGrid._Visible;
3296 
3297  // Orden de posición de la columna
3298  if (toColumna._ColumnaGrid._PosicionColumna > -1)
3299  {
3300  loCol.DisplayIndex = toColumna._ColumnaGrid._PosicionColumna;
3301  }
3302 
3303  if (toColumna._ColumnaGrid._MaxInputLength != 0)
3304  {
3305  loCol.MaxInputLength = toColumna._ColumnaGrid._MaxInputLength;
3306  }
3307 
3308  // Aplicar ancho en la columna
3309  if (toColumna._ColumnaGrid._Width != 0)
3310  {
3311  loCol.Width = Convert.ToInt16(toColumna._ColumnaGrid._Width * 15);
3312  }
3313  else
3314  {
3315  loCol.Width = Math.Min(Math.Max(10, loCol.MaxInputLength) * 15, 10 * 15);
3316  }
3317 
3318  // Afegir el browser
3319  if (toColumna._ColumnaGrid._Browser != null)
3320  {
3321  _Mantegrid._TeclaF4(lcDataPropertyName, toColumna._ColumnaGrid._Browser); // Task 115209: Plugin 3.0 - Traspasos
3322  }
3323 
3324  // Afegir el mante
3325  if (toColumna._ColumnaGrid._Mante != null)
3326  {
3327  _Mantegrid._TeclaF5(lcDataPropertyName, toColumna._ColumnaGrid._Mante); // Task 115209: Plugin 3.0 - Traspasos
3328  }
3329 
3330  loGrid.Columns.Add(loCol);
3331  };
3332  break;
3333 
3334  case _TiposColumnaGrid.Número:
3335  using (objetos.UserControls.Mantegrid.DataGridViewNumericUpDownColumn loCol = new objetos.UserControls.Mantegrid.DataGridViewNumericUpDownColumn())
3336  {
3337  loCol.Name = lcDataPropertyName; // Task 115209: Plugin 3.0 - Traspasos
3338  loCol.HeaderText = toColumna._ColumnaGrid._Header;
3339  loCol.ValueType = typeof(string);
3340  loCol.ReadOnly = toColumna._ColumnaGrid._ReadOnly;
3341  loCol._ReadOnly = toColumna._ColumnaGrid._ReadOnly; //Task 126374
3342  loCol._NoParar = toColumna._ColumnaGrid._NoPararEnColumna;
3343  loCol.Visible = toColumna._ColumnaGrid._Visible;
3344 
3345  // Orden de posición de la columna
3346  if (toColumna._ColumnaGrid._PosicionColumna > -1)
3347  {
3348  loCol.DisplayIndex = toColumna._ColumnaGrid._PosicionColumna;
3349  }
3350 
3351  // Aplicar ancho en la columna
3352  if (toColumna._ColumnaGrid._Width != 0)
3353  {
3354  loCol.Width = Convert.ToInt16(toColumna._ColumnaGrid._Width * 15);
3355  }
3356  else
3357  {
3358  loCol.Width = 8 * 15;
3359  }
3360 
3361  // Propietats de la cell
3362  loCol.ValueType = typeof(decimal);
3363  loCol.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
3364 
3365  if (toColumna._ColumnaGrid._Mascara != null)
3366  {
3367  loCol.DefaultCellStyle.Format = toColumna._ColumnaGrid._Mascara._Mascara_Net;
3368  loCol.DecimalPlaces = toColumna._ColumnaGrid._Mascara._Num_Decimales;
3369  loCol.Maximum = toColumna._ColumnaGrid._Mascara._Rango_Max;
3370  loCol.Minimum = toColumna._ColumnaGrid._Mascara._Rango_Min;
3371  }
3372 
3373  loCol.Increment = 1;
3374  loCol.ThousandsSeparator = false;
3375 
3376  loGrid.Columns.Add(loCol);
3377  };
3378  break;
3379 
3380  case _TiposColumnaGrid.Fecha:
3381  using (objetos.UserControls.Mantegrid.CalendarColumn loCol = new objetos.UserControls.Mantegrid.CalendarColumn())
3382  {
3383  loCol.Name = lcDataPropertyName; // Task 115209: Plugin 3.0 - Traspasos
3384  loCol.HeaderText = toColumna._ColumnaGrid._Header;
3385  loCol.ValueType = typeof(DateTime);
3386  loCol.ReadOnly = toColumna._ColumnaGrid._ReadOnly;
3387  loCol._ReadOnly = toColumna._ColumnaGrid._ReadOnly; //Task 126374
3388  loCol._NoParar = toColumna._ColumnaGrid._NoPararEnColumna;
3389  loCol.Visible = toColumna._ColumnaGrid._Visible;
3390 
3391  // Orden de posición de la columna
3392  if (toColumna._ColumnaGrid._PosicionColumna > -1)
3393  {
3394  loCol.DisplayIndex = toColumna._ColumnaGrid._PosicionColumna;
3395  }
3396 
3397  // Aplicar ancho en la columna
3398  if (toColumna._ColumnaGrid._Width != 0)
3399  {
3400  loCol.Width = Convert.ToInt16(toColumna._ColumnaGrid._Width * 15);
3401  }
3402  else
3403  {
3404  loCol.Width = 8 * 15;
3405  }
3406 
3407  loGrid.Columns.Add(loCol);
3408  };
3409  break;
3410  case _TiposColumnaGrid.Lógico:
3411  using (objetos.UserControls.Mantegrid.ewDataGridViewCheckBoxColumn loCol = new objetos.UserControls.Mantegrid.ewDataGridViewCheckBoxColumn())
3412  {
3413  loCol.Name = lcDataPropertyName; // Task 115209: Plugin 3.0 - Traspasos
3414  loCol.HeaderText = toColumna._ColumnaGrid._Header;
3415  loCol.ValueType = typeof(bool);
3416  loCol.ReadOnly = toColumna._ColumnaGrid._ReadOnly;
3417  loCol._ReadOnly = toColumna._ColumnaGrid._ReadOnly; //Task 126374
3418  loCol._NoParar = toColumna._ColumnaGrid._NoPararEnColumna;
3419  loCol.Visible = toColumna._ColumnaGrid._Visible;
3420 
3421  // Orden de posición de la columna
3422  if (toColumna._ColumnaGrid._PosicionColumna > -1)
3423  {
3424  loCol.DisplayIndex = toColumna._ColumnaGrid._PosicionColumna;
3425  }
3426 
3427  // Aplicar ancho en la columna
3428  if (toColumna._ColumnaGrid._Width != 0)
3429  {
3430  loCol.Width = Convert.ToInt16(toColumna._ColumnaGrid._Width * 15);
3431  }
3432  else
3433  {
3434  loCol.Width = 4 * 15;
3435  }
3436 
3437  loGrid.Columns.Add(loCol);
3438  };
3439  break;
3440 
3441  default:
3442  break;
3443  }
3444  }
3445 
3446  // Task 115209: Plugin 3.0 - Traspasos
3453  private string DataPropertyName(DefPropiedad toColumna, string tcDataPropertyName)
3454  {
3455  string lcDataPropertyName = string.Empty;
3456 
3457  if (string.IsNullOrWhiteSpace(tcDataPropertyName))
3458  lcDataPropertyName = toColumna._DataPropertyName;
3459  else
3460  lcDataPropertyName = ColumnaTraspaso(toColumna);
3461 
3462  return lcDataPropertyName;
3463  }
3464 
3472  internal bool Columna_Validar_Valor(DefPropiedad toColumna, DataGridViewRow toGridRow, string tcDataPropertyName = "")
3473  {
3474  bool lbHiHaError = false;
3475  string lcDataPropertyName = DataPropertyName(toColumna, tcDataPropertyName); // Task 115209: Plugin 3.0 - Traspasos
3476 
3477  object loValor = toGridRow.Cells[lcDataPropertyName].Value; // FTask 115209: Plugin 3.0 - Traspasos
3478 
3479  _ExtensionDocumentoLinea loLinia = (_ExtensionDocumentoLinea)_Lineas[toGridRow.Index];
3480  lbHiHaError = Columna_Validar_Valor(toColumna, loLinia, loValor, lcDataPropertyName);
3481 
3482  return lbHiHaError;
3483  }
3484 
3493  internal bool Columna_Validar_Valor(DefPropiedad toColumna, _ExtensionDocumentoLinea toLinia, object toValor, string tcDataPropertyName = "")
3494  {
3495  bool lbHiHaError = false;
3496 
3497  // Validacions
3498  if (toValor == null)
3499  return lbHiHaError;
3500 
3501  // Si estamos cargando registros, no validamos
3502  if (!this._bIsLoading)
3503  {
3504  // PE-92623. Expandir punt
3505  if (toColumna._ExpandirPunto)
3506  {
3507  if (!string.IsNullOrWhiteSpace(toValor.ToString())) // PE-92623. No comprovar si està buit
3508  {
3509  toValor = functions.FUNCTIONS._Punto_Por_Ceros(toValor.ToString());
3510  }
3511  }
3512 
3513  if (!lbHiHaError)
3514  {
3515  // Duplicats
3516  if (toColumna._PermiteDuplicados == false)
3517  {
3518  if (!string.IsNullOrWhiteSpace(toValor.ToString()))
3519  {
3520  string lcDataPropertyName = DataPropertyName(toColumna, tcDataPropertyName); // Task 115209: Plugin 3.0 - Traspasos
3521 
3522  // S'ha de comprovar que no repeteixin el valor en altres linies
3523  foreach (_ExtensionDocumentoLinea loItem in _Lineas)
3524  {
3525  if (!object.Equals(loItem, toLinia))
3526  {
3527  if (object.Equals(loItem._GetPropertyValue(lcDataPropertyName), toValor))
3528  {
3529  //if (_Error_Validar_Valor != null)
3530  //{
3531  // _Error_Validar_Valor(toColumna._Error_Duplicados);
3532  //}
3533  if (_Mantegrid != null)
3534  {
3535  _Mantegrid._Show_Error_Message(toColumna._Error_Duplicados);
3536  }
3537  lbHiHaError = true;
3538  break;
3539  }
3540  }
3541  }
3542  }
3543  }
3544  }
3545  }
3546 
3547  if (!lbHiHaError)
3548  {
3549  // Valor vàlid
3550  if (!string.IsNullOrWhiteSpace(toColumna._Validar_Dato_Tabla) && !string.IsNullOrWhiteSpace(toColumna._Validar_Dato_Clave))
3551  {
3552  if (!this._bIsLoading || (this._bIsLoading && toColumna._Validar_Asignar_Cargando))
3553  {
3554  string lcTabla = "";
3555 
3556  if (!string.IsNullOrWhiteSpace(toColumna._Validar_Dato_BaseDatos))
3557  lcTabla = DB.SQLDatabase(toColumna._Validar_Dato_BaseDatos, toColumna._Validar_Dato_Tabla);
3558  else
3559  lcTabla = DB.SQLDatabase(toColumna._Validar_Dato_Tabla);
3560 
3561  if (!string.IsNullOrWhiteSpace(toValor.ToString())) // PE-92623. No comprovar si està buit
3562  {
3563  // Monto la consulta
3564  string lcSql = "Select " + toColumna._Validar_Dato_Campos +
3565  " From " + lcTabla +
3566  " Where " + toColumna._Validar_Dato_Clave + "=" + DB.SQLString(toValor.ToString());
3567  DataTable ldtValor = new DataTable();
3568  if (!DB.SQLExec(lcSql, ref ldtValor) || ldtValor.Rows.Count == 0)
3569  {
3570  // No existeix
3571  //if (_Error_Validar_Valor != null)
3572  //{
3573  // _Error_Validar_Valor(toColumna._Error_Validar_Dato);
3574  //}
3575  if (_Mantegrid != null)
3576  {
3577  _Mantegrid._Show_Error_Message(toColumna._Error_Validar_Dato);
3578  }
3579  lbHiHaError = true;
3580  }
3581  else
3582  {
3583  // Si hay que mostrar el valor recuperado en algún campo...
3584  if (!string.IsNullOrWhiteSpace(toColumna._Validar_Dato_Columna_Asignar))
3585  {
3586  // Parsejo per si hi ha més d'un camp
3587  string[] lcCampsAsgnar = toColumna._Validar_Dato_Columna_Asignar.Split(',');
3588  for (int i = 0; i < lcCampsAsgnar.Length; i++)
3589  {
3590  toLinia._SetPropertyValue(lcCampsAsgnar[i], ldtValor.Rows[0][i]);
3591  }
3592  }
3593  }
3594  }
3595  }
3596  }
3597  }
3598 
3599  return lbHiHaError;
3600  }
3601 
3608  public bool _LineaMover(int liniaant, int linidestino)
3609  {
3610  bool moved = false;
3611  string lcSql = "";
3612 
3613  // Si s'ha definit línia, fem el cavi
3614  if (!string.IsNullOrWhiteSpace(this._CampoLinea))
3615  {
3616  lcSql = "Update " + DB.SQLDatabase(this._DataBase, this._Tabla) +
3617  " Set " + this._CampoLinea + " = " + DB.SQLString(linidestino) +
3618  " Where " + this._CampoEmpresa + " = " + DB.SQLString(this._cEmpresa) +
3619  " And " + this._CampoNumero + " = " + DB.SQLString(this._cNumero);
3620 
3621  // Si s'ha definit 3ª clau, l'afegim al Where
3622  if (!string.IsNullOrWhiteSpace(this._CampoClave3))
3623  {
3624  lcSql += " And " + this._CampoClave3 + " = " + DB.SQLString(this._cClave3);
3625  }
3626 
3627  lcSql += " And " + this._CampoLinea + " = " + DB.SQLString(liniaant);
3628 
3629  moved = DB.SQLExec(lcSql);
3630 
3631  if(moved)
3632  {
3633  _Load(this._cEmpresa, this._cNumero, this._cClave3);
3634  }
3635  }
3636 
3637  return moved;
3638  }
3639 
3647  public virtual bool _LineaMover(IDocumentLinea lineadocumento, int liniaant, int linidestino)
3648  {
3649  bool moved = false;
3650  string lcSql = "";
3651 
3652  // Si s'ha definit línia, fem el cavi
3653  if (!string.IsNullOrWhiteSpace(this._CampoLinea))
3654  {
3655  lcSql = "Update " + DB.SQLDatabase(this._DataBase, this._Tabla) +
3656  " Set " + this._CampoLinea + " = " + DB.SQLString(linidestino) +
3657  " Where " + this._CampoEmpresa + " = " + DB.SQLString(this._cEmpresa) +
3658  " And " + this._CampoNumero + " = " + DB.SQLString(lineadocumento._Numero);
3659 
3660  // Si s'ha definit 3ª clau, l'afegim al Where
3661  if (!string.IsNullOrWhiteSpace(this._CampoClave3))
3662  {
3663  lcSql += " And " + this._CampoClave3 + " = " + DB.SQLString(this._cClave3);
3664  }
3665 
3666  lcSql += " And " + this._CampoLinea + " = " + DB.SQLString(liniaant);
3667 
3668  moved = DB.SQLExec(lcSql);
3669  }
3670 
3671  return moved;
3672  }
3673 
3680  public virtual bool _Cambiar_Posicion_Linea(IDocumentLinea lineadocumento, int indexliniadestino)
3681  {
3682  bool changed = true;
3683 
3684  // Buscar l'index la línia
3685  int indexliniaant = -1;
3686  dynamic liniatmp = null;
3687 
3688  foreach (var item in _Lineas)
3689  {
3690  if (item._LineaDocumento.Equals(lineadocumento))
3691  {
3692  liniatmp = item;
3693  indexliniaant = _Lineas.IndexOf(item);
3694 
3695  break;
3696  }
3697  }
3698 
3699  if (indexliniaant > -1 && liniatmp != null)
3700  {
3701  _Lineas.RemoveAt(indexliniaant);
3702  _Lineas.Insert(indexliniadestino, liniatmp);
3703  }
3704 
3705  return changed;
3706  }
3707 
3708  #endregion METODES PRIVATS
3709  }
3710 
3711 
3716  {
3720  public Dictionary<string, object> _GetPropiedades()
3721  {
3722  List<string> lstPropExcluidas = new List<string> { };
3723  Dictionary<string, object> dicTemp = functions.FUNCTIONS._GetPropiedades(this, lstPropExcluidas, _Documento);
3724 
3725  return dicTemp;
3726  }
3727  }
3728 
3729 
3734  {
3739  public override bool _Validar_Limite_Credito()
3740  {
3741  return base._Validar_Limite_Credito();
3742  }
3743  }
3744 
3745 
3749  public class _ExtensionDocumentoLinea : IExtensionDocsDocumentoLinea , INotifyPropertyChanged
3750  {
3751  #region IMPLEMENTAR PROPERTY CHANGED
3752 
3756  public event PropertyChangedEventHandler PropertyChanged;
3757 
3762  protected void OnPropertyChanged(String name = "")
3763  {
3764  PropertyChangedEventHandler handler = PropertyChanged;
3765  if (handler != null)
3766  {
3767  handler(this, new PropertyChangedEventArgs(name));
3768  }
3769  }
3770 
3771  #endregion IMPLEMENTAR PROPERTY CHANGED
3772 
3773 
3774  //--------------------------------------------------------------------------//
3775 
3776 
3777  #region CONSTRUCTORS
3778 
3783  {
3784 
3785  }
3786 
3787  #endregion CONSTRUCTORS
3788 
3789 
3790  //--------------------------------------------------------------------------//
3791 
3792 
3793  #region EVENTS
3794 
3802  protected bool _SetValue<T>(ref T toPropietat, T value, string tcPropertyName)
3803  {
3804  bool lbHiHaError = false;
3805 
3806  // 1117013. Asignar siempre el valor para que se vean los cambios en el grid
3807  //if (EqualityComparer<T>.Default.Equals(toPropietat, value))
3808  //{
3809  // // No s'ha canviat res
3810  // return false;
3811  //}
3812 
3813  // Guardem el valor anterior
3814  T loOldValue = toPropietat;
3815 
3816  // Assignem el nou
3817  toPropietat = value;
3818 
3819  // Hem de buscar la definició de la columna
3820  DefPropiedad loDefProp = null;
3821  this._Parent._DefPropiedades.TryGetValue(tcPropertyName, out loDefProp);
3822 
3823  // Si l'hem trobat
3824  if (loDefProp != null)
3825  {
3826  // Comprovem si té error
3827  lbHiHaError = this._Parent.Columna_Validar_Valor(loDefProp, this, toPropietat);
3828  if (lbHiHaError)
3829  {
3830  // Restaurem el valor a la propietat.
3831  toPropietat = loOldValue;
3832  return false;
3833  }
3834  else
3835  {
3836  // Si la línia té grid enllaçat ...
3837  if (this._Parent._Mantegrid != null)
3838  {
3839  // i la propietat definició de columna
3840  if (loDefProp._ColumnaGrid != null)
3841  {
3842  // Posem directament el valor a la cel·la
3843  int lnIndexLinia = this._Parent._Lineas.IndexOf(this);
3844 
3845  if (lnIndexLinia > -1)
3846  {
3847  this._Parent._Mantegrid._Grid.Rows[lnIndexLinia].Cells[tcPropertyName].Value = toPropietat;
3848  }
3849  }
3850  }
3851  }
3852 
3853  // Si és un campo updatable, guardamos
3854  if (!this._Parent._bIsLoading && loDefProp._Updatable)
3855  {
3856  _Save();
3857  }
3858  }
3859 
3860  // Disparo el event PropertyChanged
3861  OnPropertyChanged(tcPropertyName);
3862 
3863  return true;
3864  }
3865 
3866  #endregion EVENTS
3867 
3868 
3869  //--------------------------------------------------------------------------//
3870 
3871 
3872  #region PROPIEDADES
3873 
3874  private dynamic _oCabeceraDocumento;
3878  public dynamic _CabeceraDocumento
3879  {
3880  get
3881  {
3882  return _oCabeceraDocumento;
3883  }
3884  set
3885  {
3886  _oCabeceraDocumento = value;
3887  }
3888  }
3889 
3894  public TipoExecute _eBeforeAfter { get; set; }
3895 
3896  //private docsven.Docsven.IDocVenta<docsven.Docsven.IDocVentaCab, docsven.Docsven.IDocVentaLin, docsven.Docsven.IDocVentaPie> _oDocumento;
3900  //public docsven.Docsven.IDocVenta<docsven.Docsven.IDocVentaCab, docsven.Docsven.IDocVentaLin, docsven.Docsven.IDocVentaPie> _Documento
3901  //{
3902  // get
3903  // {
3904  // return _oDocumento;
3905  // }
3906  // set
3907  // {
3908  // _oDocumento = value;
3909  // }
3910  //}
3911  private dynamic _oDocumento;
3915  public dynamic _Documento
3916  {
3917  get
3918  {
3919  return _oDocumento;
3920  }
3921  set
3922  {
3923  _oDocumento = value;
3924  }
3925  }
3926 
3927  private IDocumentLinea _oLineaDocumento;
3931  public IDocumentLinea _LineaDocumento
3932  {
3933  get
3934  {
3935  return _oLineaDocumento;
3936  }
3937  set
3938  {
3939  _oLineaDocumento = value;
3940  }
3941  }
3942 
3943 
3944  #endregion PROPIEDADES
3945 
3946 
3947  //--------------------------------------------------------------------------//
3948 
3949 
3950  #region CAMPOS
3951 
3955  public DataGridViewRow _DataGridViewRow;
3956 
3961 
3962  #endregion CAMPOS
3963 
3964 
3965  //--------------------------------------------------------------------------//
3966 
3967 
3968  #region METODES DE INTERFICIE
3969 
3970 
3976 
3977  public virtual bool _GestionarServidas(bool tbDelete)
3978  {
3979  return true;
3980  }
3981 
3982 
3983 
3989  public virtual void _InsertedLinea(int tnPosLlista)
3990  {
3991 
3992  }
3993 
3997  public virtual void _AddedLinea()
3998  {
3999 
4000  }
4001 
4005  public virtual void _Anular_Linea()
4006  {
4007 
4008  }
4009 
4013  public virtual void _Calcular_Comision()
4014  {
4015 
4016  }
4017 
4022  public virtual void _Clonar(IDocumentLinea toLinea)
4023  {
4024 
4025  }
4026 
4034  public virtual bool _Delete(bool tlCabecera = true, bool tlUltimo = false, bool tlForzar = false)
4035  {
4036  return true;
4037  }
4038 
4043  public virtual void _Error(IEWException toException)
4044  {
4045 
4046  }
4047 
4053  public virtual bool _Load(DataRow tdrLinea)
4054  {
4055  return true;
4056  }
4057 
4063  {
4064  return true;
4065  }
4066 
4070  public virtual void _Recalcular_Coste()
4071  {
4072 
4073  }
4074 
4080  public virtual void _Recalcular_Importe(bool tlRevisarPrecio = true, bool tbNoAplicarPuntVerd = false)
4081  {
4082 
4083  }
4084 
4089  public virtual void _Recalcular_Linea(bool tlModificarUnidades = false)
4090  {
4091 
4092  }
4093 
4098  public virtual void _Recalcular_Precio(bool tlModifUnid = false)
4099  {
4100 
4101  }
4102 
4103  // PE-100108
4108  public virtual bool _Save()
4109  {
4110  if (_eBeforeAfter == TipoExecute.Before)
4111  return true;
4112 
4113  // Si hay configuración,
4114  if (_Parent._dtResultadoConsulta != null)
4115  {
4116  //Por defecto asumimos que se van a actualizar los datos
4117  bool cambioEnDatos = true;
4118 
4119  if (_Parent._TipoUpdate == TiposUpdate.Update)
4120  {
4121  DataRow ldtExisteix = _Parent._GetDataRowLinia(_LineaDocumento);
4122  if (ldtExisteix != null)
4123  {
4124  // Actualitza
4125  _Actualizar_Registro_Tabla(ldtExisteix, out cambioEnDatos);
4126  }
4127  else
4128  {
4129  // Inserta
4130  _Guardar_Registro_Tabla();
4131  }
4132  }
4133  else
4134  {
4135  // Esborro el registre de la taula
4136  _Borrar_Registro_Tabla();
4137 
4138  // Volco el registre a la taula
4139  _Guardar_Registro_Tabla();
4140  }
4141 
4142  // Recarregar el registre actualitzat
4143  if (cambioEnDatos) //Si han cambiado los datos recargo.
4144  {
4145  _Parent._Load_Linies(_Parent._cEmpresa, _Parent._cNumero, _Parent._cClave3);
4146  }
4147  // string lcSql = _SqlConculta();
4148  // if (!string.IsNullOrWhiteSpace(lcSql))
4149  // {
4150  // // Esborro la línea al datatable intern
4151  // DataRow loRow = this._Parent._GetDataRowLinia(this._LineaDocumento);
4152  // if (loRow == null)
4153  // {
4154  // // Buscar els nous valors a la taula i insertar la fila al datatable
4155  // DataTable ldtResultadoConsulta = new DataTable();
4156  // DB.SQLExec(lcSql, ref ldtResultadoConsulta);
4157  // if (ldtResultadoConsulta.Rows.Count > 0)
4158  // {
4159  // this._Parent._dtResultadoConsulta.ImportRow(ldtResultadoConsulta.Rows[0]);
4160  // }
4161  // }
4162  // }
4163  }
4164 
4165  return true;
4166  }
4167 
4179  public virtual bool _Validar_Articulo(articulo.Articulo toArticulo, ref decimal tnUnidades, ref decimal tnPeso, ref decimal tnUniCaja, ref bool tlEsCodigoBarras, ref string tcAgrupacion, ref decimal tnUnidAgrup)
4180  {
4181  return true;
4182  }
4183 
4188  public virtual bool _Validar_Limite_Credito()
4189  {
4190  return true;
4191  }
4192 
4198  public virtual bool _Insertar_Articulos_Escandallo(DataTable componentes, ref System.Windows.Forms.DialogResult respuesta)
4199  {
4200  respuesta = DialogResult.None;
4201 
4202  return true;
4203  }
4204 
4211  public virtual bool _Insertar_Articulos_Oferta(DataTable componentes, ref System.Windows.Forms.DialogResult respuesta, bool tlModifUnid)
4212  {
4213  respuesta = DialogResult.None;
4214 
4215  return true;
4216  }
4217 
4223  public virtual void _ExisteLineaOrigen(ref bool permitircontinuar)
4224  {
4225 
4226  }
4227 
4232  public virtual bool _ActualizarDocumentoOrigen()
4233  {
4234  return true;
4235  }
4236 
4237 
4238 
4244  public bool _Cambio_Numero_Linea(int linidestino)
4245  {
4246  bool changed = false;
4247 
4248  // Si s'ha definit línia, fem el cavi
4249  if (!string.IsNullOrWhiteSpace(this._Parent._CampoLinea))
4250  {
4251  string propertyname = "";
4252 
4253  foreach (var item in this._Parent._DefPropiedades)
4254  {
4255  if (item.Value._CampoTabla == this._Parent._CampoLinea)
4256  {
4257  propertyname = item.Key;
4258  break;
4259  }
4260  }
4261 
4262  if (!string.IsNullOrWhiteSpace(propertyname))
4263  {
4264  _SetPropertyValue(propertyname, linidestino);
4265 
4266  changed = true;
4267  }
4268  }
4269 
4270  return changed;
4271  }
4272 
4273  #endregion METODES DE INTERFICIE
4274 
4275 
4276  //--------------------------------------------------------------------------//
4277 
4278 
4279  #region MÈTODES PÚBLICS
4280 
4286  public object _GetPropertyValue(string tcNomProp)
4287  {
4288  object loReturn = null;
4289 
4290  // Busquem el valor del camp a la propietat de la línia
4291  PropertyInfo[] loProps = this.GetType().GetProperties();
4292  foreach (PropertyInfo loProp in loProps)
4293  {
4294  if (loProp.Name == tcNomProp)
4295  {
4296  loReturn = loProp.GetValue(this, null);
4297  break;
4298  }
4299  }
4300 
4301  return loReturn;
4302  }
4303 
4310  public void _SetPropertyValue(string tcNomProp, object toValue)
4311  {
4312  // Busquem el valor del camp a la propietat de la línia
4313  PropertyInfo[] loProps = this.GetType().GetProperties();
4314  foreach (PropertyInfo loProp in loProps)
4315  {
4316  if (loProp.Name == tcNomProp)
4317  {
4318  // Comprobar que no tengamos un DBNULL (PE-97109)
4319  if (DBNull.Value.Equals(toValue))
4320  toValue = null;
4321 
4322  object loActualValue = loProp.GetValue(this, null);
4323  if (!object.Equals(loActualValue, toValue))
4324  loProp.SetValue(this, toValue, null);
4325  break;
4326  }
4327  }
4328  }
4329 
4330  #endregion MÈTODES PÚBLICS
4331 
4332 
4333  #region MÈTODES PRIVATS
4334 
4335  // PE-100108
4336  // Comprova si el registre existeix a la taula
4337  private bool _Existe_Registro_Tabla()
4338  {
4339  bool lbExiste = false;
4340 
4341  string lcSql = _SqlConculta("Count(" + this._Parent._CampoNumero + ") As NumRegs");
4342 
4343  DataTable ldtExisteRegistro = new DataTable();
4344  if (DB.SQLExec(lcSql, ref ldtExisteRegistro) && ldtExisteRegistro.Rows.Count > 0)
4345  {
4346  lbExiste = (Convert.ToInt32(ldtExisteRegistro.Rows[0]["NumRegs"]) > 0);
4347  }
4348 
4349  return lbExiste;
4350  }
4351 
4352  // PE-100108
4353  // Actualitza els registres (No Delete-Insert)
4354  private bool _Actualizar_Registro_Tabla(DataRow existeix, out bool cambioEnDatos)
4355  {
4356  // Preparo la consulta
4357  string lcUpdate = "Update " + DB.SQLDatabase(this._Parent._DataBase, this._Parent._Tabla) + " ";
4358  string lcSets = "";
4359  string lcWhere = " Where " + this._Parent._WhereLinea(this);
4360 
4361  string lcComa = "";
4362 
4363  //La actualización esta optimizada para que no haga nada si no hay cambios. Usaremos este valor para optimizar un Load posterior
4364  cambioEnDatos = false;
4365 
4366  // Afegim les propietats i valors
4367  foreach (KeyValuePair<string, DefPropiedad> loProp in this._Parent._DefPropiedades)
4368  {
4369  object loValue = _GetPropertyValue(loProp.Value._DataPropertyName);
4370 
4371  if (loProp.Value._Updatable && !string.IsNullOrWhiteSpace(loProp.Value._CampoTabla))
4372  {
4373  bool update = false; // ForceUpdate;
4374  if (!update)
4375  {
4376  // Comparamos los valores
4377  object fieldvalue = existeix[loProp.Value._CampoTabla];
4378 
4379  update = !object.Equals(loValue, fieldvalue);
4380 
4381  if (update)
4382  {
4383  // Comprobar los null
4384  if (loValue == null && fieldvalue == DBNull.Value)
4385  {
4386  update = false;
4387  }
4388 
4389  // Comprobar espacios string
4390  if (update && loValue is string && fieldvalue is string)
4391  {
4392  update = !object.Equals(loValue.ToString().Trim(), fieldvalue.ToString().Trim());
4393  }
4394  }
4395  }
4396 
4397  if (update)
4398  {
4399  lcSets += lcComa + loProp.Value._CampoTabla + " = " + DB.SQLString(loValue);
4400  lcComa = ", ";
4401 
4402  // Guardem el valor al row per a que ja no vegi més el canvi
4403  existeix[loProp.Value._CampoTabla] = loValue;
4404  }
4405  }
4406  }
4407 
4408  if (!string.IsNullOrWhiteSpace(lcSets))
4409  {
4410  //Marcamos que habrá cambios en los datos
4411  cambioEnDatos = true;
4412 
4413  // Montem la Sql final
4414  string lcSql = lcUpdate+ " Set " + lcSets + lcWhere;
4415 
4416  // i l'executem
4417  DB.SQLExec(lcSql);
4418  }
4419 
4420  return true;
4421  }
4422 
4423  // PE-100108
4429  protected internal virtual string _SqlConculta(string tcListaCampos = "*")
4430  {
4431  // Paràmetres
4432  string tcEmpresa = this._Parent._cEmpresa;
4433  string tcNumero = this._Parent._cNumero;
4434  string tCampoClave3 = this._Parent._cClave3;
4435 
4436  string lcSql = "";
4437 
4438  // Si hay configuración,
4439  if (!string.IsNullOrWhiteSpace(this._Parent._DataBase) && !string.IsNullOrWhiteSpace(this._Parent._Tabla) && !string.IsNullOrWhiteSpace(this._Parent._CampoEmpresa) && !string.IsNullOrWhiteSpace(this._Parent._CampoNumero))
4440  {
4441  lcSql = "Select " + tcListaCampos + " " +
4442  " From " + DB.SQLDatabase(this._Parent._DataBase, this._Parent._Tabla) +
4443  " Where " + this._Parent._CampoEmpresa + " = " + DB.SQLString(tcEmpresa) +
4444  " And " + this._Parent._CampoNumero + " = " + DB.SQLString(tcNumero);
4445 
4446  // Si s'ha definit 3ª clau, l'afegim al Where
4447  if (!string.IsNullOrWhiteSpace(this._Parent._CampoClave3))
4448  {
4449  lcSql += " And " + this._Parent._CampoClave3 + " = " + DB.SQLString(tCampoClave3);
4450  }
4451 
4452  // Si s'ha definit línia, l'afegim al Where
4453  if (!string.IsNullOrWhiteSpace(this._Parent._CampoLinea))
4454  {
4455  lcSql += " And " + this._Parent._CampoLinea + " = " + DB.SQLString(_LineaDocumento._LineaReal);
4456  }
4457 
4458  // Si s'ha definit condició, l'afegim al Where
4459  if (!string.IsNullOrWhiteSpace(this._Parent._Condicion))
4460  {
4461  lcSql += " And " + this._Parent._Condicion;
4462  }
4463  }
4464 
4465  return lcSql;
4466  }
4467 
4468  // PE-100108
4469  // Esborra el registre de la taula
4470  private bool _Borrar_Registro_Tabla()
4471  {
4472  // Preparo la consulta
4473  string lcDelete = "Delete From " + DB.SQLDatabase(this._Parent._DataBase, this._Parent._Tabla) +
4474  " Where " + this._Parent._WhereLinea(this);
4475 
4476  // Executo
4477  return DB.SQLExec(lcDelete); ;
4478  }
4479 
4480  // PE-100108
4485  protected internal bool _Guardar_Registro_Tabla()
4486  {
4487  // Controlar que la línea exista (PE-97109)
4488  if (this._LineaDocumento == null)
4489  return true;
4490 
4491  // Preparem el Insert
4492  string lcInsert = "Insert Into " + DB.SQLDatabase(this._Parent._DataBase, this._Parent._Tabla);
4493 
4494  // Preparem camps clau
4495  string lcFields = " (" + this._Parent._GetLineaKeysNames(this);
4496 
4497  // Preparem valors clau menys la línia
4498  string lcValues = " Values(" + this._Parent._GetLineaKeysValues(this);
4499 
4500  // Afegim el camp linia
4501  string lcFieldInsert = lcFields + ", " + this._Parent._CampoLinea;
4502  string lcValuesInsert = lcValues + ", " + DB.SQLString(this._LineaDocumento._LineaReal);
4503 
4504  // Afegim les propietats i valors
4505  foreach (KeyValuePair<string, DefPropiedad> loProp in this._Parent._DefPropiedades)
4506  {
4507  if (loProp.Value._Updatable && !string.IsNullOrWhiteSpace(loProp.Value._CampoTabla))
4508  {
4509  lcFieldInsert += ", " + loProp.Value._CampoTabla;
4510  lcValuesInsert += ", " + DB.SQLString(this._GetPropertyValue(loProp.Value._DataPropertyName));
4511  }
4512  }
4513 
4514  // Montem la Sql final
4515  string lcSql = lcInsert + lcFieldInsert + ") " + lcValuesInsert + ")";
4516 
4517  // i l'executem
4518  DB.SQLExec(lcSql);
4519 
4520  return true;
4521  }
4522 
4523  #endregion MÈTODES PRIVATS
4524  }
4525 
4526 
4527  // PE-103916
4532  {
4533  private _ExtensionMante _oExtensionMante;
4538  {
4539  get
4540  {
4541  return _oExtensionMante;
4542  }
4543  set
4544  {
4545  _oExtensionMante = value;
4546  }
4547  }
4548 
4549  // PE-103916
4550  private FormMante _oFormMante;
4554  public FormMante _FormMante
4555  {
4556  get
4557  {
4558  return _oFormMante;
4559  }
4560  set
4561  {
4562  _oFormMante = value;
4563  }
4564  }
4565 
4566  private IModulo _oAddon;
4567  private Control _oUserControl;
4568 
4574  public _ExtensionFormMante(FormMante toFormMante, IModulo toAddon)
4575  {
4576  _oFormMante = toFormMante;
4577  _oAddon = toAddon;
4578 
4579  _RelacionarClasesExtension();
4580  }
4581 
4586  {
4587 
4588  }
4589 
4590  private void _RelacionarClasesExtension()
4591  {
4592  ewMante loMante = null;
4593 
4594  // Hay que buscar en los addons del ewMante la referencia de la clase de negocio
4595  if (_oFormMante != null)
4596  {
4597  // Cogemos la referencia al mantenimiento
4598  loMante = _oFormMante._ewMante;
4599  }
4600 
4601  if (loMante != null)
4602  {
4603  // Cogemos la referencia a la extensión
4604  object loExtension = null;
4605  if (loMante._Addons.TryGetValue(_oAddon._Nombre, out loExtension))
4606  {
4607  _oExtensionMante = (_ExtensionMante)loExtension;
4608  }
4609  }
4610  }
4611 
4616  public void _AgregarTabAddon(Control toUserControl)
4617  {
4618  if (_oFormMante == null || toUserControl == null)
4619  return;
4620 
4621  _oUserControl = toUserControl;
4622 
4623  _oFormMante._AgregarTabAddon(toUserControl, _oAddon._Nombre, _oAddon._NombrePagina);
4624  }
4625 
4626  // PE-103916. Si no había ninguna pestaña, capturamos el shown para esconder la pestaña general.
4627  private void _oFormMante_Shown(object sender, EventArgs e)
4628  {
4629  string lcNomButton = "ewButtonPaginas" + (_oFormMante.ewtcPaginas.TabPages.Count - 1).ToString();
4630  ewradiobuttonTabMante ewButtonPaginasAddons = (ewradiobuttonTabMante)_oFormMante._FindControl(lcNomButton);
4631  if (ewButtonPaginasAddons != null)
4632  {
4633  ewradiobuttonTabMante ewButtonPaginas0 = (ewradiobuttonTabMante)_oFormMante._FindControl("ewButtonPaginas0");
4634  if (ewButtonPaginas0 != null)
4635  {
4636  ewtablelayoutpanel loewtablelayoutpanel = (ewtablelayoutpanel)_oFormMante._FindControl("ewtablelayoutpanelPaginas");
4637  if (loewtablelayoutpanel != null)
4638  {
4639  loewtablelayoutpanel.SetColumn(ewButtonPaginasAddons, 0);
4640  }
4641  ewButtonPaginas0.Visible = false;
4642  }
4643 
4644  ewButtonPaginasAddons.PerformClick();
4645  ewButtonPaginasAddons.Checked = true;
4646  }
4647  }
4648 
4649  }
4650 
4651 
4656  {
4657  private ExtensionDocumentoBase _oExtensionDocumentoBase;
4661  public ExtensionDocumentoBase _ExtensionDocumentoBase
4662  {
4663  get
4664  {
4665  return _oExtensionDocumentoBase;
4666  }
4667  set
4668  {
4669  _oExtensionDocumentoBase = value;
4670  }
4671  }
4672 
4673  // PE-103916
4674  private FormBaseDocumento _oFormBaseDocumento;
4678  public FormBaseDocumento _FormBaseDocumento
4679  {
4680  get
4681  {
4682  return _oFormBaseDocumento;
4683  }
4684  set
4685  {
4686  _oFormBaseDocumento = value;
4687  }
4688  }
4689 
4690  private IModulo _oAddon;
4691  private Control _oUserControl;
4692 
4698  public ExtensionFormBaseDocumento(FormBaseDocumento toFormBaseDocumento, IModulo toAddon)
4699  {
4700  _oFormBaseDocumento = toFormBaseDocumento;
4701  _oAddon = toAddon;
4702 
4703  _RelacionarClasesExtension();
4704  }
4705 
4710  {
4711 
4712  }
4713 
4714  private void _RelacionarClasesExtension()
4715  {
4716  ewMante loDocumento = null;
4717 
4718  // Hay que buscar en los addons del ewMante la referencia de la clase de negocio
4719  if (_oFormBaseDocumento != null)
4720  {
4721  // Cogemos la referencia al mantenimiento
4722  loDocumento = _oFormBaseDocumento._Documento;
4723  }
4724 
4725  if (loDocumento != null)
4726  {
4727  // Cogemos la referencia a la extensión
4728  object loExtension = null;
4729  if (loDocumento._Addons.TryGetValue(_oAddon._Nombre, out loExtension))
4730  {
4731  _oExtensionDocumentoBase = (ExtensionDocumentoBase)loExtension;
4732  }
4733  }
4734  }
4735 
4740  public void _AgregarUserControl(Control toUserControl)
4741  {
4742  if (_oFormBaseDocumento == null || toUserControl == null)
4743  return;
4744 
4745  _oUserControl = toUserControl;
4746 
4747  _oFormBaseDocumento.ewPanelContenido.Controls.Add(_oUserControl);
4748  _oUserControl.Left = _oFormBaseDocumento.ewPanelContenido.Width - _oUserControl.Width;
4749  }
4750  }
4751 
4752 
4757  {
4761  protected bool rowexist = false;
4762 
4763  private String _cError_Message;
4764 
4765  private TipoExecute _leBeforeAfter;
4770  public TipoExecute _eBeforeAfter
4771  {
4772  get
4773  {
4774  return _leBeforeAfter;
4775  }
4776  set
4777  {
4778  _leBeforeAfter = value;
4779  }
4780  }
4781 
4782  private string _cTabla = "";
4786  public string _Tabla
4787  {
4788  get
4789  {
4790  return _cTabla;
4791  }
4792  set
4793  {
4794  _cTabla = value;
4795  }
4796  }
4797 
4798  private string _privateClave;
4802  public string _Clave
4803  {
4804  get { return _privateClave; }
4805  set { _privateClave = value; }
4806  }
4807 
4808  private string _cDataBase = "";
4812  public string _DataBase
4813  {
4814  get
4815  {
4816  return _cDataBase;
4817  }
4818  set
4819  {
4820  _cDataBase = value;
4821  }
4822  }
4823 
4824  private IMante _oMante;
4828  public IMante _Mante
4829  {
4830  get
4831  {
4832  return _oMante;
4833  }
4834  set
4835  {
4836  _oMante = value;
4837  }
4838  }
4839 
4840  private FormBase _oFormMante;
4844  public FormBase _FormMante
4845  {
4846  get
4847  {
4848  return _oFormMante;
4849  }
4850  set
4851  {
4852  _oFormMante = value;
4853  }
4854  }
4855 
4860  public bool _Clonar()
4861  {
4862  return true;
4863  }
4864 
4869  public virtual bool _Delete()
4870  {
4871  return true;
4872  }
4873 
4878  public virtual void _Cancel()
4879  {
4880 
4881  }
4882 
4887  public virtual void _Error(IEWException toException)
4888  {
4889 
4890  }
4891 
4895  public String _Error_Message
4896  {
4897  get
4898  {
4899  return _cError_Message;
4900  }
4901  set
4902  {
4903  _cError_Message = value;
4904  }
4905  }
4906 
4907 
4911  public bool _IsNew
4912  {
4913  get
4914  {
4915  return _lIsNew;
4916  }
4917  set
4918  {
4919  _lIsNew = value;
4920  }
4921  }
4922  private bool _lIsNew = false;
4923 
4928  public virtual bool _Init()
4929  {
4930  return true;
4931  }
4932 
4936  public virtual bool _Load()
4937  {
4938  return true;
4939  }
4940 
4941 
4945  public virtual bool _Refresh()
4946  {
4947  return true;
4948  }
4949 
4954  public virtual bool _New(string tcCodigo = "")
4955  {
4956  return true;
4957  }
4958 
4963  public virtual bool _Save()
4964  {
4965  return true;
4966  }
4967 
4972  public virtual void _Bloquear_Controles(bool tlReadOnly)
4973  {
4974 
4975  }
4976 
4981  public virtual bool RowExist()
4982  {
4983  if (!rowexist && ((ewMante)_Mante)._Estado == ewMante._EstadosMantenimiento.EsperandoCodigo)
4984  {
4985  // Forzar el Load, para volver a cargar las propiedades
4986  this._Load();
4987  }
4988 
4989  return rowexist;
4990  }
4991 
4996  public virtual bool _Validar_Solo_Lectura()
4997  {
4998  return false;
4999  }
5000 
5007  public virtual bool _TraspasarSiguienteEjercicio(string tcEjerActual, string tcEjerSig, bool tbIsNew) => false;
5008 
5014  public virtual string GetWhereClause()
5015  {
5016  string wherecondition = "", and = "";
5017 
5018  //if (string.IsNullOrWhiteSpace(_Mante._Codigo))
5019  //{
5020  // return "";
5021  //}
5022 
5023  // Hay que mirar si el mantenimiento es multiclave
5024  object[] claves = _Mante._Codigo.Split('|');
5025  if (claves.Length > 0)
5026  {
5027  // Parseamos los campos
5028  string[] campos = this._Clave.Split(',');
5029 
5030  for (int i = 0; i < campos.Length; i++)
5031  {
5032  wherecondition += and + campos[i] + " = " + DB.SQLString(claves[i]);
5033  and = " And ";
5034 
5035  // Aprovechamos para asignar los valores de la clave a las propiedades
5036  PropertyInfo propInfo = this.GetType().GetProperty("_" + campos[i]);
5037  if (propInfo != null)
5038  {
5039  string datatype = propInfo.PropertyType.Name;
5040  object value;
5041 
5042  switch (datatype)
5043  {
5044  case "Char":
5045  value = Convert.ToChar(claves[i]);
5046  break;
5047  case "String":
5048  value = claves[i];
5049  break;
5050  case "Decimal":
5051  value = Convert.ToDecimal(claves[i]);
5052  break;
5053  case "Int":
5054  case "Int32":
5055  value = Convert.ToInt32(claves[i]);
5056  break;
5057  case "Int16":
5058  value = Convert.ToInt16(claves[i]);
5059  break;
5060  case "Int64":
5061  value = Convert.ToInt64(claves[i]);
5062  break;
5063  case "Single":
5064  value = Convert.ToSingle(claves[i]);
5065  break;
5066  case "Double":
5067  value = Convert.ToDouble(claves[i]);
5068  break;
5069  case "DateTime":
5070  value = Convert.ToDateTime(claves[i]);
5071  break;
5072  case "Boolean":
5073  value = Convert.ToBoolean(claves[i]);
5074  break;
5075  case "Byte":
5076  value = Convert.ToByte(claves[i]);
5077  break;
5078  case "SByte":
5079  value = Convert.ToSByte(claves[i]);
5080  break;
5081  default:
5082  value = claves[i];
5083  break;
5084  }
5085 
5086  propInfo.SetValue(this, value, null);
5087  }
5088  }
5089  }
5090 
5091  if (!string.IsNullOrWhiteSpace(wherecondition))
5092  wherecondition = " Where " + wherecondition;
5093 
5094  return wherecondition;
5095  }
5096 
5102  public virtual bool _Duplicar(IDuplicador duplicador)
5103  {
5104  return true;
5105  }
5106 
5112  public virtual bool _DuplicarEnGrupos(IDuplicador duplicador)
5113  {
5114  return true;
5115  }
5116 
5120  public Dictionary<string, object> _GetPropiedades()
5121  {
5122  List<string> lstPropExcluidas = new List<string> { };
5123 
5124  Dictionary<string, object> dicTemp = functions.FUNCTIONS._GetPropiedades(this, lstPropExcluidas, this._Mante);
5125 
5126  return dicTemp;
5127  }
5128 
5129  }
5130 
5131 
5136  {
5137  private dynamic document;
5141  public dynamic _Documento
5142  {
5143  get { return document; }
5144  set { document = value; }
5145  }
5146 
5153  public virtual bool _Abandonar_Documento(bool tbNoValidarDocumento = false, bool tlSalirDocumento = false)
5154  {
5155  return true;
5156  }
5157 
5161  public void _Show()
5162  {
5163 
5164  }
5165 
5169  public void _ShowDialog()
5170  {
5171 
5172  }
5173  }
5174 
5175 
5179  public class _ExtensionAsientos
5181  {
5182 
5183  private IAsientos _oAsiento;
5184  private TipoExecute _leBeforeAfter;
5185 
5190  public TipoExecute _eBeforeAfter
5191  {
5192  get
5193  {
5194  return _leBeforeAfter;
5195  }
5196  set
5197  {
5198  _leBeforeAfter = value;
5199  }
5200  }
5201 
5205  public IAsientos _Documento
5206  {
5207  get
5208  {
5209  return _oAsiento;
5210  }
5211  set
5212  {
5213  _oAsiento = value;
5214  _Documento_Asignado();
5215  }
5216  }
5217 
5222  public virtual bool _Delete()
5223  {
5224  return true;
5225  }
5226 
5231  public virtual bool _DescargarDatos()
5232  {
5233  return true;
5234  }
5235 
5240  public virtual bool _Load()
5241  {
5242  return true;
5243  }
5244 
5249  public virtual bool _New()
5250  {
5251  return true;
5252  }
5253 
5258  public virtual bool _Save()
5259  {
5260  return true;
5261  }
5262 
5267  public virtual bool _Validar_Solo_Lectura()
5268  {
5269  return false;
5270  }
5271 
5276  public virtual bool _Asiento_SoloLectura_Modificable()
5277  {
5278  return false;
5279  }
5280 
5284  public virtual void _Documento_Asignado()
5285  {
5286  ((Asientos)_oAsiento)._EventCamposLinChange += _EventCamposLinChange;
5287  }
5288 
5296  public virtual void _CamposLinChange(CamposAsientosLinea teCamposAsientos, IAsientosLinea toLinea, ewCampo toewCampo, out string tcErrorMessage)
5297  {
5298  tcErrorMessage = string.Empty;
5299  }
5300 
5301  private void _EventCamposLinChange(CamposAsientosLinea teCamposAsientos, IAsientosLinea toLinea, ewCampo toewCampo, out string tcErrorMessage)
5302  {
5303  // Llamamos al método virtualizado
5304  _CamposLinChange(teCamposAsientos, toLinea, toewCampo, out tcErrorMessage);
5305  }
5306  }
5307 
5308 
5314  {
5315  private TipoExecute _leBeforeAfter;
5316  private IAsientoCierreDeshacer _oDocumento;
5317 
5322  public TipoExecute _eBeforeAfter
5323  {
5324  get
5325  {
5326  return _leBeforeAfter;
5327  }
5328  set
5329  {
5330  _leBeforeAfter = value;
5331  }
5332  }
5333 
5337  public IAsientoCierreDeshacer _Documento
5338  {
5339  get
5340  {
5341  return _oDocumento;
5342  }
5343  set
5344  {
5345  _oDocumento = value;
5346  }
5347  }
5348 
5353  public virtual bool _Delete()
5354  {
5355  return true;
5356  }
5357 
5362  public virtual bool _Load()
5363  {
5364  return true;
5365  }
5366  }
5367 
5372  {
5373  #region Propiedades privadas
5374  private ICriterioCaja _oCriterioCaja;
5375  private TipoExecute _leBeforeAfter;
5376  #endregion Propiedades privadas
5377 
5378  #region CONSTRUCTOR
5379  public _ExtensionCriterioCaja()
5383  {
5384 
5385  }
5386  #endregion CONSTRUCTOR
5387 
5388  #region PROPIEDAS PÚBLICAS
5389  public TipoExecute _eBeforeAfter
5394  {
5395  get
5396  {
5397  return _leBeforeAfter;
5398  }
5399  set
5400  {
5401  _leBeforeAfter = value;
5402  }
5403  }
5404 
5408  public ICriterioCaja _Documento
5409  {
5410  get
5411  {
5412  return _oCriterioCaja;
5413  }
5414  set
5415  {
5416  _oCriterioCaja = value;
5417  }
5418  }
5419 
5425  public virtual void _Save(IPrevisionRECC toPrevisionRECC, bool tlParcial = false)
5426  {
5427  }
5428 
5433  public virtual void _Delete(IAsientosLinea toIAsientosLinea)
5434  {
5435  }
5436 
5442  public virtual void _Delete(IPrevisionRECC toPrevisionRECC, string tcAsiDelete = "")
5443  {
5444  }
5445 
5453  public virtual bool _SaveAbonosHistorico(IPrevisionRECC toPrevisionRECC, DataRow tdrIVACJ, ref DateTime? tdFechaFra)
5454  {
5455  return true;
5456  }
5457  #endregion PROPIEDAS PÚBLICAS
5458  }
5459 
5460 
5465  {
5466  #region PROPIEDADES PRIVADAS
5467 
5468 
5472  private PrevisionPago _oPrevisionPago;
5473 
5474 
5475  #endregion PROPIEDADES PRIVADAS
5476 
5477 
5478  #region CONSTRUCTOR
5479 
5480 
5485  {
5486 
5487  }
5488 
5489 
5490  #endregion CONSTRUCTOR
5491 
5492 
5493  #region PROPIEDAS PÚBLICAS
5494 
5495 
5499  public PrevisionPago _Documento
5500  {
5501  get
5502  {
5503  return _oPrevisionPago;
5504  }
5505  set
5506  {
5507  _oPrevisionPago = value;
5508  }
5509  }
5510 
5511 
5512  #endregion PROPIEDAS PÚBLICAS
5513 
5514 
5515  #region MÉTODOS PÚBLICOS
5516 
5517 
5524  public virtual List<PrevisionPago> _Dividir(List<int> tlisDias)
5525  {
5526  List<PrevisionPago> lstPrevisionPago = null;
5527 
5528  return lstPrevisionPago;
5529  }
5530 
5531 
5536  public virtual bool _Duplicar()
5537  {
5538  return true;
5539  }
5540 
5541 
5546  public virtual void _Desasentar()
5547  {
5548  return;
5549  }
5550 
5551 
5558  public virtual bool _Descontabilizar(bool tlForzarDesmarcarPrevision)
5559  {
5560  return true;
5561  }
5562 
5563 
5573  public virtual bool _Contabilizar(string tcBanco, DateTime tdFecha, decimal tnImporteEntrega, Asientos toAsiento)
5574  {
5575  return true;
5576  }
5577 
5578 
5590  public virtual bool _Contabilizar(string tcBanco, DateTime tdFecha, decimal tnImporteEntrega, decimal tnCambio, Asientos toAsiento, bool tlGroup)
5591  {
5592  return true;
5593  }
5594 
5595 
5605  public virtual bool _Contabilizar(string tcBanco, DateTime tdFecha, decimal tnImporteEntrega, string tcAsi)
5606  {
5607  return true;
5608  }
5609 
5610 
5615  public virtual void _Clonar(PrevisionPago toPrevision)
5616  {
5617  return;
5618  }
5619 
5620 
5642  public virtual void _New(string tcProveedor, string tcEmpresa, string tcFactura, int tnOrden, int tnPendiente, decimal tnImporte, DateTime tdEmision,
5643  DateTime tdVencim, string tcMoneda, int tnNum_Banco, string tcBanco, DateTime? tdFecha_Oper, string tcFpago, bool tlRecc,
5644  int tnPeriodo, decimal tnCambio, decimal tnImporteDiv, string lcConcepto)
5645  {
5646  return;
5647  }
5648 
5649 
5654  public virtual bool _Perdonar()
5655  {
5656  return true;
5657  }
5658 
5659 
5660  #endregion MÉTODOS PÚBLICOS
5661  }
5662 
5663 
5668  {
5669  #region PROPIEDADES PRIVADAS
5670 
5671 
5675  private PrevisionCobro _oPrevisionCobro;
5676 
5677 
5678 
5679  #endregion PROPIEDADES PRIVADAS
5680 
5681 
5682  #region CONSTRUCTOR
5683 
5684 
5689  {
5690 
5691  }
5692 
5693 
5694  #endregion CONSTRUCTOR
5695 
5696 
5697  #region PROPIEDAS PÚBLICAS
5698 
5699 
5703  public PrevisionCobro _Documento
5704  {
5705  get
5706  {
5707  return _oPrevisionCobro;
5708  }
5709  set
5710  {
5711  _oPrevisionCobro = value;
5712  }
5713  }
5714 
5715 
5716  #endregion PROPIEDAS PÚBLICAS
5717 
5718 
5719  #region MÉTODOS PÚBLICOS
5720 
5721 
5728  public virtual List<PrevisionCobro> _Dividir(DataTable tdtVencimientos)
5729  {
5730  List<PrevisionCobro> lstPrevCob = null;
5731 
5732  return lstPrevCob;
5733  }
5734 
5735 
5742  public virtual List<PrevisionCobro> _Dividir(List<int> tlisDias)
5743  {
5744  List<PrevisionCobro> lstPrevCob = null;
5745 
5746  return lstPrevCob;
5747  }
5748 
5749 
5754  public virtual bool _Desasentar()
5755  {
5756  return true;
5757  }
5758 
5759 
5765  public virtual bool _Descontabilizar(bool tlForzarDesmarcarPrevision)
5766  {
5767  return true;
5768  }
5769 
5770 
5779  public virtual bool _Contabilizar(Dictionary<string, decimal> tdicCobros, DateTime tdFecha, decimal tnCambio, Asientos toAsiento)
5780  {
5781  return true;
5782  }
5783 
5784 
5793  public virtual bool _Contabilizar(Dictionary<string, Tuple<decimal, List<Tuple<decimal, string, string>>>> tdicCobros, DateTime tdFecha, decimal tnCambio, Asientos toAsiento)
5794  {
5795  return true;
5796  }
5797 
5798 
5810  public virtual bool _Contabilizar(string tcBanco, DateTime tdFecha, decimal tnImporteEntrega, decimal tnCambio, Asientos toAsiento, bool tlGroup)
5811  {
5812  return true;
5813  }
5814 
5815 
5824  public virtual bool _Contabilizar(string tcBanco, DateTime tdFecha, decimal tnImporteEntrega, Asientos toAsiento)
5825  {
5826  return true;
5827  }
5828 
5829 
5839  public virtual bool _Contabilizar(string tcBanco, DateTime tdFecha, decimal tnImporteEntrega, string tcAsi)
5840  {
5841  return true;
5842  }
5843 
5844 
5856  public virtual void _Clonar(PrevisionCobro toPrevision, string tcEmpresa, int tnEjercicio, string tcFactura, int tnOrden, int tnImpagado, int tnPendiente)
5857  {
5858  return;
5859  }
5860 
5861 
5888  public virtual void _New(string tcCliente, string tcEmpresa, string tcFactura, int tnOrden, int tnImpagado, int tnPendiente, decimal tnImporte, DateTime tdEmision,
5889  DateTime tdVencim, string tcMoneda, int tnNum_Banco, DateTime? tdFecha_Oper, string tcVendedor, string tcFpago,
5890  string tcMandato, bool tlRecc, int tnPeriodo, string tcCobrador, decimal tnCambio, decimal tnImporteDiv,
5891  string tcImpreso, string tcImpago, string tcConcepto)
5892  {
5893  return;
5894  }
5895 
5896 
5901  public virtual bool _Permite_Delete_Prevision()
5902  {
5903  return true;
5904  }
5905 
5906 
5911  public virtual bool _Perdonar()
5912  {
5913  return true;
5914  }
5915 
5916 
5922  public virtual bool _Impagar(DateTime tdFechaAsientoImpago)
5923  {
5924  return true;
5925  }
5926 
5927 
5928  #endregion MÉTODOS PÚBLICOS
5929  }
5930 
5931 
5949  {
5950  #region PROPIEDADES PRIVADAS
5951 
5952 
5956  private MovCaja _oMovCaja;
5957 
5958 
5959 
5960  #endregion PROPIEDADES PRIVADAS
5961 
5962 
5963  #region CONSTRUCTOR
5964 
5965 
5970  {
5971 
5972  }
5973 
5974 
5975  #endregion CONSTRUCTOR
5976 
5977 
5978  #region PROPIEDAS PÚBLICAS
5979 
5980 
5984  public MovCaja _Documento
5985  {
5986  get
5987  {
5988  return _oMovCaja;
5989  }
5990  set
5991  {
5992  _oMovCaja = value;
5993  }
5994  }
5995 
5996 
5997  #endregion PROPIEDAS PÚBLICAS
5998 
5999 
6000  #region MÉTODOS PÚBLICOS
6001 
6002 
6006  public virtual void _Aparcar()
6007  {
6008  return;
6009  }
6010 
6011 
6015  public virtual void _Desaparcar()
6016  {
6017  return;
6018  }
6019 
6020 
6024  public virtual void _Print()
6025  {
6026  return;
6027  }
6028 
6029 
6035  public virtual bool _EsTarjeta(String tcCodigoFormaCobro = "")
6036  {
6037  return true;
6038  }
6039 
6040 
6046  public virtual bool _EsEfectivo(String tcCodigoFormaCobro)
6047  {
6048  return true;
6049  }
6050 
6051 
6057  public virtual bool _EsVale(String tcCodigoFormaCobro)
6058  {
6059  return true;
6060  }
6061 
6062 
6067  public virtual bool _Admite_Cobro_PayTef()
6068  {
6069  return true;
6070  }
6071 
6072 
6078  {
6079  return true;
6080  }
6081 
6082 
6087  public virtual void _CobrosAsignar(String tcCodigoFormaCobro, decimal tnImporte, bool tlCambio = true)
6088  {
6089  return;
6090  }
6091 
6092 
6096  public virtual void _CobrosReset()
6097  {
6098  return;
6099  }
6100 
6101 
6102  #endregion MÉTODOS PÚBLICOS
6103  }
6104 
6109  {
6110  #region PROPIEDADES PRIVADAS
6111 
6112 
6113  #endregion PROPIEDADES PRIVADAS
6114 
6115 
6116  #region CONSTRUCTOR
6117 
6118 
6123  {
6124 
6125  }
6126 
6127 
6128  #endregion CONSTRUCTOR
6129 
6130 
6131  #region PROPIEDAS PÚBLICAS
6132 
6133 
6137  public IArqueoTpv _Documento
6138  {
6139  get
6140  {
6141  return _oArqueoTpv;
6142  }
6143  set
6144  {
6145  _oArqueoTpv = value;
6146  }
6147  }
6148  private IArqueoTpv _oArqueoTpv;
6149 
6150 
6156  public TipoExecute _eBeforeAfter
6157  {
6158  get { return _leBeforeAfter; }
6159  set { _leBeforeAfter = value; }
6160  }
6161  private TipoExecute _leBeforeAfter;
6162 
6163 
6167  public string _Error_Message { get; set; } = "";
6168 
6169 
6170  #endregion PROPIEDAS PÚBLICAS
6171 
6172 
6173  #region MÉTODOS PÚBLICOS
6174 
6175 
6179  public virtual void _Arquear()
6180  {
6181  return;
6182  }
6183 
6184 
6188  public virtual bool _DesArquear()
6189  {
6190  return true;
6191  }
6192 
6193 
6197  public virtual bool _Load()
6198  {
6199  return true;
6200  }
6201 
6202 
6207  public virtual bool _Save()
6208  {
6209  return true;
6210  }
6211 
6212 
6216  public virtual void _DescargarDatos()
6217  {
6218  return;
6219  }
6220 
6221 
6226  public virtual DataTable _MontaArqueo()
6227  {
6228  return null;
6229  }
6230 
6231 
6236  public virtual void _Obtener_DataTable_Arqueo_Caja()
6237  {
6238  return;
6239  }
6240 
6241 
6248  public virtual void _Print(TiposDeArqueos teTipoDeArqueo, string tcFileXMLDatos, string tcCaption)
6249  {
6250  return;
6251  }
6252 
6253 
6257  public virtual void _Print_Consolida(string tcFileXMLDatos, string tcCaption, string tcCajaIni, string tcCajaFin, DateTime dFechaIni, DateTime dFechaFin, Boolean tlTodasCajas)
6258  {
6259  return;
6260  }
6261 
6262 
6263  #endregion MÉTODOS PÚBLICOS
6264  }
6265 
6270  {
6271  #region PROPIEDADES PRIVADAS
6272 
6273 
6274  #endregion PROPIEDADES PRIVADAS
6275 
6276 
6277  #region CONSTRUCTOR
6278 
6279 
6284  {
6285 
6286  }
6287 
6288 
6289  #endregion CONSTRUCTOR
6290 
6291 
6292  #region PROPIEDAS PÚBLICAS
6293 
6294 
6298  public Comunicados _Comunicado
6299  {
6300  get
6301  {
6302  return _oComunicado;
6303  }
6304  set
6305  {
6306  _oComunicado = value;
6307  }
6308  }
6309  private Comunicados _oComunicado;
6310 
6311 
6317  public new TipoExecute _eBeforeAfter
6318  {
6319  get { return _leBeforeAfter; }
6320  set { _leBeforeAfter = value; }
6321  }
6322  private TipoExecute _leBeforeAfter;
6323 
6324 
6325  #endregion PROPIEDAS PÚBLICAS
6326 
6327 
6328  #region MÉTODOS PÚBLICOS
6329 
6330 
6335  public virtual void _AdjuntarArchivosAdicionales(List<string> tlstArchivosAdjuntar)
6336  {
6337  return;
6338  }
6339 
6340 
6344  public virtual void _GenerarComunicado()
6345  {
6346  return;
6347  }
6348 
6349 
6358  public virtual void _EnviarEmailImprimir(SendMail toSendMail, string tcCuerpo, string tcCodigo, bool tlEmailEnviadoImpresoOk)
6359  {
6360  return;
6361  }
6362 
6363 
6364 
6371  public virtual Dictionary<string,string> _ObtenerDatosAdicXmlRespuesta()
6372  {
6373  return new Dictionary<string,string>();
6374  }
6375 
6376 
6377  #endregion MÉTODOS PÚBLICOS
6378  }
6379 }
ewgrid _Grid
Proporciona acceso al control DataGrid
Definition: Mantegrid.cs:458
sage.ew.botones.btBrowser _Browser
Browser para la columna del grid o campo enlazado
virtual void _Anular_Linea()
Método que se ejecuta cuando el usuario anula una línea
Dictionary< string, object > _GetPropiedades()
Diccionario con las propiedades de la extensión de la linea de documentos
virtual bool _Delete()
Método que se ejecutará cada vez que se ejecute el método _Delete() del asiento
PE-93426 Interficie para los módulos de la aplicación
Definition: IModulo.cs:22
virtual bool _SaveAbonosHistorico(IPrevisionRECC toPrevisionRECC, DataRow tdrIVACJ, ref DateTime? tdFechaFra)
Gestión de abonos al borrar un cobro o pago de RECC
Clase para el envío de emails
Definition: SendMail.cs:21
virtual void _Camps_Cab_Change_After(CampsDocCompraCab teCampo, ewCampo toewCampo)
Se dispara cuando se cambia el valor de cualquier propiedad de la cabecera del documento ...
Clase de negocio base para mantenimientos
Definition: clsEwBase.cs:1643
Clase que nos permite configurar una columna a nivel de grid
Definition: IDocModulos.cs:906
virtual bool _GestionarServidas(bool tbDelete)
Valida si se gestionarán la unidades servidas
virtual void _Print_Consolida(string tcFileXMLDatos, string tcCaption, string tcCajaIni, string tcCajaFin, DateTime dFechaIni, DateTime dFechaFin, Boolean tlTodasCajas)
Imprimir consolidación del arqueo
string _Error_Validar_Dato
Mensaje de error que se mostrará al insertar un dato no válido
Definition: IDocModulos.cs:951
bool _Clonar()
Cumplir interficie IExtensionDocumentoBase -> IExtensionMante
virtual bool _Validaciones_Previas_Documento()
Comprobaciones previas a realizar en un documento de ventaantes de pasar a realizar el traspaso a doc...
Clase para las previsiones de cobro
IDocumentLinea _LineaDocumento
Referencia a la linea del documento
Definition: IDocModulos.cs:582
Clase que permite extender la funcionalidad en los documentos de venta para PaM y nuevos módulos...
virtual bool _Abandonar_Documento(bool tbNoValidarDocumento=false, bool tlSalirDocumento=false)
Abandonar documento. Descarga líneas y limpia valores de propiedades...
bool _TraspasarSiguienteEjercicio(string tcEjerActual, string tcEjerSig, bool tbIsNew)
Traspasar al siguiente ejercicio
virtual bool _Delete()
Método que se ejecutará cada vez que se ejecute el método _Delete()
bool _CurrentCellValue()
Actualizamos la clase de negocio cuando seleccionamos un código desde el browser correspondiente ...
Nueva interficie madre de IMantes y de la que colgara ewMante. Propiedades: _Codigo, _Nombre, _Error_Message. Metodos: _New, Save, _Delete, _Load, _Existe_Registro, _Clonar
Definition: IMantes.cs:17
virtual bool _Save()
Método que se ejecuta cuando el usuario guarda un documento
Extensión para las líneas de documentos
virtual void _InsertedLinea(int tnPosLlista)
Método que se ejecuta una vez que se ha insertado una nueva línea
virtual bool _Cambiar_Posicion_Linea(IDocumentLinea lineadocumento, int indexliniadestino)
Cambiar la posición de la línea dentro de la colección de líneas
virtual bool _Load()
Carga el registro actual de la tabla asociada
Clase que permite extender la funcionalidad en los pedidos de venta para PaM y nuevos módulos...
virtual bool _Camps_Cab_Change_Before(CampsDocVentaCab teCampo, ewCampo toewCampo)
Se dispara cuando se cambia el valor de cualquier propiedad de la cabecera del documento ...
_ExtensionPrevisionCobro()
Inicializa una nueva instancia de la clase
virtual bool _Clonar(IDocCompra< IDocCompraCab, IDocCompraLin, IDocCompraPie > toDocumento, ref IDocCompra< IDocCompraCab, IDocCompraLin, IDocCompraPie > toDocumentoDuplicado)
Método que se ejecuta cuando el usuario clona un documento
PropertyChangedEventHandler PropertyChanged
Declare the event
virtual void _FacturarError()
Gestión del error de la facturación. Pasa por aquí cuando no puede facturar
virtual bool _Save()
Método que se ejecutará cada vez que se ejecute el método _Save() del asiento
Interficie para poder realizar extensiones sobre la clase de negocio PrevisionPago ...
virtual void _Print(TiposDeArqueos teTipoDeArqueo, string tcFileXMLDatos, string tcCaption)
Imprimir el arqueo.
bool _Cambio_Numero_Linea(int linidestino)
Cambiar la línea en el objeto
virtual void _Documento_Asignado()
Para capturar el momento en que se asigna el documento y poder definir los eventos del mismo...
Interficie que se debe implementar para aquellos módulos que deben programar modificaciones a nivel d...
Definition: IDocModulos.cs:863
virtual bool _Es_Valido(bool tlAbandonaDocumento=false)
Valida el documento.
virtual void _Obtener_DataTable_Arqueo_Caja()
Rellena la propiedad del objeto DatTable _dtArqueo_Caja que contiene el cuadre de caja...
Interficie que se debe implementar para la extensión de los documentos de stock
Definition: IDocModulos.cs:744
virtual void _Mantegrid_Vinculado()
Se dispara despues de vincular el mantegrid del documento
virtual bool _Load()
Método que se ejecutará cada vez que se ejecute el método _Load() del asiento
_ExtensionDocumento()
Inicializa una nueva instancia de la clase
DefColumna _ColumnaGrid
Definición de la columna del grid asociada a la propiedad
Definition: IDocModulos.cs:921
override bool _Validar_Limite_Credito()
Método que se ejecuta para validar si se debe presentar la pantalla del límite de crédito por línea ...
Interfinci para las extensiones de los documentos base
Definition: IDocModulos.cs:190
Definición de la interficie que han de cumplir aquellas clases que quieran proveer de información de ...
Definition: IDocPrint.cs:444
Clase que permite extender la funcionalidad en los asientos para PaM y nuevos módulos.
virtual void _Error(IEWException toException)
Método que se ejecuta cuando hay algun error a nivel de línea del documento
virtual void _New(string tcCliente, string tcEmpresa, string tcFactura, int tnOrden, int tnImpagado, int tnPendiente, decimal tnImporte, DateTime tdEmision, DateTime tdVencim, string tcMoneda, int tnNum_Banco, DateTime? tdFecha_Oper, string tcVendedor, string tcFpago, string tcMandato, bool tlRecc, int tnPeriodo, string tcCobrador, decimal tnCambio, decimal tnImporteDiv, string tcImpreso, string tcImpago, string tcConcepto)
Crea una nueva previsión de cobro a partir de los parámetros indicados y la carga en el objeto...
virtual void _ExisteLineaOrigen(ref bool permitircontinuar)
Extensión del método _ExisteLineaOrigen de docsven.
virtual bool _New(string tcCodigo="")
Nos permite crear un nuevo registro
virtual bool _Save()
Guarda el registro actual en la tabla asociada
Interfaz para la clase de arqueo de caja TPV
Definition: IArqueoTpv.cs:13
Clase documento de DEPOSITO DE COMPRA
Clase que permite extender la funcionalidad en los depósitos de venta para PaM y nuevos módulos...
Extensión para las líneas de facturas de venta
Extensión para las líneas de facturas de venta
virtual bool _Load()
Método que se ejecuta cuando el usuario carga en memoria un documento
Clase que permite extender la funcionalidad en los depòsitos de compra para PaM y nuevos módulos...
virtual void _GenerarComunicado()
Se ejecutará una vez antes de empezar la generación del comunicado y otra vez al acabar de generar el...
TiposUpdate
Formas de guardar los datos en la tabla
Definition: IDocModulos.cs:31
virtual bool _Insertar_Articulos_Oferta(DataTable componentes, ref System.Windows.Forms.DialogResult respuesta, bool tlModifUnid)
Extensión del método insertar componentes de artículos con artículos oferta
Interficie Asientos
Definition: IAsientos.cs:17
string _Validar_Dato_Tabla
Tabla donde se validará si el dato existe
Definition: IDocModulos.cs:931
Clase que permite extender la funcionalidad en los asientos para PaM y nuevos módulos.
virtual bool _Asiento_SoloLectura_Modificable()
Valida si el asiento de sólo lectura es modificable parcialmente
virtual bool _Duplicar(IDuplicador duplicador)
Duplica el registro del mantenimiento
int _Width
Tamaño de la columna
virtual bool _Contabilizar(string tcBanco, DateTime tdFecha, decimal tnImporteEntrega, Asientos toAsiento)
T111293
Clase que permite extender la funcionalidad en los documentos de compra para PaM y nuevos módulos...
override bool _Delete()
No hay que borrar las líneas al borrar la factura. Si se pueden borrar una a una
Formulario base de documentos de stock y de asientos contables
Extensión para las líneas de documentos de venta
string _Validar_Dato_BaseDatos
Base de datos donde se validará si el dato existe
Definition: IDocModulos.cs:926
IDocumentLinea _LineaDocumento
Referencia a la linea del documento
override string _SqlConculta(string tcEmpresa, string tcNumero, string tcProveedor="")
Metodo que genera la instrucción Sql para la consulta de datos
object _GetPropertyValue(string tcNomProp)
Devuelve el valor de una propiedad del objeto
virtual void _Desaparcar()
Desaparcar de MovCaja
void _ShowDialog()
Cumplir interficie IExtensionDocumentoBase
string _Validar_Dato_Columna_Asignar
Destino de los valores recuperados en la consulta de validación
Definition: IDocModulos.cs:946
Clase que permite extender la funcionalidad de previsiones de cobro en los addons.
Interficie que se debe implementar para aquellos módulos que deben programar modificaciones a nivel d...
Definition: IDocModulos.cs:236
virtual bool _Delete_Linea(IDocumentLinea toLineaDocumento)
Método que se ejecuta cuando el usuario borra una línea del documento.
virtual bool _Delete(bool tlCabecera=true, bool tlUltimo=false, bool tlForzar=false)
Método que se ejecuta cuanado se borra una línea del documento
virtual bool _Abandonar_Documento(bool tbNoValidarDocumento=false, bool tlSalirDocumento=false)
Abandonar documento. Descarga líneas y limpia valores de propiedades...
DataGridViewRow _DataGridViewRow
Referencia a DataGridViewRow asociado a la línea
void _ShowDialog()
Muestra el formulario asiociado en modo modal
_Event_Camps_Cab_Change_Before_Handler _Event_Camps_Cab_Change_Before
Handler del evento para la gestión de cambios en ewDocCompraCab
Definition: DocsVen.cs:3250
_TiposColumnaGrid _TipoColumna
Tipo de datos de la columna. Configura el editor incrustado en las celdas.
Dictionary< string, DefPropiedad > _DefPropiedades
Definición de las columnas que se añadirán al Mantegrid asociado
virtual bool _Contabilizar(Dictionary< string, decimal > tdicCobros, DateTime tdFecha, decimal tnCambio, Asientos toAsiento)
T111293 Contabiliza la previsión cargada en el objeto, se indica por parametro las lineas del asiento...
Clase documento de PRESUPUESTOS
Definition: DocsPresup.cs:39
delegate void _Event_Camps_Cab_Change_Before_Handler(CampsDocVentaCab teCampo, ewCampo toewCampo, ref bool tlOk)
Delegado del evento para la gestión de cambios en la cabecera
virtual bool _New()
Método que se ejecutará cada vez que se realice un nuevo asiento
ExtensionFormBaseDocumento()
Iniciarliza una nueva instancia de la clase
Interficie mínima de las líneas (Mantener lo mas reducida posible)
Definition: IDocument.cs:186
virtual bool _EsEfectivo(String tcCodigoFormaCobro)
EsEfectivo() de MovCaja
string _NombrePagina
Nombre para las páginas asociadas en los mantenimientos
Definition: IModulo.cs:151
Interficie para poder realizar extensiones sobre la clase de criterio de caja
virtual DataTable _MontaArqueo()
Metodo que monta un DataTable con los datos del Arqueo para mostrarlos en el Datagrid ...
string _CampoNumero
Nombre del campo que corresponde al Número
virtual bool _LineaToDocumento(IExtensionDocsDocumento toExtensionDestino, dynamic toLineaOrigen, dynamic toLineaDestino, bool tlVisualLayer=true)
Actualización de información al realizar el traspaso entre documentos
bool _ExpandirPunto
Introduce 0 en la posición del . hasta la longitud del campo
Definition: IDocModulos.cs:971
virtual bool _Tiquet_to_albaran(dynamic toDocumentoOrigen, dynamic toDocumentoDestino)
Convertir tiquet a albarán
virtual void _Recalcular_Coste()
Método que se ejecuta cuando se recalcula el coste de la línea
Clase que permite extender la funcionalidad en las facturas de compra para PaM y nuevos módulos...
virtual bool _Load(string tcEmpresa, string tcNumero, string tcClave3="")
Método que se ejecuta cuando el usuario carga en memoria un documento
Extensión para las líneas de pedidos de venta
TiposUpdate _TipoUpdate
Forma en la que se guardarán los registros
override string _SqlConculta(string tcEmpresa, string tcNumero, string tcLetra="")
Metodo que genera la instrucción Sql para la consulta de datos
objetos.ewtabcontrol ewtcPaginas
Control ewtcPaginas
Extensión para las líneas de documentos de compra
virtual bool _Contabilizar(string tcBanco, DateTime tdFecha, decimal tnImporteEntrega, Asientos toAsiento)
Contabiliza la previsión cargada en el objeto, si el importe cobrado es inferior al de la prevision d...
Interficie que se debe implementar para aquellos módulos que deben programar modificaciones a nivel d...
Definition: IDocModulos.cs:785
Classe documento Factura de venta
Definition: DocsVentaFra.cs:61
Interficie que se debe implementar para aquellos módulos que deben programar modificaciones a nivel d...
Definition: IDocModulos.cs:68
Clase utilizada para realizar asientos contables.
Definition: Asientos.cs:36
Clase documento de PROPUESTAS DE COMPRA
virtual bool _To_Documento(Dictionary< string, object > toParams, dynamic toDocumentoDestino, bool tbEsNou)
Método que se ejecuta cuando se traspasa el documento a otro documento
List< IExtensionDocsDocumentoLinea > _Lineas
Relación de líneas de la extensión _ExtensionDocVentaDocumento
string _DataPropertyName
Nombre del item de la colección de campos enlazado con la columna. Además sirve de identificador de l...
Definition: IDocModulos.cs:911
virtual void _Clonar(IDocumentLinea toLinea)
Método que se ejecuta cuando se clona una linea del documento
string _Condicion
Condición para añadir al where en la carga de registros
virtual bool _Facturar(List< string > tlisAlbaranes, string tcNumeroFra="", string tcSerieFra="", bool tlFechaOperacion=false, decimal? tnCambio=null)
Método que se ejecuta cuando al facturar un documento
Classe campo para las entidades, que permitirá comprobar si se ha cambiado su valor ...
Definition: clsEwBase.cs:676
_ExtensionDocCompraDocumentoFactura()
Inicializar para facturas de venta
virtual bool _Validar_Solo_Lectura()
Valida si el documento se puede editar
string _Header
Título de la columna
void _Show()
Muestra el formulario asiociado
_ExtensionMovCaja()
Inicializa una nueva instancia de la clase
override void _Documento_Asignado()
Para capturar el momento en que se asigna el documento y poder definir los eventos del mismo...
virtual void _Documento_Asignado()
Para capturar el momento en que se asigna el documento y poder definir los eventos del mismo...
virtual List< PrevisionCobro > _Dividir(List< int > tlisDias)
Divide el importe definido en la propiedad _Importe (o _ImporteDiv si la previsión está expresada en ...
virtual bool _Perdonar()
Perdonar la previsión, marcar como cobrada
virtual bool _New(string tcCodigo="")
Método que se ejecuta cuando el usuario crea un nuevo documento
bool _NoPararEnColumna
Determina si el cursor debe parar en esta columna
void _AgregarTabAddon(Control toUserControl, string pagename, string pagetext)
Agregar una página de un Addon en el tabcontrol de Addons.
Definition: FormMante.cs:1167
bool _LineaMover(int liniaant, int linidestino)
Cambiar el número de linea en la tabla
virtual void _Clonar(PrevisionCobro toPrevision, string tcEmpresa, int tnEjercicio, string tcFactura, int tnOrden, int tnImpagado, int tnPendiente)
Ajusta todos los campos internos de la previsión cargada a los valores del objeto PrevisionCobro reci...
Interficie para poder realizar extensiones sobre la clase de negocio PrevisionCobro ...
virtual void _EnviarEmailImprimir(SendMail toSendMail, string tcCuerpo, string tcCodigo, bool tlEmailEnviadoImpresoOk)
Se ejecutará para cada destinatario del comunicado, una vez antes del envío del email/impresón y otra...
virtual bool RowExist()
Método que nos comprueba si ya existen datos en la tabla relacionada por el addon ...
Extensión para las líneas de albaranes de compra
virtual IExtensionDocsDocumentoLinea _Get_Linea_Ext(IDocumentLinea toLiniaDoc)
Devuelve la linea de la extensión correspondiente a la línea del documento
_ExtensionComunicados()
Inicializa una nueva instancia de la clase
virtual bool _Validar_Solo_Lectura()
Valida si el documento se puede editar
virtual bool _Clonar(docsven.Docsven.IDocVenta< docsven.Docsven.IDocVentaCab, docsven.Docsven.IDocVentaLin, docsven.Docsven.IDocVentaPie > toDocumento, ref docsven.Docsven.IDocVenta< docsven.Docsven.IDocVentaCab, docsven.Docsven.IDocVentaLin, docsven.Docsven.IDocVentaPie > toDocumentoDuplicado)
Método que se ejecuta cuando el usuario clona un documento
Clase del objeto grid para Sage50
Definition: grid.cs:31
virtual bool _IsTraspasable()
Indica si el documento es traspasable. Por defecto los documentos no son traspasables ...
Clase que permite extender la funcionalidad en los albaranes de venta para PaM y nuevos módulos...
virtual bool _Abandonar_Documento(bool tbNoValidarDocumento=false, bool tlSalirDocumento=false)
Validaciones para abandonar el documento
virtual bool _Descontabilizar(bool tlForzarDesmarcarPrevision)
Anula el asiento del cobro y deja la previsión pendiente de cobrar, siempre que el asiento del cobro ...
Clase que permite extender la funcionalidad de la clase MovCaja
Clase que permite extender la funcionalidad de la clase Comunicados
Clase documento de PEDIDOS
Definition: DocsPed.cs:39
virtual void _Recalcular_Importe(bool tlRevisarPrecio=true, bool tbNoAplicarPuntVerd=false)
Método que se ejecuta cuando se recalcula el importe de la línea
_ExtensionDocumento _Parent
Referencia al objeto al que pertenece la línea
virtual bool _MarcaTraspasar(bool tlTraspaso)
Traspasar documento
Clase base para las extensiones de los mantenimientos
virtual bool _Perdonar()
Perdonar la previsión, marcar como pagada
virtual Dictionary< string, object > _Obtener_Filtros_SageReports(Dictionary< string, object > tdicParametros=null)
Devuelve las variables para Sage Reports
_Event_Camps_Lin_Ped_Change_Handler _Event_Camps_Lin_Ped_Change
_Event_Camps_Lin_Ped_Change_Handler
Definition: DocsPed.cs:2748
override bool _Load()
En el caso de las facturas hay que añadir la serie al número, en caso de trabajar con series de factu...
virtual void _Delete(IPrevisionRECC toPrevisionRECC, string tcAsiDelete="")
Realizamos el Delete del o los registros de IVACJREPER o IVACJSOPOR
virtual bool _Contabilizar(string tcBanco, DateTime tdFecha, decimal tnImporteEntrega, string tcAsi)
Contabiliza la previsión cargada en el objeto, si el importe cobrado es inferior al de la prevision d...
virtual bool _RestarNumero()
Metodo que se ejecuta antes de restar el número
virtual bool _DesArquear()
Desaparcar de MovCaja
virtual bool _Validar_Articulo(articulo.Articulo toArticulo, ref decimal tnUnidades, ref decimal tnPeso, ref decimal tnUniCaja, ref bool tlEsCodigoBarras, ref string tcAgrupacion, ref decimal tnUnidAgrup)
Método que se ejecuta para validar la inserción de un artículo
override bool _Load(string tcEmpresa, string tcNumero, string tcProveedor="")
Método que se ejecuta cuando el usuario carga en memoria un documento
virtual bool _Permite_Delete_Prevision()
Devuelve true si la previsión que está cargada en el objeto puede ser eliminada
Interficie que se debe implementar para aquellos módulos que deben programar modificaciones a nivel d...
Definition: IDocModulos.cs:510
objetos.ewpanel ewPanelContenido
Control ewPanelContenido
virtual bool _Facturar(bool tlRepeticion=false)
Facturar los albaranes de compra.
Classe base que gestiona els cobros de caixa
Definition: MovCaja.cs:25
virtual IExtensionDocsDocumentoLinea _InsertLinea(IDocumentLinea toLineaDocumento, int tnPosLlista)
Método que se ejecuta cuando se inserta un nueva línea en el documento
Extensión para las líneas de pedido de compra
_ExtensionDocumentoLinea _SearchLinea(_ExtensionDocumento toExtensionDocumento, dynamic toLinea)
Buscamos la línea que estamos traspasando en la extensión correspondiente
virtual bool _Contabilizar(string tcBanco, DateTime tdFecha, decimal tnImporteEntrega, string tcAsi)
Contabiliza la previsión cargada en el objeto, si el importe cobrado es inferior al de la prevision d...
virtual void _Clonar(PrevisionPago toPrevision)
Ajusta todos los campos internos de la previsión cargada a los valores del objeto PrevisionPago recib...
void _AgregarUserControl(Control toUserControl)
Agregar el usercontrol de la extensión
DataTable _dtResultadoConsulta
DataTable que contiene el resultado de la última consulta del _Load()
Extensión para las líneas de depósitos de Compra
virtual IExtensionDocsDocumentoLinea _AddLinea(IDocumentLinea toLineaDocumento)
Método que se ejecuta cuando se añade un nuevo artículo en el documento
Interficie que se debe implementar para aquellos módulos que deben programar modificaciones a nivel d...
Definition: IDocModulos.cs:689
Interface IEWException
Definition: IEWException.cs:9
Clase para las previsiones de pago de proveedores
virtual void _CobrosAsignar(String tcCodigoFormaCobro, decimal tnImporte, bool tlCambio=true)
CobrosAsignar de MovCaja
Interficie que se debe implementar para aquellos módulos que deben programar modificaciones a nivel d...
Definition: IDocModulos.cs:252
Clase que permite extender la funcionalidad de previsiones de pago en los addons. ...
virtual bool _ActualizarDocumentoOrigen()
Indica si puede actualizar los doumentos de origen al actualizar las unidades.
virtual void _Aparcar()
Aparcar() de MovCaja
Extensión para deshacer el cierre
delegate void _Event_Camps_Lin_Change_Handler(CampsDocVentaLin teCampo, dynamic toLinia, ewCampo toewCampo)
Delegado del evento para la gestión de cambios en las líneas
ewMascara _Mascara
Mascara que se aplicará a la columna
virtual bool _Delete()
Método que se ejecuta cuando el usuario borra un documento
virtual void _Save(IPrevisionRECC toPrevisionRECC, bool tlParcial=false)
Realizamos el Save del o los registros de IVACJREPER o IVACJSOPOR
override bool _New(string tcEmpresa, string tcNumero="", string tcLetra="")
Método que se ejecuta cuando el usuario crea un nuevo documento
virtual void _Camps_Cab_Change_After(CampsDocVentaCab teCampo, ewCampo toewCampo)
Se dispara cuando se cambia el valor de cualquier propiedad de la cabecera del documento ...
CamposAsientosLinea
Campos Asientos Linea GET/SET
Clase para las extensiones de documentos de stock
Interficie para gestionar el control de cambios en las classes
virtual bool _Delete_Validate()
Método que se ejecuta antes del llamar a _Delete()
Dictionary< string, object > _GetPropiedades()
Diccionario con las propiedades de la extensión de documentos
virtual bool _LineaMover(IDocumentLinea lineadocumento, int liniaant, int linidestino)
Cambiar el número de linea en la tabla
virtual string _SqlConculta(string tcEmpresa, string tcNumero, string tCampoClave3="")
Metodo que genera la instrucción Sql para la consulta de datos
bool _ReadOnly
Determina si esta columna es de solo lectura para el usuario
CampsDocVentaLin
Enumera todos los nombres de propiedades (SET) de la LINEA
Definition: DocsVen.cs:214
string _Error_Duplicados
Mensaje de error que se mostrará al insertar un dato no válido
Definition: IDocModulos.cs:956
override bool _LineaMover(IDocumentLinea lineadocumento, int liniaant, int linidestino)
Cambiar el número de linea en la tabla
virtual bool _Load(Dictionary< string, object > toDicKey)
Método que se ejecuta cuando el usuario carga en memoria un documento
virtual bool _EsTarjeta(String tcCodigoFormaCobro="")
EsTarjeta() de MovCaja
virtual bool _Print()
Método que se ejecuta cuando el usuario ha imprimido un documento
_ExtensionFormMante(FormMante toFormMante, IModulo toAddon)
Iniciarliza una nueva instancia de la clase
virtual bool _Delete()
Elimina el registro actual
bool _Init()
Cumplir interficie IExtensionDocumentoBase -> IExtensionMante
void _Show()
Cumplir interficie IExtensionDocumentoBase
virtual bool _Validar_Solo_Lectura()
Indica si el mantenimiento esta de solo lestura
Interficie document de compra
string _Validar_Dato_Campos
Campos que se recuperarán en la consulta de validación
Definition: IDocModulos.cs:941
DefPropiedad _AddPropiedad(string tcDataPropertyName, string tcCampoTabla="")
Añade una nueva definición de propiedad a la clase
virtual bool _MarcaCancelar(bool tlCancelar)
Cancelar documento
CampsDocVentaCab
Enumera todos los nombres de propiedades (SET) de la CABECERA
Definition: DocsVen.cs:79
virtual bool _New(string tcEmpresa, string tcNumero="", string tcClave3="")
Método que se ejecuta cuando el usuario crea un nuevo documento
virtual void _Camps_Lin_Change(CampsDocCompraLin teCampo, dynamic toLinia, ewCampo toewCampo)
Se dispara cuando se cambia el valor de cualquier propiedad de la línea del documento ...
virtual void _Recalcular_Linea(bool tlModificarUnidades=false)
Método que se ejecuta cuando se recalcula el coste, la comisión y el stock de la lína ...
Extensión para las líneas de propuestas de compra
override void _Documento_Asignado()
Para capturar el momento en que se asigna el documento y poder definir los eventos del mismo...
CampsDocCompraLin
Enumera todos los nombres de propiedades (SET) de la LINEA
Definition: DocsCompra.cs:182
virtual void _Error(IEWException toException)
Método que se ejecuta cuando hay algun error a nivel de mantenimiento
virtual bool _SerieCliente(ref string tcSerieCliente)
Serie asignada al cliente para documentos defecto
virtual void _Error(IEWException toException)
Método que se ejecuta cuando hay algun error a nivel de documento
Clase que permite extender la funcionalidad de la clase ArqueoTpv
bool _Validar_Asignar_Cargando
Indica si se buscará el dato en la tabla correspondiente mientras se ejecuta el _Load() ...
Definition: IDocModulos.cs:961
void _AgregarTabAddon(Control toUserControl)
Agregar la pestaña del módulo
_ExtensionFormMante()
Iniciarliza una nueva instancia de la clase
bool _Refresh()
Cumplir interficie IExtensionDocumentoBase -> IExtensionMante
Clase que permite extender la funcionalidad en los presupuestos de venta para PaM y nuevos módulos...
PE-83541 : Clase sage.ew.objetos.ewtablelayoutpanel
sage.ew.botones.btMante _Mante
Mantenimiento para la columna del grid o campo enlazado
virtual void _Desasentar()
Desasentar las previsiones de pago, y gestionar el criterio de caja
Extensión para las líneas de albaranes de venta
Formulario base de Eurowin
Definition: clsFormul.cs:400
Clase base para las extensiones de documentos base
bool _PermiteDuplicados
Indica si se permiten valores duplicados comparando el campo con todos los registros cargados ...
Definition: IDocModulos.cs:966
virtual void _Bloquear_Controles(bool tlReadOnly)
Bloquear controles de las extensiones de los mantes
virtual bool _Init()
Método que se ejecuta cuando se instancia la clase
TipoExecute
Tipos de ejecución de los métodos
Definition: IDocModulos.cs:16
virtual void _FacturarError()
Gestión del error de la facturación. Pasa por aquí cuando no puede facturar
virtual void _Refresh()
Método para forzar un load de la extensión (PE-101355)
TiposDeArqueos
Tipos de arqueo
Definition: ArqueoTpv.cs:6030
Clase que permite extender la funcionalidad en las propuestas de compra para PaM y nuevos módulos...
dynamic _Documento
Referencia al documento
virtual bool _Descontabilizar(bool tlForzarDesmarcarPrevision)
Anula el asiento del pago y deja la previsión pendiente de pagar, siempre que el asiento del pago no ...
void _Cancel()
Cumplir interficie IExtensionDocumentoBase -> IExtensionMante
virtual bool _CodigoCambiado(CampsDocVentaCab teCampo, ewCampo teValor)
Cuando se modifica un valor de la cabezera
_Event_Camps_Lin_Change_Handler _Event_Camps_Lin_Change
Handler del evento para la gestión de cambios en ewDocVentaLin
Definition: DocsVen.cs:3258
virtual void _AdjuntarArchivosAdicionales(List< string > tlstArchivosAdjuntar)
Adjuntar archivos adicionales comunes a todos los destinatarios.
virtual void _Printed()
Se ejecuta cuando se ha imprimido el documento
virtual bool _ActualizarMarcaDocumentoTraspasado()
Indica si debe actualizar la marca de documento traspasado al modificar las unidades ...
_EstadosMantenimiento
Declaro un enum para los estados del mantenimiento.
Definition: clsEwBase.cs:1671
override bool _New(string tcEmpresa, string tcNumero="", string tcProveedor="")
Método que se ejecuta cuando el usuario crea un nuevo documento
string _CampoEmpresa
Nombre del campo que corresponde a la Empresa
_Event_Camps_Cab_Change_After_Handler _Event_Camps_Cab_Change_After
Handler del evento para la gestión de cambios en ewDocCompraCab
Definition: DocsVen.cs:3254
override bool _Load()
Método que se ejecuta cuando el usuario carga en memoria un documento sin parametros utilizando las p...
int _MaxInputLength
Número máximo de carácteres que se pueden escribir en columnas de text
virtual void _UnPrinted()
Se ejecuta cuando se ha desmarca el documento
_TiposColumnaGrid
Tipos de columnas para los grids enlazados
Definition: IDocModulos.cs:879
override bool _Delete()
No hay que borrar las líneas al borrar la factura. Si se pueden borrar una a una
virtual bool _Load()
Print() de MovCaja
void _SetPropertyValue(string tcNomProp, object toValue)
Asigna el valor a una propiedad del objeto
virtual void _Totales_Especiales_Documento(IDocumentLinea tolinea)
No hi posem codi ja que es recodificara a cada classe filla amb els camps que interessa sumar...
CampsDocCompraCab
Enumera todos los nombres de propiedades (SET) de la CABECERA
Definition: DocsCompra.cs:103
Clase documento de ALBARANES DE COMPRA
void _Bloquear_Controles(bool tlReadOnly)
Cumplir interficie IExtensionDocumentoBase -> IExtensionMante
Clase documento de PEDIDOS DE COMPRA
Interfaz para realizar cobros y pagos de RECC
bool _Visible
Indica si la columna será o no visible
virtual void _CamposLinChange(CamposAsientosLinea teCamposAsientos, IAsientosLinea toLinea, ewCampo toewCampo, out string tcErrorMessage)
Se dispara cuando se cambia el valor de alguna propiedad de asientos
virtual bool _Delete()
Método que se ejecuta cuando el usuario borra un documento
virtual List< String > _Buscar_Por_Referencia(String tcLetraReferencia, String tcNumeroReferencia, List< String > toDocumentos)
Buscar documentos a partir de una referencia de cliente
string _CampoLinea
Nombre del campo que corresponde a la Línea
_ExtensionDocVentaDocumentoFactura()
Inicializar para facturas de venta
virtual bool _CodigoCambiado(CampsDocCompraCab teCampo, ewCampo teValor)
Cuando se modifica un valor de la cabezera
void OnPropertyChanged(String name="")
Create the OnPropertyChanged method to raise the event
Interfaz para la clase de criterio de caja
Interficie que se debe implementar para aquellos módulos que deben programar modificaciones a nivel d...
Definition: IDocModulos.cs:735
Clase que permite extender la funcionalidad de recc en los Addons
virtual void _Print()
Print() de MovCaja
_ExtensionDocumentoLinea _SearchLastLinea(_ExtensionDocumento toExtensionDocumento)
Buscamos la última línea que estamos traspasando en la extensión correspondiente
virtual bool _Validar_Limite_Credito()
Método que se ejecuta para validar si se debe presentar la pantalla del límite de crédito por línea ...
virtual bool _ValidacionModificacionUnidades(bool tlOrigenUnidades, decimal tnUnidadesOld, DataTable toResultados, IDocumentLinea toLineaDocumento)
Validación de la modificación de unidades con documento asociado
_ExtensionPrevisionPago()
Inicializa una nueva instancia de la clase
string _DataBase
Base de datos del módulo
object _GetPropertyValue(string tcNomProp)
Devuelve el valor de una propiedad del objeto
DefPropiedad _AddPropiedad(string tcDataPropertyName, string tcCampoTabla="", bool tlTraspasable=false)
Añade una nueva definición de propiedad a la clase
Clase que permite extender la funcionalidad en las facturas de venta para PaM y nuevos módulos...
virtual bool _Save()
Método que se ejecuta cuando se ha guardado la línea del documento
virtual bool _EsVale(String tcCodigoFormaCobro)
EsVale() de MovCaja
virtual void _Duplicar(dynamic toDestino)
Duplicar documento
Clase de negocio para el mantenimiento de comunicados.
Definition: Comunicados.cs:24
Control _FindControl(string tcControlName)
PE-96322. Devuelve el primer control que coincide por nombre
Definition: clsFormul.cs:850
virtual void _DescargarDatos()
Descargar datos
virtual void _Cancel()
Cancelar la edición del registro actual
Interficie que se debe implementar para aquellos módulos que deben programar modificaciones a nivel d...
Definition: IDocModulos.cs:220
virtual bool _SerieClienteRectificativa(ref string tcSerieCliente)
Serie asignada al cliente para rectificativas
virtual void _New(string tcProveedor, string tcEmpresa, string tcFactura, int tnOrden, int tnPendiente, decimal tnImporte, DateTime tdEmision, DateTime tdVencim, string tcMoneda, int tnNum_Banco, string tcBanco, DateTime? tdFecha_Oper, string tcFpago, bool tlRecc, int tnPeriodo, decimal tnCambio, decimal tnImporteDiv, string lcConcepto)
Crea una nueva previsión de pago a partir de los parámetros indicados y la carga en el objeto...
override bool _Load(string tcEmpresa, string tcNumero, string tcLetra="")
Método que se ejecuta cuando el usuario carga en memoria un documento
TipoExecute _eBeforeAfter
Nos determina en que momento se ejecuta el método. El método se puede ejecutar antes del código de la...
virtual IExtensionDocsDocumentoLinea _AddLinea(IDocumentLinea toLineaDocumento)
Método que se ejecuta cuando se añade un nuevo artículo en el documento
Clase que permite extender la funcionalidad en los documentos para PaM y nuevos módulos.
Dictionary< string, object > _GetPropiedades()
Diccionario con las propiedades de la extensión de la linea de documentos
virtual bool _Validar_Ticket0()
Valida si es un Ticket con importe 0
Clase que permite extender la funcionalidad en los pedidos de compra para PaM y nuevos módulos...
virtual bool _New(Dictionary< string, object > toDicKey)
Método que se ejecuta cuando el usuario crea un nuevo documento
virtual bool _DescargarDatos()
Método que se ejecutará cada vez que se ejecute el método _DescargarDatos() del asiento ...
Interficie de las clases para duplicar mantenimientos
Definition: IMantes.cs:419
interficie asiento linia
Extensión para las líneas de presupuestos de venta
string _FormatString
Máscara para columnas de tipo TextoFormateado
virtual bool _Duplicar()
Duplica la previsión actual por otra identica, cambiando sólo el número de recibo.
override string _SqlConculta(string tcEmpresa, string tcNumero, string tCampoClave3="")
Metodo que genera la instrucción Sql para la consulta de datos
virtual ewMante _ewMante
Clase mantenimiento asociada al formulario
Definition: FormMante.cs:323
Base para los mantenimientos de Sage TPV
Definition: FormMante.cs:26
virtual bool _FacturaElectronica(ref XmlDocument oXml)
Este método se ejecutará cuando se genere factura electrónica, cuando se haya obtenido la estructura ...
Interficie para extensiones de la clase Comunicados
Definition: IComunicado.cs:410
virtual bool _DuplicarEnGrupos(IDuplicador duplicador)
Duplica el registro del mantenimiento
virtual bool _Impagar(DateTime tdFechaAsientoImpago)
Nos realiza el impago de la previsión generando previsión nueva pendiente de cobro. El objeto se queda cargado con la nueva previsión generada (la que queda pendiente)
virtual bool _Save()
EsTarjeta() de MovCaja
Interficie para poder realizar extensiones sobre la clase de negocio MovCaja
virtual List< PrevisionPago > _Dividir(List< int > tlisDias)
Divide el importe definido en la propiedad _Importe entre los dias especificados en la lista de dias ...
void _Error(IEWException toException)
Cumplir interficie IExtensionDocumentoBase -> IExtensionMante
virtual void _Arquear()
Aparcar() de MovCaja
virtual void _AddedLinea()
Método que se ejecuta cuando se ha añadido una nueva línea
int _LineaReal
Devuelve el campo linia: para todos los documentos sera el mismo valor que la linea pero en el docume...
Definition: IDocument.cs:207
virtual bool _Load()
Método que se ejecuta cuando el usuario carga en memoria un documento
virtual bool _Contabilizar(string tcBanco, DateTime tdFecha, decimal tnImporteEntrega, decimal tnCambio, Asientos toAsiento, bool tlGroup)
Contabiliza la previsión cargada en el objeto, si el importe cobrado es inferior al de la prevision d...
virtual void _Totalizar()
calcula el total de unidades, importe i importeiva del document. També crida al metode _Totales_Espec...
ExtensionFormBaseDocumento(FormBaseDocumento toFormBaseDocumento, IModulo toAddon)
Iniciarliza una nueva instancia de la clase
Interficie para la definicion para deshacer asientos de cierre
virtual bool _Load()
Método que se ejecutará cada vez que se ejecute el método _Load()
virtual bool _Delete_Linea(IDocumentLinea toLineaDocumento)
Método que se ejecuta cuando el usuario borra una línea del documento.
override string _SqlConculta(string tcEmpresa, string tcNumero, string tCampoClave3="")
Metodo que genera la instrucción Sql para la consulta de datos
virtual bool _Contabilizar(Dictionary< string, Tuple< decimal, List< Tuple< decimal, string, string >>>> tdicCobros, DateTime tdFecha, decimal tnCambio, Asientos toAsiento)
Sobrecarga para poder pasar en las lineas del cobro, el conjunto de comisiones a añadir al asiento de...
virtual Dictionary< string, string > _ObtenerDatosAdicXmlRespuesta()
Obtener información adicional por parte de cada addon para almacenar en el fichero de respuesta XML q...
virtual void _Calcular_Comision()
Método que se ejecuta cuando se calcula la comisión del vendedor de la línea
virtual List< PrevisionCobro > _Dividir(DataTable tdtVencimientos)
Divide la previsión actual según los vencimientos e importes indicados en el DataTable pasado por par...
virtual bool _Insertar_Articulos_Escandallo(DataTable componentes, ref System.Windows.Forms.DialogResult respuesta)
Extensión del método insertar componentes de artículos con escandallo
_ExtensionArqueoTpv()
Inicializa una nueva instancia de la clase
virtual bool _Refresh()
Refresca el registro actual de la tabla asociada
virtual void _Delete(IAsientosLinea toIAsientosLinea)
Al borrar un asiento de traspaso de saldo RECC (tipo_mov 8 o 9) eliminamos el registro correspondient...
virtual bool _Desasentar()
Desasentar las previsiones de cobro, y gestionar el criterio de Caja
int _PosicionColumna
Posición de la columna, en caso que haya un -1 significará que se establecerá al final de todo ...
string _Validar_Dato_Clave
Clave por la cual se buscará el valor a la tabla de validación
Definition: IDocModulos.cs:936
void _SetPropertyValue(string tcNomProp, object toValue)
Asigna el valor a una propiedad del objeto
virtual void _Camps_Lin_Change(docsven.CampsDocVentaLin teCampo, dynamic toLinia, ewCampo toewCampo)
Se dispara cuando se cambia el valor de cualquier propiedad de la línea del documento ...
dynamic _Documento
Referencia al documento
virtual bool _Albaran_to_Tiquet(dynamic toDocumentoOrigen, dynamic toDocumentoDestino)
Convertir albarán a tiquet
Dictionary< string, object > _Addons
Diccionario donde cargaremos los addons disponibles
Definition: clsEwBase.cs:1761
virtual bool _Validar_Solo_Lectura()
Valida si el documento se puede editar
virtual bool _Contabilizar(string tcBanco, DateTime tdFecha, decimal tnImporteEntrega, decimal tnCambio, Asientos toAsiento, bool tlGroup)
Contabiliza la previsión cargada en el objeto, si el importe cobrado es inferior al de la prevision d...
virtual string GetWhereClause()
Proporciona la clausula where para las consultas a partir del contenido actual de _Codigo...
virtual bool _Camps_Cab_Change_Before(CampsDocCompraCab teCampo, ewCampo toewCampo)
Se dispara cuando se cambia el valor de cualquier propiedad de la cabecera del documento ...
bool _bIsLoading
Indica si el documento está en proceso de carga de datos.
Clase que permite extender la funcionalidad en los albaranes de compra para PaM y nuevos módulos...
virtual void _Recalcular_Precio(bool tlModifUnid=false)
Método que se ejecuta cuando se recalcula el precio de la línea
virtual bool _Admite_Cobro_PayTef()
Admite_Cobro_Paytef() de MovCaja
Extensión para las líneas de depósitos de venta
Definition: