ComprobacionNIF.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Data;
6 using sage.ew.db;
7 using sage.ew.global;
8 using sage.ew.listados.Clases;
10 using System.Windows.Forms;
11 
12 namespace sage.ew.listados.Listados
13 {
18  {
22  private Int32 _nEjercicioActual = Convert.ToInt32(EW_GLOBAL._GetVariable("wc_any"));
23 
27  private List<string> lstEjercicio = new List<string>();
28 
32  protected List<int> lstEjerciciosSeleccionados = new List<int>();
33 
37  protected List<string> EjerciciosSeleccionados = new List<string>();
38 
42  protected List<string> lstComprobaciones = new List<string>();
43 
47  protected bool lbNIFGestion = false;
48 
52  protected bool lbNIFCtasContables = false;
53 
57  protected bool lbNIFDuplicado = false;
58 
62  protected bool lbNIFNoValido = false;
63 
67  protected bool lbNIFActualDistinto = false;
68 
72  protected bool lbNIFValidadosAEAT = false;
73 
77  private string cTipo = string.Empty;
81  private string cTabla = string.Empty;
85  private string cTablaJoin = string.Empty;
89  private int nBit = 1;
90 
94  private string cCampo = string.Empty;
95 
96 
97  private enum ORIGEN
98  {
99  Clientes = 0,
100  Clientespotenciales = 1,
101  Proveedores = 2,
102  Todos = 3
103  }
104 
105  private ORIGEN origen = ORIGEN.Todos;
106 
107  private objetos.ewcombobox loComboOrigen = null;
108 
112  protected string _cAnyActual = Convert.ToString(EW_GLOBAL._GetVariable("wc_any"));
113 
117  public DataTable ldtNIF = null;
118 
122  public override Dictionary<string, string> _NavigateButtons
123  {
124  get
125  {
126  Dictionary<string, string> valores = new Dictionary<string, string>();
127 
128  if (origen != ORIGEN.Clientespotenciales)
129  valores.Add("Cuentas", "Ver cuentas");
130 
131  switch (origen)
132  {
133  case ORIGEN.Clientes:
134  valores.Add("Clientes", "Ver clientes");
135  break;
136 
137  case ORIGEN.Clientespotenciales:
138  valores.Add("Potenciales", "Ver clientes potenciales");
139  break;
140 
141  case ORIGEN.Proveedores:
142  valores.Add("Proveedores", "Ver proveedores");
143  break;
144 
145  case ORIGEN.Todos:
146  valores.Add("Clientes", "Ver clientes");
147  valores.Add("Potenciales", "Ver clientes potenciales");
148  valores.Add("Proveedores", "Ver proveedores");
149  break;
150 
151  }
152  return valores;
153  }
154  set
155  {
156  base._NavigateButtons = value;
157  }
158  }
159 
165  public override void _Navigate(String tcKeyNavigate, DataRow trRowList)
166  {
167  switch (tcKeyNavigate)
168  {
169  case "Cuentas":
170  if (trRowList["VERTIPO"].ToString() == "PRCLIENT")
171  return;
172 
173  _Navegar(Clases.Listados.Pantalla.Cuentas, new List<string>() { Convert.ToString(trRowList["CODIGO"]) });
174  break;
175 
176  case "Clientes":
177  if (trRowList["VERTIPO"].ToString() == "CLIENTES" ||
178  (trRowList["VERTIPO"].ToString() == "CUENTAS" && Convert.ToBoolean(trRowList["CLI_PRO"])))
179  _Navegar(Clases.Listados.Pantalla.Clientes, new List<string>() { Convert.ToString(trRowList["CODIGO"]) });
180  break;
181 
182  case "Potenciales":
183  if (trRowList["VERTIPO"].ToString() == "PRCLIENT")
184  _Navegar(Clases.Listados.Pantalla.ClientePotencial, new List<string>() { Convert.ToString(trRowList["CODIGO"]) });
185 
186  break;
187 
188  case "Proveedores":
189  if (trRowList["VERTIPO"].ToString() == "PROVEED" ||
190  (trRowList["VERTIPO"].ToString() == "CUENTAS" && !Convert.ToBoolean(trRowList["CLI_PRO"])))
191  _Navegar(Clases.Listados.Pantalla.Proveedores, new List<string>() { Convert.ToString(trRowList["CODIGO"]) });
192 
193  break;
194 
195  }
196  }
197 
201  public override string _ReportFile
202  {
203  get
204  {
205  return "list_comprNIF.report";
206  }
207  }
208 
212  public override List<string> _ReportColumns
213  {
214  get
215  {
216  _dicDefEntidades = new Dictionary<string, ew.interficies.IDefEntidad>();
217 
218  switch (origen)
219  {
220  case ORIGEN.Clientes:
221  _dicDefEntidades.Add("CODIGO", new DefEntidad() { _DB = "GESTION", _Tabla = "CLIENTES", _Campo = "CODIGO", _Relacion = "", _Empresa = false });
222  break;
223  case ORIGEN.Clientespotenciales:
224  _dicDefEntidades.Add("CODIGO", new DefEntidad() { _DB = "GESTION", _Tabla = "PRCLIENT", _Campo = "CODIGO", _Relacion = "", _Empresa = false });
225  break;
226  case ORIGEN.Proveedores:
227  _dicDefEntidades.Add("CODIGO", new DefEntidad() { _DB = "GESTION", _Tabla = "PROVEED", _Campo = "CODIGO", _Relacion = "", _Empresa = false });
228  break;
229  }
230 
231  return new List<string>() { "CODIGO", "NOMBRE", "CIF" };
232  }
233  }
234 
239  public override void _SetColumnCaptions(Dictionary<string, string> tldTranslate = null)
240  {
241  Dictionary<string, string> ldTranslate = new Dictionary<string, string> { };
242 
243  ldTranslate.Add("CIF", "@NIF");
244 
245  base._SetColumnCaptions(ldTranslate);
246  }
247 
251  public override void _SetColumnMasks()
252  {
253  if (_Resultados == null)
254  return;
255 
256  base._SetColumnMasks();
257  }
258 
262  public override void _SetDefaultValues(Dictionary<string, object> toControlsFiltros = null, Dictionary<string, object> toControlsOpciones = null)
263  {
264  base._SetDefaultValues(toControlsFiltros, toControlsOpciones);
265 
266  if (_Ejercicios == null || _Ejercicios.Length == 0)
267  _Ejercicios = new string[1] { DB.Ejercicio_EW };
268 
269  // Añado en lista todo los ejercicios menos el actual
270  foreach (string lcEjer in DB._oAliasDBEjer.Keys)
271  lstEjercicio.Add(lcEjer);
272 
273  // Cargamos los ejericios en la lista
274  if (toControlsOpciones.ContainsKey("ewchklistListaselecc"))
275  {
276  sage.ew.objetos.ewcheckedlistbox loListaEjercicios = (sage.ew.objetos.ewcheckedlistbox)toControlsOpciones["ewchklistListaselecc"];
277 
278  foreach (string lcEjer in DB._oAliasDBEjer.Keys)
279  if (Convert.ToInt32(lcEjer) != Convert.ToInt32(_cAnyActual))
280  loListaEjercicios.Items.Add(lcEjer, false);
281  }
282 
283  if (toControlsOpciones.ContainsKey("cmbClientesClientesp"))
284  _ModificarControlOpciones(toControlsOpciones, "cmbClientesClientesp", "SelectedIndex", 3, true);
285  }
286 
291  public override bool _Valid()
292  {
293  List<string> lstEjercicioCargar = new List<string>();
294 
295  for (int i = 0; i < lstEjercicio.Count; i++)
296  {
297  if (lstEjercicio[i] != _cAnyActual)
298  lstEjercicioCargar.Add(lstEjercicio[i]);
299  }
300 
301  EjerciciosSeleccionados.Clear();
302 
303  if (diccionarioControlesOpciones.ContainsKey("ewchklistListaselecc"))
304  {
305  lstEjerciciosSeleccionados = _Opcion_List<int>("ewchklistListaselecc_list");
306 
307  if (lstEjerciciosSeleccionados.Count != 0)
308  {
309  for (int i = 0; i < lstEjerciciosSeleccionados.Count; i++)
310  {
311  int indice = lstEjerciciosSeleccionados[i];
312  if (EjerciciosSeleccionados.Count > 0)
313  {
314  if (!EjerciciosSeleccionados.Contains(lstEjercicioCargar[indice]))
315  EjerciciosSeleccionados.Add(lstEjercicioCargar[indice]);
316  }
317  else
318  {
319  EjerciciosSeleccionados.Add(lstEjercicioCargar[indice]);
320  }
321  }
322  }
323  }
324 
325  // lstComprobaciones.Clear();
326  lstComprobaciones = _FiltrosComprobar();
327 
328  if ((EjerciciosSeleccionados.Count == 0) && (lstComprobaciones.Contains("05")))
329  {
330  _Error_Message = "La comprobación de 'NIF distinto en otros ejercicios' " +
331  "obliga a marca al menos un ejercicio en la opción en 'Comprobación en otros ejercicios'.";
332  return false;
333  }
334 
335  if (EjerciciosSeleccionados.Count > 0)
336  {
337  if (lstComprobaciones.Contains("05"))
338  {
339  // Si tenemos algún ejercicio seleccinado en comprobación de ejercicios obligatoriamente tenemos que hacer comprobación 05
340  }
341  else
342  {
343  _Error_Message = "La opción en 'Comprobación en otros ejercicios' obliga a marcar " +
344  "'NIF distinto en otros ejercicios'.";
345  return false;
346  }
347  }
348 
349  if (diccionarioControlesOpciones.ContainsKey("cmbClientesClientesp"))
350  {
351  objetos.ewcombobox loComboDocumento = (objetos.ewcombobox)diccionarioControlesOpciones["cmbClientesClientesp"];
352 
353  loComboOrigen = loComboDocumento;
354  }
355 
356  return true;
357  }
358 
363  public override DataTable _DataTable()
364  {
365  if (loComboOrigen == null)
366  {
367  loComboOrigen = new objetos.ewcombobox();
368  loComboOrigen.Items.Add("Clientes");
369  loComboOrigen.Items.Add("Clientes potenciales");
370  loComboOrigen.Items.Add("Proveedores");
371  loComboOrigen.Items.Add("Todos");
372  loComboOrigen.SelectedIndex = 3;
373  }
374 
375  ldtNIF = new DataTable();
376  ldtNIF.Columns.Add("TIPO", typeof(string));
377  ldtNIF.Columns.Add("CLI_PRO", typeof(Boolean));
378  ldtNIF.Columns.Add("CODIGO", typeof(string));
379  ldtNIF.Columns.Add("NOMBRE", typeof(string));
380  ldtNIF.Columns.Add("CIF", typeof(string));
381  ldtNIF.Columns.Add("VERTIPO", typeof(string));
382 
383  _ActivarMarcas(false, EjerciciosSeleccionados.Count);
384 
385  _ActivarMarcas(lstComprobaciones);
386 
387  origen = ((ORIGEN)loComboOrigen.SelectedIndex);
388 
389 
390  // NIF no informado en mantenimientos de gestión comercial
391  if (lbNIFGestion)
392  _NIFGestion();
393 
394  // NIF no informado en mantenimiento de cuentas contables
395  if (lbNIFCtasContables)
396  _NIFContable();
397 
398  // NIF duplicado
399  if (lbNIFDuplicado)
400  _NIFDuplicado();
401 
402  // NIF nacional incorrecto
403  if (lbNIFNoValido)
404  _NIFNacional();
405 
406  // NIF distinto en otros ejercicios
407  if (lbNIFActualDistinto)
408  _NIFDistintos();
409 
410  // NIF no validados con AEAT
411  if (lbNIFValidadosAEAT)
412  _NIFValidadosAEAT();
413 
414  DataView dtV = ldtNIF.DefaultView;
415  dtV.Sort = "Tipo ASC, codigo ASC";
416  ldtNIF = dtV.ToTable();
417 
418  if (!ldtNIF.Columns.Contains("NOMBRETIPO"))
419  ldtNIF.Columns.Add("NOMBRETIPO", typeof(string));
420 
421  foreach (DataRow row in ldtNIF.Rows)
422  {
423  switch (row["TIPO"].ToString())
424  {
425  case "1":
426  row["NOMBRETIPO"] = "NIF no informado en mantenimientos de gestión comercial";
427  break;
428  case "2":
429  row["NOMBRETIPO"] = "NIF no informado en mantenimiento de cuentas contables";
430  break;
431  case "3":
432  row["NOMBRETIPO"] = "NIF duplicado";
433  break;
434  case "4":
435  row["NOMBRETIPO"] = "NIF distinto otros ejercicios en mantenimientos de gestión comercial";
436  break;
437  case "5":
438  row["NOMBRETIPO"] = "NIF distinto otros ejercicios en mantenimiento de cuentas contables";
439  break;
440  case "6":
441  row["NOMBRETIPO"] = "NIF no validados con AEAT en gestión";
442  break;
443  case "7":
444  row["NOMBRETIPO"] = "NIF no validados con AEAT en cuentas";
445  break;
446  case "8":
447  row["NOMBRETIPO"] = "NIF nacional incorrecto en mantenimientos de gestión comercial";
448  break;
449  case "9":
450  row["NOMBRETIPO"] = "NIF nacional incorrecto en manteniento de cuentas contables";
451  break;
452  }
453  }
454 
455  List<string> loListaTotales = new List<string>();
456 
457  ldtNIF = ldtNIF.__Agrupar("NOMBRETIPO", "NOMBRETIPO", "", false);
458 
459  foreach (DataRow ldr in ldtNIF.Rows)
460  {
461  if ((!string.IsNullOrEmpty(ldr["CODTITULO"].ToString())) && (ldr["bold"] != DBNull.Value || Convert.ToBoolean(ldr["bold"])))
462  ldr["NOMBRE"] = ldr["CODTITULO"].ToString().Trim();
463  }
464 
465  return ldtNIF;
466  }
467 
468 
475  {
476  bool lbResult = true;
477 
478  return lbResult;
479  }
480 
486  protected void _ActivarMarcas(bool valor, Int32 nEjercicios)
487  {
488  // NIF no informado en mantenimientos de gestión comercial
489  lbNIFGestion = valor;
490  // NIF no informado en mantenimiento de cuentas contables
491  lbNIFCtasContables = valor;
492  // NIF duplicado
493  lbNIFDuplicado = valor;
494  // NIF nacional incorrecto
495  lbNIFNoValido = valor;
496  // NIF distinto otros ejercicios
497  lbNIFActualDistinto = valor;
498  // NIF no validados con AEAT
499  lbNIFValidadosAEAT = valor;
500  }
501 
506  protected void _ActivarMarcas(List<String> tiposRevisionSeleccionados)
507  {
508  if (tiposRevisionSeleccionados != null && tiposRevisionSeleccionados.Count > 0)
509  {
510  foreach (String s in tiposRevisionSeleccionados)
511  {
512  switch (s)
513  {
514  case "01":
515  // NIF no introducido en mantenimientos de gestión
516  lbNIFGestion = true;
517  break;
518  case "02":
519  // NIF no introducido en mantenimiento de cuentas contables
520  lbNIFCtasContables = true;
521  break;
522  case "03":
523  // NIF duplicado
524  lbNIFDuplicado = true;
525  break;
526  case "04":
527  // NIF nacional incorrecto
528  lbNIFNoValido = true;
529  break;
530  case "05":
531  // NIF distinto otros ejercicios
532  lbNIFActualDistinto = true;
533  break;
534  case "06":
535  // NIF no validados con AEAT
536  lbNIFValidadosAEAT = true;
537  break;
538  }
539  }
540  }
541  }
542 
548  protected List<string> _FiltrosComprobar()
549  {
550  const string TIPO_COMPROBACION = "TipoComprobacionNIF";
551 
552  object loParametro = null;
553  List<string> loLista = new List<string>();
554 
555  String lstComprobacionDesde = string.Empty;
556  String lstComprobacionHasta = string.Empty;
557 
558  if (this._Filtros != null && this._Filtros.Count > 0)
559  {
560  this._Filtros.TryGetValue(TIPO_COMPROBACION + "Lista", out loParametro);
561  if (loParametro != null)
562  {
563  // Es una lista.
564  if (loParametro is string)
565  {
566  loLista = new List<String>(loParametro.ToString().Split(','));
567  }
568  else
569  {
570  loLista = (List<string>)loParametro;
571  }
572  }
573  else
574  {
575  // Desde / hasta.
576  this._Filtros.TryGetValue(TIPO_COMPROBACION + "Desde", out loParametro);
577  if (loParametro != null)
578  {
579  lstComprobacionDesde = Convert.ToString(loParametro);
580  }
581  loParametro = null;
582 
583  this._Filtros.TryGetValue(TIPO_COMPROBACION + "Hasta", out loParametro);
584  if (loParametro != null)
585  {
586  lstComprobacionHasta = Convert.ToString(loParametro);
587  }
588 
589  if (!String.IsNullOrWhiteSpace(lstComprobacionDesde) && !String.IsNullOrWhiteSpace(lstComprobacionHasta))
590  {
591  int desde = Convert.ToInt32(lstComprobacionDesde);
592  int hasta = Convert.ToInt32(lstComprobacionHasta);
593 
594  for (int i = desde; i <= hasta; i++)
595  {
596  loLista.Add(i.ToString("00"));
597  }
598  }
599  else
600  {
601  // Unico
602  this._Filtros.TryGetValue(TIPO_COMPROBACION + "Unico", out loParametro);
603  if (loParametro != null && Convert.ToString(loParametro) != "")
604  {
605  int unico = Convert.ToInt32(loParametro);
606  loLista.Add(unico.ToString("00"));
607  }
608  else
609  {
610  if (String.IsNullOrWhiteSpace(lstComprobacionDesde) && !String.IsNullOrWhiteSpace(lstComprobacionHasta))
611  {
612  int desde = 1;
613  int hasta = Convert.ToInt32(lstComprobacionHasta);
614 
615  for (int i = desde; i <= hasta; i++)
616  {
617  loLista.Add(i.ToString("00"));
618  }
619  }
620  else
621  {
622  if (!String.IsNullOrWhiteSpace(lstComprobacionDesde) && String.IsNullOrWhiteSpace(lstComprobacionHasta))
623  {
624  int desde = Convert.ToInt32(lstComprobacionDesde);
625  int hasta = 6;
626 
627  for (int i = desde; i <= hasta; i++)
628  {
629  if (i < 5 || (i >= 5 && EjerciciosSeleccionados.Count > 0))
630  loLista.Add(i.ToString("00"));
631  }
632  }
633  else
634  {
635  if (this._Filtros.Count == 1)
636  {
637  // En este caso al no tener ningún valor en filtro y no tener marcado check de todos no lanzamos proceso
638  }
639  else
640  {
641  // Si no llegan filtros no sabemos si está marcado o no el check de todos.
642  // Según lo hablado con Joan se lanzan todas las revisiones.
643  for (int i = 1; i <= 6; i++)
644  {
645  if (i < 5 || (i >= 5 && EjerciciosSeleccionados.Count > 0))
646  loLista.Add(i.ToString("00"));
647  }
648  }
649  }
650  }
651  }
652  }
653  }
654  }
655  else
656  {
657  // Si no llegan filtros no sabemos si está marcado o no el check de todos.
658  // Según lo hablado con Joan se lanzan todas las revisiones.
659  for (int i = 1; i <= 6; i++)
660  {
661  if (i <= 5)
662  loLista.Add(i.ToString("00"));
663 
664  if (Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_sii")) && i == 6 && this._Filtros.Count == 0 && !loLista.Contains(i.ToString("00")))
665  loLista.Add(i.ToString("00"));
666  }
667  }
668 
669  return loLista;
670  }
671 
675  protected void _NIFGestion()
676  {
677  cTipo = "1";
678  nBit = 1;
679 
680  if (origen == ORIGEN.Clientes || origen == ORIGEN.Todos)
681  {
682  cTabla = "CLIENTES";
683  _QueryNIFGestion();
684  }
685 
686  if (origen == ORIGEN.Clientespotenciales || origen == ORIGEN.Todos)
687  {
688  cTabla = "PRCLIENT";
689  _QueryNIFGestion();
690  }
691 
692  if (origen == ORIGEN.Proveedores || origen == ORIGEN.Todos)
693  {
694  nBit = 0;
695  cTabla = "PROVEED";
696  _QueryNIFGestion();
697  }
698  }
699 
703  protected void _NIFContable()
704  {
705  cTipo = "2";
706  nBit = 1;
707  cTabla = "CUENTAS";
708 
709  if (origen == ORIGEN.Clientes || origen == ORIGEN.Todos)
710  {
711  cCampo = "B.CLIENTE";
712  _QueryNIFContable();
713  }
714 
715  if (origen == ORIGEN.Proveedores || origen == ORIGEN.Todos)
716  {
717  nBit = 0;
718  cCampo = "B.PROVEEDOR";
719  _QueryNIFContable();
720  }
721  }
722 
723 
727  protected void _NIFDuplicado()
728  {
729  cTipo = "3";
730  nBit = 1;
731 
732  if (origen == ORIGEN.Clientes || origen == ORIGEN.Todos)
733  {
734  cTabla = "CLIENTES";
735  _QueryNIFDuplicado();
736  }
737 
738  if (origen == ORIGEN.Clientespotenciales || origen == ORIGEN.Todos)
739  {
740  cTabla = "PRCLIENT";
741  _QueryNIFDuplicado();
742  }
743 
744  if (origen == ORIGEN.Proveedores || origen == ORIGEN.Todos)
745  {
746  nBit = 0;
747  cTabla = "PROVEED";
748  _QueryNIFDuplicado();
749  }
750  }
751 
755  protected void _NIFNacional()
756  {
757  cTipo = "8";
758  nBit = 1;
759 
760  if (origen == ORIGEN.Clientes || origen == ORIGEN.Todos)
761  {
762  cTabla = "CLIENTES";
763  _QueryNIFNacional("CLIENTES");
764  cTipo = "9";
765  cCampo = "B.CLIENTE";
766  _QueryNIFNacional("CLIENTES");
767  }
768 
769  if (origen == ORIGEN.Clientespotenciales || origen == ORIGEN.Todos)
770  {
771  cTipo = "8";
772  cTabla = "PRCLIENT";
773  _QueryNIFNacional("PRCLIENT");
774  }
775 
776  if (origen == ORIGEN.Proveedores || origen == ORIGEN.Todos)
777  {
778  cTipo = "8";
779  nBit = 0;
780  cTabla = "PROVEED";
781  _QueryNIFNacional("PROVEED");
782  cTipo = "9";
783  cCampo = "B.PROVEEDOR";
784  _QueryNIFNacional("PROVEED");
785  }
786  }
787 
791  protected void _NIFDistintos()
792  {
793  cTipo = "4";
794  nBit = 1;
795 
796  if (origen == ORIGEN.Clientes || origen == ORIGEN.Todos)
797  {
798  cTabla = "CLIENTES";
799  _QueryNIFCambiado("CLIENTES");
800  }
801 
802  if (origen == ORIGEN.Clientespotenciales || origen == ORIGEN.Todos)
803  {
804  cTipo = "4";
805  cTabla = "PRCLIENT";
806  _QueryNIFCambiado("PRCLIENT");
807  }
808 
809  if (origen == ORIGEN.Proveedores || origen == ORIGEN.Todos)
810  {
811  cTipo = "4";
812  cTabla = "PROVEED";
813  nBit = 0;
814  _QueryNIFCambiado( "PROVEED");
815  }
816  }
817 
821  protected void _NIFValidadosAEAT()
822  {
823  cTipo = "6";
824  nBit = 1;
825 
826  if (origen == ORIGEN.Clientes || origen == ORIGEN.Todos)
827  {
828  cTabla = "CLIENTES";
829  _CargarDatosDatatableAEAT();
830  }
831 
832  if (origen == ORIGEN.Clientespotenciales || origen == ORIGEN.Todos)
833  {
834  cTipo = "6";
835  cTabla = "PRCLIENT";
836  _CargarDatosDatatableAEAT();
837  }
838 
839  if (origen == ORIGEN.Proveedores || origen == ORIGEN.Todos)
840  {
841  cTipo = "6";
842  cTabla = "PROVEED";
843  nBit = 0;
844  _CargarDatosDatatableAEAT();
845  }
846  }
847 
851  protected void _CargarDatosDatatableAEAT()
852  {
853  DataTable dtDatos = new DataTable();
854  DataTable dtResult = new DataTable();
855 
856  _QueryNIFGestionAEAT(ref dtDatos);
857 
858  if (dtDatos != null && dtDatos.Rows.Count > 0)
859  dtResult = functions.FUNCTIONS._ValidarNIF_AEAT(dtDatos);
860 
861  if (dtResult != null && dtResult.Rows.Count > 0)
862  _AddRecords(dtResult);
863 
864  dtDatos.Clear();
865  dtResult.Clear();
866 
867  if (cTabla != "PRCLIENT")
868  {
869  cTipo = "7";
870  cCampo = (cTabla == "CLIENTES" ? "B.CLIENTE" : "B.PROVEEDOR");
871 
872  _QueryNIFCuentasAEAT(ref dtDatos);
873 
874  if (dtDatos != null && dtDatos.Rows.Count > 0)
875  dtResult = functions.FUNCTIONS._ValidarNIF_AEAT(dtDatos);
876 
877  if (dtResult != null && dtResult.Rows.Count > 0)
878  _AddRecords(dtResult);
879  }
880  }
881 
886  protected void _AddRecords(DataTable dtDatos)
887  {
888  foreach (DataRow row in dtDatos.Rows)
889  {
890  DataRow loRow = ldtNIF.NewRow();
891  loRow = row;
892  ldtNIF.Rows.Add(loRow.ItemArray);
893  }
894 
895  dtDatos.Rows.Clear();
896  }
897 
901  protected void _QueryNIFGestionAEAT(ref DataTable dtDatos)
902  {
903  string lcSql = string.Format(" SELECT {0} as TIPO, CAST({1} as bit) as CLI_PROV, CODIGO, NOMBRE, CIF, {2} AS VERTIPO" +
904  " FROM {3}" +
905  " WHERE CIF != ''" +
906  (cTabla != "PRCLIENT" ? " AND COMUNITARI = '1'" : ""),
907  DB.SQLString(cTipo),
908  nBit,
909  DB.SQLString(cTabla),
910  DB.SQLDatabase("GESTION", cTabla));
911 
912  DB.SQLExec(lcSql, ref dtDatos);
913  }
914 
918  protected void _QueryNIFCuentasAEAT(ref DataTable dtDatos)
919  {
920  string lcSql = string.Format(" SELECT {0} as TIPO, CAST({1} as bit) as CLI_PROV, A.CODIGO, A.NOMBRE, A.CIF, {2} AS VERTIPO" +
921  " FROM {3} A" +
922  " INNER JOIN {4} B ON LEFT(A.CODIGO, 3) = B.CODIGO AND {5} = 1 AND B.CIF = 1" +
923  " WHERE A.CIF != ''" +
924  " AND COMUNITARI = '1'",
925  DB.SQLString(cTipo),
926  nBit,
927  DB.SQLString(cTabla),
928  DB.SQLDatabase("GESTION", cTabla),
929  DB.SQLDatabase("GESTION", "NIVEL3"),
930  cCampo);
931 
932  DB.SQLExec(lcSql, ref dtDatos);
933  }
934 
935 
939  protected void _QueryNIFGestion()
940  {
941  DataTable dtDatos = new DataTable();
942 
943  string lcSql = string.Format(" SELECT {0} as TIPO, CAST({1} as bit) as CLI_PROV, CODIGO, NOMBRE, CIF, {2} AS VERTIPO" +
944  " FROM {3}" +
945  " WHERE CIF = ''",
946  DB.SQLString(cTipo),
947  nBit,
948  DB.SQLString(cTabla),
949  DB.SQLDatabase("GESTION", cTabla));
950 
951  DB.SQLExec(lcSql, ref dtDatos);
952 
953  if (dtDatos != null && dtDatos.Rows.Count > 0)
954  _AddRecords(dtDatos);
955 
956  }
957 
961  protected void _QueryNIFContable()
962  {
963  DataTable dtDatos = new DataTable();
964 
965  string lcSql = string.Format(" SELECT {0} as TIPO, CAST({1} as bit) as CLI_PROV, A.CODIGO, A.NOMBRE, A.CIF, {2} AS VERTIPO" +
966  " FROM {3} A" +
967  " INNER JOIN {4} B ON LEFT(A.CODIGO, 3) = B.CODIGO AND {5} = 1 AND B.CIF = 1" +
968  " WHERE A.CIF = ''",
969  DB.SQLString(cTipo),
970  nBit,
971  DB.SQLString(cTabla),
972  DB.SQLDatabase("GESTION", cTabla),
973  DB.SQLDatabase("GESTION", "NIVEL3"),
974  cCampo);
975 
976  DB.SQLExec(lcSql, ref dtDatos);
977 
978  if (dtDatos != null && dtDatos.Rows.Count > 0)
979  _AddRecords(dtDatos);
980 
981  }
982 
986  protected void _QueryNIFDuplicado()
987  {
988  DataTable dtDatosDupli = new DataTable();
989  DataTable dtDatos = new DataTable();
990 
991  string lcSqlDupli = string.Format(" SELECT CIF " +
992  " FROM {0} " +
993  " WHERE CIF != ''" +
994  " GROUP BY CIF " +
995  " HAVING COUNT(*)>1",
996  DB.SQLDatabase("GESTION", cTabla));
997 
998  DB.SQLExec(lcSqlDupli, ref dtDatosDupli);
999  if (dtDatosDupli != null && dtDatosDupli.Rows.Count > 0)
1000  {
1001  // Busco los diferentes clientes que tienen el mismo CIF
1002  string lcSql = string.Format(" SELECT {0} as TIPO, CAST({1} as bit) as CLI_PROV, CODIGO, NOMBRE, CIF, {2} AS VERTIPO" +
1003  " FROM {3}" +
1004  " WHERE CIF != ''",
1005  DB.SQLString(cTipo),
1006  nBit,
1007  DB.SQLString(cTabla),
1008  DB.SQLDatabase("GESTION", cTabla));
1009 
1010  DB.SQLExec(lcSql, ref dtDatos);
1011 
1012  if (dtDatos != null && dtDatos.Rows.Count > 0)
1013  {
1014  // Cargo en una lista todos los CIF de tabla dtDatosDupli
1015  var lstCIF = dtDatosDupli.Rows.OfType<DataRow>().Select(dr => Convert.ToString(dr["CIF"]).Trim()).ToList();
1016 
1017  // Compruebo en dtDatos si están los CIF de la lista lstCIF y cargo en tabla ldtDupli
1018  var dtDupli = dtDatos.AsEnumerable().Where(dr => lstCIF.Contains(Convert.ToString(dr["CIF"]).Trim()))
1019  .Select(dr => dr).__CopyToDataTable();
1020 
1021  if (dtDupli != null && dtDupli.Rows.Count > 0)
1022  _AddRecords(dtDupli);
1023 
1024  }
1025  }
1026  }
1027 
1031  protected void _QueryNIFNacional(string cTabla)
1032  {
1033  DataTable dtDatosNIF = new DataTable();
1034 
1035  string lstDatosNIF = string.Empty;
1036 
1037  string cTipoAux = "0";
1038 
1039  if (cTipo == "8")
1040  {
1041  lstDatosNIF = string.Format(" SELECT {0} as TIPO, CAST({1} as bit) as CLI_PROV, CODIGO, NOMBRE, CIF, {2} AS VERTIPO " +
1042  " FROM {3}" +
1043  " WHERE CIF != ''" +
1044  (cTabla != "PRCLIENT" ? " AND COMUNITARI = '1'" : ""),
1045  DB.SQLString(cTipoAux),
1046  nBit,
1047  DB.SQLString(cTabla),
1048  DB.SQLDatabase("GESTION", cTabla));
1049  }
1050  else
1051  {
1052  lstDatosNIF = string.Format(" SELECT {0} as TIPO, CAST({1} as bit) as CLI_PROV, A.CODIGO, A.NOMBRE, A.CIF, {2} AS VERTIPO" +
1053  " FROM {3} A" +
1054  " INNER JOIN {4} B ON LEFT(A.CODIGO, 3) = B.CODIGO AND {5} = 1 AND B.CIF = 1" +
1055  " LEFT JOIN {6} C ON C.CODIGO = A.CODIGO" +
1056  " WHERE A.CIF != '' AND COMUNITARI = '1'",
1057  DB.SQLString(cTipoAux),
1058  nBit,
1059  DB.SQLString(cTabla),
1060  DB.SQLDatabase("GESTION", "CUENTAS"),
1061  DB.SQLDatabase("GESTION", "NIVEL3"),
1062  cCampo,
1063  DB.SQLDatabase("GESTION", cTabla));
1064  }
1065 
1066  DB.SQLExec(lstDatosNIF, ref dtDatosNIF);
1067 
1068  foreach(DataRow row in dtDatosNIF.Rows)
1069  {
1070  string lcCodigo = row["CIF"].ToString().Trim().ToUpper();
1071  row["TIPO"] = (!functions.FUNCTIONS._ValidarNIF(ref lcCodigo, "", false, true) ? cTipo : "0");
1072  }
1073 
1074  if (dtDatosNIF != null && dtDatosNIF.Rows.Count > 0)
1075  {
1076  DataRow[] drr = dtDatosNIF.Select("TIPO = '0'");
1077  for (int i = 0; i < drr.Length; i++)
1078  drr[i].Delete();
1079 
1080  dtDatosNIF.AcceptChanges();
1081 
1082  _AddRecords(dtDatosNIF);
1083  }
1084  }
1085 
1086 
1090  protected void _QueryNIFCambiado(string cOrigen)
1091  {
1092  DataTable curcliRevisar = new DataTable(); // Gestion!Clientes ejercicio actual
1093  DataTable curcliRevisar_cuentas = new DataTable(); // Gestion!Cuentas ejercicio actual
1094  DataTable curtmp = new DataTable(); // Gestion!Clientes diferente ejercicio
1095  DataTable curtmp_cuentas = new DataTable(); // Gestion!Cuentas diferente ejercicio
1096  DataTable tmpRevisar = new DataTable(); // Tabla en la que vamos volcando información GESTION
1097  DataTable tmpRevisar_cuentas = new DataTable(); // Tabla en la que vamos volcando información CUENTAS
1098 
1099  string lcSql = string.Empty;
1100 
1101  string lcSqlRevisar = _QueryNIFBasica();
1102  DB.SQLExecEjer(lcSqlRevisar, ref curcliRevisar, new string[] { Convert.ToString(_nEjercicioActual) });
1103 
1104  if (curcliRevisar.Columns.Contains("EJERCICIO"))
1105  curcliRevisar.Columns.Remove("EJERCICIO");
1106 
1107  switch (cOrigen)
1108  {
1109  case "CLIENTES":
1110  cCampo = "B.CLIENTE";
1111  break;
1112  case "PRCLIENT":
1113  break;
1114  case "PROVEED":
1115  cCampo = "B.PROVEEDOR";
1116  break;
1117  }
1118 
1119  cTabla = "CUENTAS";
1120 
1121  if (cOrigen != "PRCLIENT")
1122  {
1123  lcSql = _QueryNIFJoin();
1124  DB.SQLExecEjer(lcSql, ref curcliRevisar_cuentas, new string[] { Convert.ToString(_nEjercicioActual) });
1125 
1126  if (curcliRevisar_cuentas.Columns.Contains("EJERCICIO"))
1127  curcliRevisar_cuentas.Columns.Remove("EJERCICIO");
1128  }
1129 
1130  string lcComprobar = "CODIGO";
1131 
1132  if (curcliRevisar != null && curcliRevisar.Rows.Count > 0 )
1133  {
1134  // Ejercicios anteriores
1135  for (Int32 i = EjerciciosSeleccionados.Count - 1; i >= 0; i--)
1136  {
1137  string lcEjer = EjerciciosSeleccionados[i];
1138 
1139  cTipo = "4";
1140 
1141  switch (cOrigen)
1142  {
1143  case "CLIENTES":
1144  cTabla = "CLIENTES";
1145  nBit = 1;
1146  break;
1147  case "PRCLIENT":
1148  cTabla = "PRCLIENT";
1149  break;
1150  case "PROVEED":
1151  cTabla = "PROVEED";
1152  nBit = 0;
1153  break;
1154  }
1155 
1156  lcSqlRevisar = _QueryNIFBasica();
1157  DB.SQLExecEjer(lcSqlRevisar, ref curtmp, new string[] { lcEjer });
1158 
1159  if (curtmp.Columns.Contains("EJERCICIO"))
1160  curtmp.Columns.Remove("EJERCICIO");
1161 
1162  if (cOrigen != "PRCLIENT")
1163  {
1164  cTabla = "CUENTAS";
1165  lcSql = _QueryNIFJoin();
1166  DB.SQLExecEjer(lcSql, ref curtmp_cuentas, new string[] { lcEjer });
1167 
1168  if (curtmp_cuentas.Columns.Contains("EJERCICIO"))
1169  curtmp_cuentas.Columns.Remove("EJERCICIO");
1170  }
1171 
1172  #region GESTION
1173  if (curtmp != null && curtmp.Rows.Count > 0)
1174  _LinqGestion(curcliRevisar, curtmp, lcComprobar);
1175  #endregion GESTION
1176 
1177  #region CUENTAS
1178  if ((curtmp_cuentas != null && curtmp_cuentas.Rows.Count > 0) && (cOrigen != "PRCLIENT"))
1179  _LinqCuentas(curcliRevisar_cuentas, curtmp_cuentas, lcComprobar);
1180  #endregion CUENTAS
1181 
1182  }
1183  }
1184  }
1185 
1186 
1190  protected string _QueryNIFBasica()
1191  {
1192  string lcSqlRevisar = string.Format(" SELECT {0} as TIPO, CAST({1} as bit) as CLI_PROV, CODIGO, NOMBRE, CIF, {2} AS VERTIPO" +
1193  " FROM {3}",
1194  DB.SQLString(cTipo),
1195  nBit,
1196  DB.SQLString(cTabla),
1197  DB.SQLDatabase("", cTabla));
1198 
1199  return lcSqlRevisar;
1200  }
1201 
1202 
1206  protected string _QueryNIFJoin()
1207  {
1208  string lcSql = string.Format(" SELECT {0} as TIPO, CAST({1} as bit) as CLI_PROV, A.CODIGO, A.NOMBRE, A.CIF, {2} AS VERTIPO" +
1209  " FROM {3} A" +
1210  " INNER JOIN {4} B ON LEFT(A.CODIGO, 3) = B.CODIGO AND {5} = 1 AND B.CIF = 1",
1211  DB.SQLString(cTipo),
1212  nBit,
1213  DB.SQLString(cTabla),
1214  DB.SQLDatabase("", cTabla),
1215  DB.SQLDatabase("", "NIVEL3"),
1216  cCampo);
1217 
1218  return lcSql;
1219  }
1220 
1221 
1225  protected void _LinqGestion(DataTable curcliRevisar, DataTable curtmp, string lcComprobar)
1226  {
1227  DataTable tmpRevisar = new DataTable(); // Tabla en la que vamos volcando información GESTION
1228  tmpRevisar.Columns.Add("TIPO", typeof(string));
1229  tmpRevisar.Columns.Add("CLI_PRO", typeof(Boolean));
1230  tmpRevisar.Columns.Add("CODIGO", typeof(string));
1231  tmpRevisar.Columns.Add("NOMBRE", typeof(string));
1232  tmpRevisar.Columns.Add("CIF", typeof(string));
1233  tmpRevisar.Columns.Add("VERTIPO", typeof(string));
1234 
1235  /*
1236  // NIF cambiado comprobar por código ------- NIF cambiado comprobar por nombre
1237  ** busco els codis que coincideixen amb anys anteriors ------- ** busco els codis que coincideixen amb anys anteriors
1238  SELECT codigo, nombre, cif; ------- SELECT codigo, nombre, cif;
1239  FROM curTmp; ------- FROM curTmp;
1240  WHERE codigo IN(SELECT codigo FROM curcliRevisar); ------- WHERE nombre IN(SELECT nombre FROM curcliRevisar);
1241  INTO CURSOR curcli_tmp2 ------- INTO CURSOR curcli_tmp2
1242  */
1243 
1244  // Busco los códigos que coinciden con años anteriores
1245  // Cargo en una lista todos los (CODIGOS o NOMBRES) de clientes de tabla curcliRevisar del ejericio actual
1246  var lstClientes = curcliRevisar.Rows.OfType<DataRow>().Select(dr => Convert.ToString(dr[lcComprobar]).Trim()).ToList();
1247 
1248  // Compruebo en curtmp si están los CIF de la lista lstClientes y cargo en tabla curcli_tmp2
1249  var curcli_tmp2 = curtmp.AsEnumerable().Where(dr => lstClientes.Contains(Convert.ToString(dr[lcComprobar]).Trim()))
1250  .Select(dr => dr).__CopyToDataTable();
1251 
1252  if (curcli_tmp2 != null && curcli_tmp2.Rows.Count > 0)
1253  {
1254  /*
1255  // NIF cambiado comprobar por código ------- NIF cambiado comprobar por nombre
1256  ** busco els CIFS que no coincideixen amb el codi ------- ** busco els CIFS que no coincideixen amb el codi
1257  SELECT codigo, nombre, cif ; ------- SELECT codigo, nombre, cif ;
1258  FROM curcli_tmp2 ; ------- FROM curcli_tmp2 ;
1259  WHERE cif+codigo NOT IN (SELECT cif+codigo FROM curcliRevisar) ; ------- WHERE cif+nombre NOT IN (SELECT cif+nombre FROM curcliRevisar) ;
1260  INTO CURSOR curcli_tmp3 ------- INTO CURSOR curcli_tmp3
1261  */
1262 
1263  // Busco los CIFS que no coinciden con el código
1264  // Cargo en una lista todos los CIFS + (CODIGOS o NOMBRES) de tabla CurcliRevisar del ejericio actual
1265  var lstCIF = curcliRevisar.Rows.OfType<DataRow>().Select(dr => Convert.ToString(dr["CIF"]).Trim() + Convert.ToString(dr[lcComprobar]).Trim()).ToList();
1266 
1267  // Compruebo en curcli_tmp2 que NO están los CIF + (CODIGOS o NOMBRES) de la lista lstCIFCodigos y cargo en tabla curcli_tmp3
1268  var curcli_tmp3 = curcli_tmp2.AsEnumerable().Where(dr => !lstCIF.Contains(Convert.ToString(dr["CIF"]).Trim() + Convert.ToString(dr[lcComprobar]).Trim()))
1269  .Select(dr => dr).__CopyToDataTable();
1270 
1271  if (curcli_tmp3 != null && curcli_tmp3.Rows.Count > 0)
1272  {
1273  /*
1274  // NIF cambiado comprobar por código ------- NIF cambiado comprobar por nombre
1275  ** presento les dades de l'exercici actual ------- ** presento les dades de l'exercici actual
1276  SELECT '4' AS tipo, .T. AS CLI_PROV , codigo, nombre, cif ; ------- SELECT '6' AS tipo, .T. AS CLI_PROV , codigo, nombre, cif ;
1277  FROM curcliRevisar; ------- FROM curcliRevisar;
1278  WHERE codigo IN (SELECT codigo FROM curcli_tmp3) ; ------- WHERE nombre IN (SELECT codigo FROM curcli_tmp3) ;
1279  INTO CURSOR curcli_tmp ------- INTO CURSOR curcli_tmp
1280  */
1281 
1282  // Presento los datos del ejercicio actual
1283  // Cargo en una lista todos los (CODIGOS o NOMBRES) de tabla curcli_tmp3
1284  var lstRegistros = curcli_tmp3.Rows.OfType<DataRow>().Select(dr => Convert.ToString(dr[lcComprobar]).Trim()).ToList();
1285 
1286  // Compruebo en curcliRevisar si están los (CODIGOS o NOMBRES) de la lista lstCodi y cargo en tabla curcli_tmp
1287  var curcli_tmp = curcliRevisar.AsEnumerable().Where(dr => lstRegistros.Contains(Convert.ToString(dr[lcComprobar]).Trim()))
1288  .Select(dr => dr).__CopyToDataTable();
1289 
1290  foreach (DataRow row in curcli_tmp.Rows)
1291  {
1292  DataRow loRow = tmpRevisar.NewRow();
1293  loRow = row;
1294  tmpRevisar.Rows.Add(loRow.ItemArray);
1295  }
1296 
1297  _AddRecords(tmpRevisar);
1298  }
1299  }
1300  }
1301 
1302 
1306  protected void _LinqCuentas(DataTable curcliRevisar_cuentas, DataTable curtmp_cuentas, string lcComprobar)
1307  {
1308  DataTable tmpRevisar_cuentas = new DataTable(); // Tabla en la que vamos volcando información CUENTAS
1309  tmpRevisar_cuentas.Columns.Add("TIPO", typeof(string));
1310  tmpRevisar_cuentas.Columns.Add("CLI_PRO", typeof(Boolean));
1311  tmpRevisar_cuentas.Columns.Add("CODIGO", typeof(string));
1312  tmpRevisar_cuentas.Columns.Add("NOMBRE", typeof(string));
1313  tmpRevisar_cuentas.Columns.Add("CIF", typeof(string));
1314  tmpRevisar_cuentas.Columns.Add("VERTIPO", typeof(string));
1315 
1316  /*
1317  // NIF cambiado comprobar por código ------- NIF cambiado comprobar por nombre
1318  ** busco els codis que coincideixen amb anys anteriors ------- ** busco els codis que coincideixen amb anys anteriors
1319  SELECT codigo, nombre, cif; ------- SELECT codigo, nombre, cif;
1320  FROM curTmp_cuentas; ------- FROM curTmp_cuentas;
1321  WHERE codigo IN(SELECT codigo FROM curcliRevisar_cuentas); ------- WHERE Nnombre IN(SELECT nombre FROM curcliRevisar_cuentas);
1322  INTO CURSOR curcli_tmp2_cuentas ------- INTO CURSOR curcli_tmp2_cuentas
1323  */
1324 
1325  cTipo = "5";
1326 
1327  // Busco los códigos que coinciden con años anteriores
1328  // Cargo en una lista todos los (CODIGOS o NOMBRES) de clientes de tabla CurcliRevisar_cuentas del ejericio actual
1329  var lstCuentas = curcliRevisar_cuentas.Rows.OfType<DataRow>().Select(dr => Convert.ToString(dr[lcComprobar]).Trim()).ToList();
1330 
1331  // Compruebo en curTmp_cuentas si están los (CODIGOS o NOMBRES) de la lista lstCuentas y cargo en tabla curcli_tmp2_cuentas
1332  var curcli_tmp2_cuentas = curtmp_cuentas.AsEnumerable().Where(dr => lstCuentas.Contains(Convert.ToString(dr[lcComprobar]).Trim()))
1333  .Select(dr => dr).__CopyToDataTable();
1334 
1335  if (curcli_tmp2_cuentas != null && curcli_tmp2_cuentas.Rows.Count > 0)
1336  {
1337  /*
1338  // NIF cambiado comprobar por código ------- NIF cambiado comprobar por nombre
1339  ** busco els CIFS que no coincideixen amb el codi ------- ** busco els CIFS que no coincideixen amb el codi
1340  SELECT codigo, nombre, cif; ------- SELECT codigo, nombre, cif;
1341  FROM curcli_tmp2_cuentas; ------- FROM curcli_tmp2_cuentas;
1342  WHERE cif+codigo NOT IN(SELECT cif+codigo FROM curcliRevisar_cuentas) ; ------- WHERE cif+nombre NOT IN(SELECT cif+nombre FROM curcliRevisar_cuentas) ;
1343  INTO CURSOR curcli_tmp3_cuentas ------- INTO CURSOR curcli_tmp3_cuentas
1344  */
1345 
1346  // Busco los CIFS que no coinciden con el código
1347  // Cargo en una lista todos los CIFS + (CODIGOS o NOMBRES) de tabla curcliRevisar_cuentas del ejericio actual
1348  var lstCIF = curcliRevisar_cuentas.Rows.OfType<DataRow>().Select(dr => Convert.ToString(dr["CIF"]).Trim() + Convert.ToString(dr[lcComprobar]).Trim()).ToList();
1349 
1350  // Compruebo en curcli_tmp2_cuentas que NO están los CIF + (CODIGOS o NOMBRES) de la lista lstCIF y cargo en tabla curcli_tmp3_cuentas
1351  var curcli_tmp3_cuentas = curcli_tmp2_cuentas.AsEnumerable().Where(dr => !lstCIF.Contains(Convert.ToString(dr["CIF"]).Trim() + Convert.ToString(dr[lcComprobar]).Trim()))
1352  .Select(dr => dr).__CopyToDataTable();
1353 
1354  if (curcli_tmp3_cuentas != null && curcli_tmp3_cuentas.Rows.Count > 0)
1355  {
1356  /*
1357  // NIF cambiado comprobar por código ------- NIF cambiado comprobar por nombre
1358  ** presento les dades de l'exercici actual ------- ** presento les dades de l'exercici actual
1359  SELECT '5' AS tipo, .T.AS CLI_PROV, codigo, nombre, cif; ------- SELECT '7' AS tipo, .T.AS CLI_PROV, codigo, nombre, cif;
1360  FROM curcliRevisar_cuentas; ------- FROM curcliRevisar_cuentas;
1361  WHERE codigo IN(SELECT codigo FROM curcli_tmp3_cuentas); ------- WHERE nombre IN(SELECT nombre FROM curcli_tmp3_cuentas);
1362  INTO CURSOR curcli_tmp_cuentas ------- INTO CURSOR curcli_tmp_cuentas
1363  */
1364 
1365  DataRow[] rows = curcliRevisar_cuentas.Select("TIPO = '4'");
1366  foreach (DataRow r in rows)
1367  r["TIPO"] = "5";
1368 
1369  // Presento los datos del ejercicio actual
1370  // Cargo en una lista todos los (CODIGOS o NOMBRES) de tabla curcli_tmp3_cuentas
1371  var lstLista = curcli_tmp3_cuentas.Rows.OfType<DataRow>().Select(dr => Convert.ToString(dr[lcComprobar]).Trim()).ToList();
1372 
1373  // Compruebo en curcliRevisar_cuentas si están los (CODIGOS o NOMBRES) de la lista lstLista y cargo en tabla curcli_tmp_cuentas
1374  var curcli_tmp_cuentas = curcliRevisar_cuentas.AsEnumerable().Where(dr => lstLista.Contains(Convert.ToString(dr[lcComprobar]).Trim()))
1375  .Select(dr => dr).__CopyToDataTable();
1376 
1377  foreach (DataRow row in curcli_tmp_cuentas.Rows)
1378  {
1379  DataRow loRow = tmpRevisar_cuentas.NewRow();
1380  loRow = row;
1381  tmpRevisar_cuentas.Rows.Add(loRow.ItemArray);
1382  }
1383 
1384  _AddRecords(tmpRevisar_cuentas);
1385 
1386  rows = curcliRevisar_cuentas.Select("TIPO = '5'");
1387  foreach (DataRow r in rows)
1388  r["TIPO"] = "4";
1389 
1390  }
1391  }
1392  }
1393  }
1394 }
void _NIFNacional()
NIF nacional incorrectos
Clase parcial para listados, en esta definición se especificarán los métodos comunes para las demás c...
Definition: _clsListados.cs:61
override void _SetColumnCaptions(Dictionary< string, string > tldTranslate=null)
Override para determinar el nombre de la columna título
Listado de Clientes
Definition: Clientes.cs:23
void _NIFDistintos()
NIF distintos otros ejercicios
List< string > _FiltrosComprobar()
Determinar las comprobaciones de NIF a lanzar. Pueden venir como todas, una selección al azar o un d...
void _QueryNIFCuentasAEAT(ref DataTable dtDatos)
void _QueryNIFGestionAEAT(ref DataTable dtDatos)
override bool _Valid()
Override del _Valid para gestionar las opciones.
Entidad de relación (Columnas adicionales en listados)
Definition: DefEntidad.cs:14
void _LinqGestion(DataTable curcliRevisar, DataTable curtmp, string lcComprobar)
void _NIFValidadosAEAT()
NIF no validados con AEAT
void _NIFContable()
NIF no informado en mantenimiento de cuentas contables
void _ActivarMarcas(List< String > tiposRevisionSeleccionados)
Activar los marcas para lanzar los procesos de comprobación NIF seleccionados.
override DataTable _DataTable()
Override del método _DataTable para obtener los datos
override void _Navigate(String tcKeyNavigate, DataRow trRowList)
Método que se utiliza para codificar las posibles navegaciones de un listado
Clase sage.ew.objetos.ewcheckedlistbox
override void _SetDefaultValues(Dictionary< string, object > toControlsFiltros=null, Dictionary< string, object > toControlsOpciones=null)
Marcamos las opciones por defecto
bool _DeterminarQueRevisionesLanzar()
Determinar las comprobaciones de NIF a lanzar. Pueden venir como todas, una selección al azar o un d...
void _LinqCuentas(DataTable curcliRevisar_cuentas, DataTable curtmp_cuentas, string lcComprobar)
void _ActivarMarcas(bool valor, Int32 nEjercicios)
Activar/Desactivar TODAS las marcas para lanzar/no lanzar TODOS los procesos de comprobación NIF...
override void _SetColumnMasks()
Mascaras especiales
Listado de comprobación de NIF
void _NIFGestion()
NIF no informado en mantenimientos de gestión comercial