clsEmpresa.cs
1 # region Usings
2 using System;
3 using System.Collections.Generic;
4 using System.Linq;
5 using System.Data;
6 using System.Windows.Forms;
7 using System.ComponentModel;
8 using System.Net;
9 using System.Net.Sockets;
10 using System.IO;
11 using sage.ew.ewbase;
12 using sage.ew.db;
13 using sage.ew.global;
14 using sage.ew.functions;
15 using sage.ew.ewbase.Clases;
16 using sage.ew.formul.Forms;
17 using sage.ew.empresa.Forms;
18 using sage.ew.netvfp;
19 using sage.ew.interficies;
20 using sage.ew.functions.Clases;
21 using sage.ew.usuario;
22 using sage.ew.images.Properties;
23 using sage.ew.cliente;
24 using sage.ew.docsven;
25 using sage.ew.articulo;
26 using Sage.Zip;
27 using sage.ew.contabilidad;
29 using sage.ew.objetos;
30 using System.Text.RegularExpressions;
32 using sage.ew.ewbase.Attributes;
35 using System.Reflection;
36 using System.ComponentModel.DataAnnotations;
38 using Sage.ES.S50.Addons;
39 using sage._50;
40 using System.Diagnostics;
41 #endregion Usings
42 
43 namespace sage.ew.empresa
44 {
49  {
50 
51  #region PROPIEDADES
52 
56  public enum TipoFechaRegistro
57  {
61  [DescriptionAttribute("Fecha asiento")]
62  FechaAsiento = 1,
63 
67  [DescriptionAttribute("Fecha grabación")]
68  FechaGrabacion = 2
69  }
70 
74  public enum TipoEmpresa
75  {
79  Normal,
83  Consolidada
84  }
85 
86 
90  public enum ProrrataTipoRegimen
91  {
95  [DescriptionAttribute("General")]
96  General = 1,
97 
101  [DescriptionAttribute("Especial")]
102  Especial = 2
103  }
104 
108  public enum TipoPlanContable
109  {
113  [DescriptionAttribute("Normal")]
114  Normal = 1,
118  [DescriptionAttribute("Abreviado")]
119  Abreviado = 2,
123  [DescriptionAttribute("PYME")]
124  PYME = 3
125  }
126 
131  {
135  [DescriptionAttribute("Número de factura")]
136  NumeroFactura = 1,
140  [DescriptionAttribute("Código de cliente")]
141  CodigoCliente = 2,
145  [DescriptionAttribute("Nombre de cliente")]
146  NombreCliente = 3
147  }
148 
153  {
157  [DescriptionAttribute("Fecha de albarán")]
158  FechaAlbaran = 1,
162  [DescriptionAttribute("Número de albarán")]
163  NumeroAlbaran = 2,
167  [DescriptionAttribute("Código de cliente")]
168  CodigoCliente = 3,
172  [DescriptionAttribute("Nombre de cliente")]
173  NombreCliente = 4
174  }
175 
176 
177 
181  private bool _Sage50 = Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_sage50"));
182 
183  // Propiedades para indicar si hay que instalar/actualizar visores
184  private bool _lInstalarVisorFacturaE = false;
185  private bool _lInstalarVisorSII = false;
186  private bool _lInstalarVisorBabel = false;
187 
188  private bool bPCostes = Convert.ToBoolean(DB.SQLValor("empresa", "codigo", EW_GLOBAL._GetVariable("wc_empresa").ToString().Trim(), "pcostes", "GESTION"));
189 
190  //PE-83141
194  private Dictionary<string, ewCampo> _lisCamposCONTADORES = new Dictionary<string, ewCampo>();
198  private Dictionary<string, ewCampo> _lisCamposFACTUCNF = new Dictionary<string, ewCampo>();
202  private Dictionary<string, ewCampo> _lisCamposFLAGS = new Dictionary<string, ewCampo>();
206  private Dictionary<string, ewCampo> _lisCamposCODIGOS = new Dictionary<string, ewCampo>();
210  private Dictionary<string, ewCampo> _lisCamposCFGFACT = new Dictionary<string, ewCampo>();
214  private Dictionary<string, ewCampo> _lisCamposMODCONFI = new Dictionary<string, ewCampo>();
218  private Dictionary<string, ewCampo> _lisCamposMODCANARIAS = new Dictionary<string, ewCampo>();
222  private Dictionary<string, ewCampo> _lisCamposSOCIALFACEBOOK = new Dictionary<string, ewCampo>();
226  private Dictionary<string, ewCampo> _lisCamposSOCIALTWITTER = new Dictionary<string, ewCampo>();
230  private Dictionary<string, ewCampo> _lisCamposOTROSCFG = new Dictionary<string, ewCampo>();
234  private Dictionary<string, ewCampo> _lisCamposCONTACNF = new Dictionary<string, ewCampo>();
238  private Dictionary<string, ewCampo> _lisCamposCOMPRCNF = new Dictionary<string, ewCampo>();
242  private Dictionary<string, ewCampo> _lisCamposCFGBABEL = new Dictionary<string, ewCampo>();
246  private Dictionary<string, ewCampo> _lisCamposSOCIAL365 = new Dictionary<string, ewCampo>();
247 
251  private Dictionary<string, Int32> _Contadores;
255  private Dictionary<string, DataTable> _ContadoresDT;
260  private List<String> _oDefaultActiveOpcFlags = new List<String>(new String[] { "WL_IBAN", "WL_INTERM", "WL_FACTSER", "WL_OPTMSTOCK", "WL_NUMASIREF", "WL_ALMCOM", "WL_STOCKSDOCS", "WL_CTLHORA", "WL_COMPASI", "WL_COSTELIN", "WL_VALFPAG", "WL_HORASORDEN", "WL_COMPRABAJA", "WL_VALAMPLIA", "WL_IMGART", "WL_CUOTAS", "WL_RESULPASIU" });
261 
262  private List<IManteTRel> _ManteTRelLista = new List<IManteTRel>();
263 
264 
268  public DataTable _OpcionesGenerales
269  {
270  get
271  {
272  if (_oOpcionesGenerales == null)
273  {
274  _oOpcionesGenerales = _GetOpcionesGenerales(bHera: _Hera, tlS50: _Sage50);
275  }
276  else
277  {
278  if ((!(_oOpcionesGenerales is DataTable)) || _oOpcionesGenerales.Columns.Count == 0 || _oOpcionesGenerales.Rows.Count == 0 || Convert.ToString(_oOpcionesGenerales.Rows[0]["empresa"]) != _Codigo)
279  {
280  _oOpcionesGenerales = _GetOpcionesGenerales(bHera: _Hera, tlS50: _Sage50);
281  }
282  }
283  return _oOpcionesGenerales;
284  }
285  set
286  {
287  _oOpcionesGenerales = value;
288  }
289  }
290  private DataTable _oOpcionesGenerales = null;
291 
295  public DataTable _SerieContadorEmpresa = null;
299  public DataTable _SerieContadorTPV = null;
307  public DataTable _oContadoresIvaSoportado = null;
311  private LotesConfig _oLotesConfig = null;
312 
316  public bool _RefreshWidgets = false;
317 
322  public BackgroundWorker _Worker = null;
323 
327  public int _TotalPasosProgreso = 0;
328 
332  public int _PasoProgreso = 0;
333 
334  private ReportTemplates _oReportTemplates;
335 
339  public ReportTemplates _ReportTemplates
340  {
341  get
342  {
343  if (_oReportTemplates == null) _oReportTemplates = new ReportTemplates(_Codigo, true);
344  return _oReportTemplates;
345  }
346  }
347 
351  public bool _HayLotes
352  {
353  get
354  {
355  return (this._Hera || EW_GLOBAL._ModuloActivo("LOTES")) && (_LotesConfig != null && _LotesConfig._ModuloLotes);
356  }
357  }
358 
362  public Boolean _EsConsolidada
363  {
364  get
365  {
366  return _Tipo == Convert.ToString(TipoEmpresa.Consolidada);
367  }
368  }
369 
373  public LotesConfig _LotesConfig
374  {
375  get
376  {
377  if (_oLotesConfig == null)
378  {
379  _oLotesConfig = (EW_GLOBAL._GetVariable("wo_LotesConfig") != null) ? (LotesConfig)EW_GLOBAL._GetVariable("wo_LotesConfig") : null;
380  if (_oLotesConfig == null)
381  {
382  _oLotesConfig = new LotesConfig();
383  _oLotesConfig._Load();
384  }
385  }
386 
387  return _oLotesConfig;
388  }
389  }
390 
391  private bool _lIsLoad = false;
392 
396  public bool _IsLoad
397  {
398  get { return _lIsLoad; }
399  }
400 
404  public DataTable _ContadoresIvaSoportado
405  {
406  get
407  {
408 
409  if (_oContadoresIvaSoportado == null)
410  {
411  _oContadoresIvaSoportado = _LoadContadoresIvaSoportado();
412  }
413  else
414  {
415  if ((!(_oContadoresIvaSoportado is DataTable)) || _oContadoresIvaSoportado.Columns.Count == 0 || _oContadoresIvaSoportado.Rows.Count == 0 || Convert.ToString(_oContadoresIvaSoportado.Rows[0]["empresa"]) != this._Codigo)
416  _oContadoresIvaSoportado = _LoadContadoresIvaSoportado();
417 
418  }
419  return _oContadoresIvaSoportado;
420  }
421  set
422  {
423  _oContadoresIvaSoportado = value;
424  }
425  }
426 
430  public CodigosAutorizacionSII _CodigosAutorizacionSII
431  {
432  get
433  {
434  if (_oCodigosAutorizacionSII == null)
435  {
436  _oCodigosAutorizacionSII = new CodigosAutorizacionSII(_Codigo, 0);
437  _oCodigosAutorizacionSII._Load();
438  }
439  else
440  {
441  if (Convert.ToString(_oCodigosAutorizacionSII._Claves._Empresa) != this._Codigo)
442  {
443  _oCodigosAutorizacionSII._Claves._Empresa._Valor = this._Codigo;
444  _oCodigosAutorizacionSII._Load();
445  }
446  }
447  _AddManteTRel(_oCodigosAutorizacionSII);
448 
449  return _oCodigosAutorizacionSII;
450  }
451  }
452  private CodigosAutorizacionSII _oCodigosAutorizacionSII;
453 
454 
458  public CodigosAutorizacionSII _CodigosAutorizacionSIITerritorio2
459  {
460  get
461  {
462  if (_oCodigosAutorizacionSIITerritorio2 == null)
463  {
464  _oCodigosAutorizacionSIITerritorio2 = new CodigosAutorizacionSII(_Codigo, 1);
465  _oCodigosAutorizacionSIITerritorio2._Load();
466  }
467  else
468  {
469  if (Convert.ToString(_oCodigosAutorizacionSIITerritorio2._Claves._Empresa) != this._Codigo)
470  {
471  _oCodigosAutorizacionSIITerritorio2._Claves._Empresa._Valor = this._Codigo;
472  _oCodigosAutorizacionSIITerritorio2._Load();
473  }
474  }
475  _AddManteTRel(_oCodigosAutorizacionSIITerritorio2);
476 
477  return _oCodigosAutorizacionSIITerritorio2;
478  }
479  }
480  private CodigosAutorizacionSII _oCodigosAutorizacionSIITerritorio2;
481 
485  public class RepresentantesPersonasJuridicasModelo : ewManteTRel<RepresentantesPersonasJuridicasModelo.RepresentantePersonaJuridica, RepresentantesPersonasJuridicasModelo.Clave>
486  {
487  #region Constructores
492  {
493  CrearEstructura();
494  }
495 
501  public RepresentantesPersonasJuridicasModelo(string tcEmpresa, string tcTabla)
502  {
503  _Tabla = tcTabla;
504 
505  CrearEstructura();
506 
507  _Claves._Empresa._Valor = tcEmpresa;
508  }
509  #endregion Constructores
510 
511  #region Métodos privados
512  private void CrearEstructura()
516  {
517  // Definir la base
518  _DataBase = "Gestion";
519  _Condicion = "";
520 
521  // Omplim els camps i relació de propietats
522  _AddCampoTRel("_Empresa", "Empresa", ewCampoTRel.Visible.No, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.No);
523  _AddCampoTRel("_Linea", "Linea", ewCampoTRel.Visible.No, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.No);
524 
525  ewCampoTRel _Def_CIF = _AddCampoTRel("_Nif", "NIF", ewCampoTRel.Visible.Si, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.Si, "NIF");
526  _Def_CIF._AnchoColumna = 15;
527 
528  ewCampoTRel _Def_Nombre = _AddCampoTRel("_Nombre", "Nombre", ewCampoTRel.Visible.Si, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.Si, "Apellidos y nombre");
529  _Def_Nombre._AutoModeSizeColumna = DataGridViewAutoSizeColumnMode.Fill;
530 
531  ewCampoTRel _Def_Fecha = _AddCampoTRel("_Fecha_Poder", "Fecha_po", ewCampoTRel.Visible.Si, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.Si, "Fecha poder", gridColumnsTypes.Fecha);
532  _Def_Fecha._AnchoColumna = 8;
533 
534  ewCampoTRel _Def_Notaria = _AddCampoTRel("_Notaria", "Notaria", ewCampoTRel.Visible.Si, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.Si, "Notaria");
535  _Def_Notaria._AnchoColumna = 15;
536  }
537  #endregion Métodos privados
538 
539  #region Definición de la Clave de la Configuración de los modelos
540  public class Clave : IClaves
544  {
548  public ClaveTRel _Empresa { get; set; }
549 
553  public ClaveTRel _Linea { get; set; }
554 
558  public Clave()
559  {
560  // Definim les propietats de cada una de les claus
561  _Empresa = new ClaveTRel();
562  _Empresa._EsFiltro = true; // Actuarà com a filtre per recuperar els registres
563 
564  _Linea = new ClaveTRel();
565  _Linea._EsFiltro = false;
566  _Linea._EsCampoLinea = true;
567  }
568  }
569  #endregion Definición de la Clave de la Configuración de los modelos
570 
571  #region Definición de la estructura ILinTRel de la Configuración de los modelos
572  public class RepresentantePersonaJuridica : ILinTRel
576  {
577  #region Propiedades privadas
578  private string _cEmpresa = string.Empty;
579  private string _cNif = string.Empty;
580  private string _cNombre = string.Empty;
581  private DateTime _dFecha_Poder = DateTime.Now;
582  private string _cNotaria = string.Empty;
583 
584  private int _nLinea = 1;
585  private RepresentantesPersonasJuridicasModelo _oParent;
586  #endregion Propiedades privadas
587 
588  #region Constructor
589  public RepresentantePersonaJuridica()
593  {
594  }
595  #endregion Constructor
596 
597  #region Propiedades públicas
598  public string _Empresa
602  {
603  get { return _cEmpresa; }
604  set { _cEmpresa = value; }
605  }
606 
610  public string _Nif
611  {
612  get { return _cNif; }
613  set
614  {
615  if (_ValidarNIF(ref value))
616  _cNif = value;
617  }
618  }
619 
623  public string _Nombre
624  {
625  get { return _cNombre; }
626  set { _cNombre = value; }
627  }
628 
632  public DateTime _Fecha_Poder
633  {
634  get { return _dFecha_Poder; }
635  set { _dFecha_Poder = value; }
636  }
637 
638 
642  public string _Notaria
643  {
644  get { return _cNotaria; }
645  set { _cNotaria = value; }
646  }
647 
651  public int _Linea
652  {
653  get { return _nLinea; }
654  set { _nLinea = value; }
655  }
656 
660  public object _Parent
661  {
662  get { return _oParent; }
663  set { _oParent = (RepresentantesPersonasJuridicasModelo)value; }
664  }
665  #endregion Propiedades públicas
666 
667  #region Métodos públicos
668  public bool Fila_Plena()
673  {
674  bool lbFilaPlena;
675 
676  lbFilaPlena = !string.IsNullOrWhiteSpace(_cNif) && !string.IsNullOrWhiteSpace(_cNombre) && !string.IsNullOrWhiteSpace(_cNotaria);
677 
678  return lbFilaPlena;
679  }
680  #endregion Métodos públicos
681 
682  #region Métodos privados
683  private bool _ValidarNIF(ref string tcNif)
689  {
690  tcNif = tcNif.Trim();
691  string lcOldNif = _cNif.Trim();
692 
693  if (_oParent._bIsLoading || tcNif == lcOldNif)
694  return true;
695 
696  bool llOk = false;
697 
698  llOk = FUNCTIONS._ValidarNIF(ref tcNif, lcOldNif);
699 
700  return llOk;
701  }
702  #endregion Métodos privados
703  }
704  #endregion Definición de la estructura ILinTRel de la Configuración de los modelos
705  }
706 
710  public class ContadoresSerie : ewManteTRel<ContadoresSerie.ContadorSerie, ContadoresSerie.Clave>
711  {
712  private bool ContadoresTPV = false;
713 
717  public String _CodigoEmpresa
718  {
719  get
720  {
721  return _ewMantePrincipal._Codigo;
722  }
723  set
724  {
725  _cCodigoEmpresa = value;
726  }
727  }
728  private String _cCodigoEmpresa;
729 
734  public ContadoresSerie(String tcCodigoEmpresa)
735  {
736  _CodigoEmpresa = tcCodigoEmpresa;
737  CrearEstructura();
738  }
739 
745  public ContadoresSerie(String tcCodigoEmpresa,bool contadoresTPV = false)
746  {
747  ContadoresTPV = contadoresTPV;
748 
749  _CodigoEmpresa = tcCodigoEmpresa;
750  CrearEstructura();
751  }
752 
756  private void CrearEstructura()
757  {
758 
759  // Definir la base
760  _DataBase = "GESTION";
761  _Tabla = "SERIES";
762  _Condicion = "";
763 
764  // _lSoloContabilidad //ewCampoTRel.Visible loVisible = _lSoloContabilidad
765  // Omplim els camps i relació de propietats
766  ewMascara loMascara = new ewMascara() { _Rango_Min = 0, _Rango_Max = Convert.ToBoolean(sage.ew.global.EW_GLOBAL._GetVariable("wl_hera")) ? 200000000 : 99999999 };
767  loMascara._Mascara_Net = "";
768 
769  _AddCampoTRel("_Empresa", "EMPRESA", ewCampoTRel.Visible.No, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.No, "Nombre");
770  _AddCampoTRel("_Serie", "CODIGO", ewCampoTRel.Visible.No, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.No, "Nombre");
771  _AddCampoTRel("_Nombre", "NOMBRE", ewCampoTRel.Visible.Si, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.No, DataGridViewAutoSizeColumnMode.Fill, "Nombre");
772 
773  if (!ContadoresTPV)
774  {
775  _AddCampoTRel("_Albaranes", "ALBARANES", ewCampoTRel.Visible.Si, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.Si, "Albaranes", gridColumnsTypes.Entero, loMascara);
776  _AddCampoTRel("_Pedidos", "PEDIDOS", ewCampoTRel.Visible.Si, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.Si, "Pedidos", gridColumnsTypes.Entero, loMascara);
777  _AddCampoTRel("_Presupuestos", "PRESUPUESTOS", ewCampoTRel.Visible.Si, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.Si, "Presupuestos", gridColumnsTypes.Entero, loMascara);
778  _AddCampoTRel("_Depositos", "DEPOSITOS", ewCampoTRel.Visible.Si, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.Si, "Depósitos", gridColumnsTypes.Entero, loMascara);
779  }
780  else
781  {
782  _AddCampoTRel("_Tickets", "TICKETS", ewCampoTRel.Visible.Si, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.Si, "Tickets", gridColumnsTypes.Entero, loMascara);
783 
784  }
785  _AddCampoTRel("_Facturas", "FACTURAS", ewCampoTRel.Visible.Si, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.Si, "Facturas", gridColumnsTypes.Entero, loMascara);
786  }
787 
791  public override void _Load()
792  {
793  String lcSql;
794  DataTable loDt;
795 
796  string camposSelect = "";
797  string sentenciaJoin = "";
798 
799  // Ejecutar la extensión correspondiente de los addons disponibles
800  if (!this._Addons_Load(TipoExecute.Before, ref camposSelect, ref sentenciaJoin))
801  return;
802 
803  lcSql = "SELECT CODIGO + ' - ' + NOMBRE as NOMBRE, ";
804 
805  if (!ContadoresTPV)
806  {
807  lcSql += " (SELECT ISNULL(CONTADOR, 0) FROM {2} WHERE EMPRESA='{0}' AND SERIE= l.CODIGO AND TIPODOC = 1 ) AS ALBARANES, "; // PE-90860
808  lcSql += " (SELECT ISNULL(CONTADOR, 0) FROM {2} WHERE EMPRESA='{0}' AND SERIE = l.CODIGO AND TIPODOC=2 ) AS PEDIDOS, ";
809  lcSql += " (SELECT ISNULL(CONTADOR, 0) FROM {2} WHERE EMPRESA='{0}' AND SERIE = l.CODIGO AND TIPODOC=3 ) AS PRESUPUESTOS, ";
810  lcSql += " (SELECT ISNULL(CONTADOR, 0) FROM {2} WHERE EMPRESA='{0}' AND SERIE = l.CODIGO AND TIPODOC=4 ) AS DEPOSITOS, ";
811  lcSql += " (SELECT ISNULL(CONTADOR, 0) FROM {2} WHERE EMPRESA='{0}' AND SERIE = l.CODIGO AND TIPODOC=7 ) AS FACTURAS ";
812  }
813  else
814  {
815  lcSql += " (SELECT ISNULL(CONTADOR, 0) FROM {2} WHERE EMPRESA='{0}' AND SERIE = l.CODIGO AND TIPODOC = 6 ) AS TICKETS, ";
816  lcSql += " (SELECT ISNULL(CONTADOR, 0) FROM {2} WHERE EMPRESA='{0}' AND SERIE = l.CODIGO AND TIPODOC = 8 ) AS FACTURAS ";
817  }
818  lcSql += " , CODIGO, '{0}' as EMPRESA FROM {1} AS l ORDER BY CODIGO ";
819 
820  lcSql = String.Format(lcSql, _CodigoEmpresa, DB.SQLDatabase("COMUNES", "LETRAS"), DB.SQLDatabase("GESTION", "SERIES"));
821 
822  loDt = _LoadItems(lcSql, "");
823 
824  // Ejecutar la extensión correspondiente de los addons disponibles. Es importante que se ejecute antes del _Refrescar_Form.
825  string lcCamps = "";
826  string lcFrom = "";
827  string lcWhere = "";
828  string lcOrderBy = "";
829  _Addons_Load(TipoExecute.After, ref lcCamps, ref lcFrom, lcWhere, lcOrderBy);
830  }
831 
836  public override bool _Save()
837  {
838  String lcSql = "";
839 
840  // Guardar de las extensiones
841  if (!_Addons_Save(TipoExecute.Before)) return false;
842 
843  foreach (ContadorSerie loItem in _Items)
844  {
845  if (!ContadoresTPV)
846  {
847  lcSql += String.Format("UPDATE {0} SET CONTADOR = '{1}' WHERE EMPRESA = '{2}' AND SERIE = '{3}' AND TIPODOC = {4} ", DB.SQLDatabase("GESTION", "SERIES"), loItem._Albaranes, _CodigoEmpresa, loItem._Serie, "1") + ";";
848  lcSql += String.Format("UPDATE {0} SET CONTADOR = '{1}' WHERE EMPRESA = '{2}' AND SERIE = '{3}' AND TIPODOC = {4} ", DB.SQLDatabase("GESTION", "SERIES"), loItem._Pedidos, _CodigoEmpresa, loItem._Serie, "2") + ";";
849  lcSql += String.Format("UPDATE {0} SET CONTADOR = '{1}' WHERE EMPRESA = '{2}' AND SERIE = '{3}' AND TIPODOC = {4} ", DB.SQLDatabase("GESTION", "SERIES"), loItem._Presupuestos, _CodigoEmpresa, loItem._Serie, "3") + ";";
850  lcSql += String.Format("UPDATE {0} SET CONTADOR = '{1}' WHERE EMPRESA = '{2}' AND SERIE = '{3}' AND TIPODOC = {4} ", DB.SQLDatabase("GESTION", "SERIES"), loItem._Depositos, _CodigoEmpresa, loItem._Serie, "4") + ";";
851  lcSql += String.Format("UPDATE {0} SET CONTADOR = '{1}' WHERE EMPRESA = '{2}' AND SERIE = '{3}' AND TIPODOC = {4} ", DB.SQLDatabase("GESTION", "SERIES"), loItem._Facturas, _CodigoEmpresa, loItem._Serie, "7") + ";";
852  }
853  else
854  {
855  lcSql += String.Format("UPDATE {0} SET CONTADOR = '{1}' WHERE EMPRESA = '{2}' AND SERIE = '{3}' AND TIPODOC = {4} ", DB.SQLDatabase("GESTION", "SERIES"), loItem._Tickets, _CodigoEmpresa, loItem._Serie, "6") + ";";
856  lcSql += String.Format("UPDATE {0} SET CONTADOR = '{1}' WHERE EMPRESA = '{2}' AND SERIE = '{3}' AND TIPODOC = {4} ", DB.SQLDatabase("GESTION", "SERIES"), loItem._Facturas, _CodigoEmpresa, loItem._Serie, "8") + ";";
857  }
858  }
859 
860  // Guardar de las extensiones
861  _Addons_Save(TipoExecute.After);
862 
863  return !String.IsNullOrWhiteSpace(lcSql) ? DB.SQLExec(lcSql) : true;
864  }
865 
866  #region Definición de la Clave
867  public class Clave : IClaves
871  {
875  public ClaveTRel _Empresa { get; set; }
876 
880  public ClaveTRel _Serie { get; set; }
881 
885  public Clave()
886  {
887  _Empresa = new ClaveTRel();
888  _Empresa._EsFiltro = true;
889 
890  _Serie = new ClaveTRel();
891  _Serie._EsFiltro = false;
892  }
893  }
894 
895  #endregion Definición de la Clave
896 
897  #region Definición de la estructura ILinTRel
898  public class ContadorSerie : ILinTRel
902  {
903  #region Propiedades privadas
904  private string _cEmpresa = string.Empty;
905  private Int32 _nContadorAlbaranes = 0;
906  private Int32 _nContadorPedidos = 0;
907  private Int32 _nContadorFacturas = 0;
908  private Int32 _nContadorPresupuestos = 0;
909  private Int32 _nContadorDepositos = 0;
910  private Int32 _nContadorTickets = 0;
911 
912  private string _cDefinicion = string.Empty;
913  private string _cSerie = string.Empty;
914  private bool _lDeleted = false;
915  private ContadoresSerie _oParent;
916  #endregion Propiedades privadas
917 
918  #region Constructor
919  public ContadorSerie()
923  {
924  }
925  #endregion Constructor
926 
927  #region Propiedades públicas
928  public string _Empresa
932  {
933  get { return _cEmpresa; }
934  set { _cEmpresa = value; }
935  }
936 
940  public string _Serie
941  {
942  get { return _cSerie; }
943  set { _cSerie = value; }
944  }
945 
949  public string _Nombre
950  {
951  get { return _cDefinicion; }
952  set { _cDefinicion = value; }
953  }
954 
958  public Int32 _Albaranes
959  {
960  get { return _nContadorAlbaranes; }
961  set { _nContadorAlbaranes = value; }
962  }
963 
967  public Int32 _Depositos
968  {
969  get { return _nContadorDepositos; }
970  set { _nContadorDepositos = value; }
971  }
972 
973 
977  public Int32 _Presupuestos
978  {
979  get { return _nContadorPresupuestos; }
980  set { _nContadorPresupuestos = value; }
981  }
982 
986  public Int32 _Facturas
987  {
988  get { return _nContadorFacturas; }
989  set { _nContadorFacturas = value; }
990  }
991 
995  public Int32 _Pedidos
996  {
997  get { return _nContadorPedidos; }
998  set { _nContadorPedidos = value; }
999  }
1000 
1004  public Int32 _Tickets
1005  {
1006  get { return _nContadorTickets; }
1007  set { _nContadorTickets = value; }
1008  }
1009 
1013  public bool _Deleted
1014  {
1015  get { return _lDeleted; }
1016  set { _lDeleted = value; }
1017  }
1018 
1022  public object _Parent
1023  {
1024  get { return _oParent; }
1025  set { _oParent = (ContadoresSerie)value; }
1026  }
1027  #endregion Propiedades públicas
1028 
1029  #region Métodos públicos
1030  public bool Fila_Plena()
1035  {
1036  bool lbFilaPlena;
1037 
1038  lbFilaPlena = !string.IsNullOrWhiteSpace(_cDefinicion) ;
1039 
1040  return lbFilaPlena;
1041  }
1042  #endregion Métodos públicos
1043  }
1044 
1045 
1046  #endregion Definición de la estructura ILinTRel de la Configuración de los modelos
1047 
1048  }
1049 
1050  #region Diccionario privado de los códigos de las actividades
1051  private static Dictionary<string, string> _codigosActividadesTC
1056  {
1057  get
1058  {
1059  Dictionary<string, string> dictCodigosActividad = new Dictionary<string, string>();
1060 
1061  dictCodigosActividad.Add("A01", "A01 - Alquiler de locales");
1062  dictCodigosActividad.Add("A02", "A02 - Ganadería independiente");
1063  dictCodigosActividad.Add("A03", "A03 - Resto empresariales");
1064  dictCodigosActividad.Add("A04", "A04 - Artísticas y deportivas");
1065  dictCodigosActividad.Add("A05", "A05 - Profesionales");
1066  dictCodigosActividad.Add("B01", "B01 - Cultivo de la tierra cuya finalidad es obtener productos vegetales(como verduras, frutos, granos y pastos) para la alimentación del ser humano y del ganado.");
1067  dictCodigosActividad.Add("B02", "B02 - Actividad ganadera dependiente");
1068  dictCodigosActividad.Add("B03", "B03 - Actividad forestal");
1069  dictCodigosActividad.Add("B04", "B04 - Producción del mejillón en batea");
1070  dictCodigosActividad.Add("B05", "B05 - Actividad pesquera");
1071  dictCodigosActividad.Add("B06", "B06 - Actividades no sujetas a IAE");
1072  dictCodigosActividad.Add("C", "C - Actividades no iniciadas");
1073 
1074  return dictCodigosActividad;
1075  }
1076  }
1077  #endregion Diccionario privado de los códigos de las actividades
1078 
1082  public class ActividadesModelo : ewManteTRel<ActividadesModelo.ActividadModelo, ActividadesModelo.Clave>
1083  {
1084  #region Propiedades privadas
1085  private bool _lIgic = false;
1086  #endregion Propiedades privadas
1087 
1088  #region Constructores
1089  public ActividadesModelo()
1093  {
1094  CrearEstructura();
1095  }
1096 
1104  public ActividadesModelo(string tcEmpresa, string tcModelo, string tcTabla, bool tlIgic)
1105  {
1106  _Tabla = tcTabla;
1107  _lIgic = tlIgic;
1108 
1109  CrearEstructura();
1110 
1111  _Claves._Empresa._Valor = tcEmpresa;
1112  }
1113  #endregion Constructores
1114 
1115  #region Métodos privados
1116  private string DescripcionTipoIva()
1121  {
1122  if (_lIgic)
1123  return "IGIC";
1124  else
1125  return "IVA";
1126  }
1127 
1131  private void CrearEstructura()
1132  {
1133  // Definir la base
1134  _DataBase = "Gestion";
1135  _Condicion = "";
1136 
1137  // Omplim els camps i relació de propietats
1138  _AddCampoTRel("_Empresa", "Empresa", ewCampoTRel.Visible.No, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.No);
1139  _AddCampoTRel("_Linea", "Linea", ewCampoTRel.Visible.No, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.No);
1140 
1141  AddColumnaActividades();
1142 
1143  ewCampoTRel _Def_Definicion = _AddCampoTRel("_Definicion", "Definicion", ewCampoTRel.Visible.Si, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.Si, "Definición");
1144  _Def_Definicion._AnchoColumna = 15;
1145 
1146  if (_lIgic) // En los modelos de IGIC utilizamos la claves de las actividades
1147  AddColumnaClaves();
1148  else
1149  AddColumnaCodigosActividad(); // En los modelos de IVA arahora se utilizan los códigos de las actividades
1150 
1151  ewCampoTRel _Def_Epigrafe = _AddCampoTRel("_Epigrafe", "Epigrafe", ewCampoTRel.Visible.Si, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.Si, "Epígrafe");
1152  _Def_Epigrafe._AnchoColumna = 8;
1153 
1154  if (!_lIgic) // Añadimos = mente las claves de las actividades. Al final ya que no se utilizan, lo dejamos visible para ejercicios anteriores temporalmente
1155  AddColumnaClaves();
1156 
1157  if (_lIgic) AddColumnaRegimenes();
1158  }
1159 
1163  private void AddColumnaActividades()
1164  {
1165  List<object> lstActividades = new List<object>();
1166  var values = Enum.GetValues(typeof(eActividadesModelos)).Cast<eActividadesModelos>();
1167  foreach (eActividadesModelos item in values)
1168  lstActividades.Add((object)FUNCTIONS._GetEnumDescription(item));
1169 
1170  // Campo real de la BD que ocultamos pero actualizamos
1171  _AddCampoTRel("_Actividad", "Actividad", ewCampoTRel.Visible.No, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.No);
1172 
1173  // Campo visible solamente. Como tal no se actualiza, pero el Set de la propiedad actualiza el valor de la propiedad _Actividad
1174  ewCampoTRel _Def_Actividad = _AddCampoTRel("_ActividadCombo", "", ewCampoTRel.Visible.Si, ewCampoTRel.Updatable.No, ewCampoTRel.Editable.Si, "Actividad", gridColumnsTypes.Combo, toComboValues: lstActividades);
1175  _Def_Actividad._AnchoColumna = 10;
1176  }
1177 
1181  private void AddColumnaClaves()
1182  {
1183  List<object> lstClaves = new List<object>();
1184 
1185  if (_lIgic)
1186  {
1187  var values = Enum.GetValues(typeof(eClavesActividadesModelosCanarias)).Cast<eClavesActividadesModelosCanarias>();
1188 
1189  foreach (eClavesActividadesModelosCanarias item in values)
1190  lstClaves.Add((object)FUNCTIONS._GetEnumDescription(item));
1191  }
1192  else
1193  {
1194  var values = Enum.GetValues(typeof(eClavesActividadesModelosTC)).Cast<eClavesActividadesModelosTC>();
1195 
1196  foreach (eClavesActividadesModelosTC item in values)
1197  lstClaves.Add((object)FUNCTIONS._GetEnumDescription(item));
1198  }
1199 
1200  // Campo real de la BD que ocultamos pero actualizamos
1201  _AddCampoTRel("_Clave", "Clave", ewCampoTRel.Visible.No, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.No);
1202 
1203  // Campo visible solamente. Como tal no se actualiza, pero el Set de la propiedad actualiza el valor de la propiedad _Actividad
1204  ewCampoTRel _Def_Clave = _AddCampoTRel("_ClaveCombo", "", ewCampoTRel.Visible.Si, ewCampoTRel.Updatable.No, ewCampoTRel.Editable.Si, "Clave", gridColumnsTypes.Combo, toComboValues: lstClaves);
1205  {
1206  _Def_Clave._AnchoColumna = 20;
1207  }
1208  }
1209 
1213  private void AddColumnaCodigosActividad()
1214  {
1215  List<object> lstClaves = new List<object>();
1216 
1217  foreach (KeyValuePair<string,string> kpvActividad in _codigosActividadesTC)
1218  lstClaves.Add((object)kpvActividad.Value);
1219 
1220  // Campo real de la BD que ocultamos pero actualizamos
1221  _AddCampoTRel("_CodigoActividad", "cod_acti", ewCampoTRel.Visible.No, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.No);
1222 
1223  // Campo visible solamente. Como tal no se actualiza, pero el Set de la propiedad actualiza el valor de la propiedad _CodigoActividad
1224  ewCampoTRel _Def_Clave = _AddCampoTRel("_CodigoActividadCombo", "", ewCampoTRel.Visible.Si, ewCampoTRel.Updatable.No, ewCampoTRel.Editable.Si, "Código de actividad", gridColumnsTypes.Combo, toComboValues: lstClaves);
1225  {
1226  _Def_Clave._AnchoColumna = 20;
1227  }
1228  }
1229 
1233  private void AddColumnaRegimenes()
1234  {
1235  List<object> lstRegimenes = new List<object>();
1236  var values = Enum.GetValues(typeof(eRegimenesActividadesModelosCanarias)).Cast<eRegimenesActividadesModelosCanarias>();
1237  foreach (eRegimenesActividadesModelosCanarias item in values)
1238  lstRegimenes.Add((object)FUNCTIONS._GetEnumDescription(item));
1239 
1240  // Campo real de la BD que ocultamos pero actualizamos
1241  _AddCampoTRel("_Regimen", "Regimen", ewCampoTRel.Visible.No, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.No);
1242 
1243  // Campo visible solamente. Como tal no se actualiza, pero el Set de la propiedad actualiza el valor de la propiedad _Actividad
1244  ewCampoTRel _Def_Regimen = _AddCampoTRel("_RegimenCombo", "", ewCampoTRel.Visible.Si, ewCampoTRel.Updatable.No, ewCampoTRel.Editable.Si, "Régimen", gridColumnsTypes.Combo, toComboValues: lstRegimenes);
1245  _Def_Regimen._AnchoColumna = 20;
1246  }
1247 
1252  private void Actividades_ManteGrid__DataSource_Row_New_Event(int tnInsertLinea)
1253  {
1254  List<ActividadModelo> lstExiste = _Items.Where(tipo => tipo._Actividad == 1 && !tipo._Deleted && tipo != _CurrentItem).ToList<ActividadModelo>();
1255  if (lstExiste != null && lstExiste.Count > 0)
1256  _CurrentItem._Actividad = 2;
1257  else
1258  _CurrentItem._Actividad = 1;
1259  }
1260 
1265  private void Actividades_ManteGrid__DataSource_Row_Delete_Event(DataGridViewRow trRowDelete)
1266  {
1267  if (trRowDelete.Index > 0)
1268  ((ActividadModelo)trRowDelete.DataBoundItem)._Deleted = true;
1269  }
1270 
1275  private void ActividadPrincipal(ActividadModelo toActividad)
1276  {
1277  List<ActividadModelo> lstExiste = _Items.Where(tipo => tipo._Actividad == 1 && tipo._Linea != toActividad._Linea && !tipo._Deleted).ToList<ActividadModelo>();
1278  if (lstExiste != null && lstExiste.Count > 0)
1279  lstExiste[0]._Actividad = 2;
1280  }
1281 
1282  private Boolean _ValidaActividadPrincipal(ActividadModelo toActividad, eActividadesModelos loActividad)
1283  {
1284  if (loActividad == eActividadesModelos.ActividadPrincipal)
1285  {
1286  List<ActividadModelo> lstExiste = _Items.Where(tipo => tipo._Actividad == 1 && tipo._Linea != toActividad._Linea && !tipo._Deleted).ToList<ActividadModelo>();
1287 
1288  if (lstExiste != null && lstExiste.Count > 0)
1289  {
1290  _Show_Error_Message("Únicamente se puede indicar una actividad principal.");
1291  return false;
1292  }
1293  }
1294 
1295  return true;
1296  }
1297 
1298  #endregion Métodos privados
1299 
1300  #region Métodos override
1301  protected override void _Configurar_Grid()
1305  {
1306  base._Configurar_Grid();
1307  if (_ManteGrid != null)
1308  {
1309  foreach (DataGridViewComboBoxColumn loDataGridViewColumn in _ManteGrid._Grid.Columns.OfType<DataGridViewComboBoxColumn>())
1310  {
1311  switch (loDataGridViewColumn.Name)
1312  {
1313  case "_ActividadCombo":
1314  loDataGridViewColumn.DropDownWidth = 75;
1315  break;
1316 
1317  case "_RegimenCombo":
1318  loDataGridViewColumn.DropDownWidth = 450;
1319  break;
1320 
1321  default:
1322  loDataGridViewColumn.DropDownWidth = _lIgic ? 500 : 1100;
1323  break;
1324  }
1325  }
1326 
1327  _ManteGrid._DataSource_Row_New_Event += Actividades_ManteGrid__DataSource_Row_New_Event;
1328  _ManteGrid._DataSource_Row_Delete_Event += Actividades_ManteGrid__DataSource_Row_Delete_Event;
1329  }
1330  }
1331  #endregion Métodos override
1332 
1333  #region Definición de la Clave de la Configuración de los modelos
1334  public class Clave : IClaves
1338  {
1342  public ClaveTRel _Empresa { get; set; }
1343 
1347  public ClaveTRel _Linea { get; set; }
1348 
1352  public Clave()
1353  {
1354  // Definim les propietats de cada una de les claus
1355  _Empresa = new ClaveTRel();
1356  _Empresa._EsFiltro = true; // Actuarà com a filtre per recuperar els registres
1357 
1358  _Linea = new ClaveTRel();
1359  _Linea._EsFiltro = false;
1360  _Linea._EsCampoLinea = true;
1361  }
1362  }
1363  #endregion Definición de la Clave de la Configuración de los modelos
1364 
1365  #region Definición de la estructura ILinTRel de la Configuración de los modelos
1366  public class ActividadModelo : ILinTRel
1370  {
1371  #region Propiedades privadas
1372  private string _cEmpresa = string.Empty;
1373  private string _cActividad = string.Empty;
1374  private int _nActividad = 1;
1375  private int _nClave = 1;
1376  private int _nRegimen = 1;
1377  private string _cEpigrafe = string.Empty;
1378  private string _cDefinicion = string.Empty;
1379  private int _nLinea = 1;
1380  private bool _lDeleted = false;
1381  private ActividadesModelo _oParent;
1382  #endregion Propiedades privadas
1383 
1384  #region Constructor
1385  public ActividadModelo()
1389  {
1390  }
1391  #endregion Constructor
1392 
1393  #region Propiedades públicas
1394  public string _Empresa
1398  {
1399  get { return _cEmpresa; }
1400  set { _cEmpresa = value; }
1401  }
1402 
1406  public int _Actividad
1407  {
1408  get { return _nActividad; }
1409  set { _nActividad = value; }
1410  }
1411 
1416  public string _ActividadCombo
1417  {
1418  get
1419  {
1420  if (Enum.IsDefined(typeof(eActividadesModelos), _nActividad))
1421  return FUNCTIONS._GetEnumDescription((eActividadesModelos)_nActividad);
1422  return "";
1423  }
1424  set
1425  {
1426  if (value == null) value = "";
1427 
1428  eActividadesModelos loActividad = FUNCTIONS._GetEnumFromDescription<eActividadesModelos>(value, eActividadesModelos.ActividadPrincipal);
1429 
1430  if(_oParent._ValidaActividadPrincipal(this, loActividad))
1431  {
1432  _nActividad = (int)loActividad;
1433  }
1434  else
1435  {
1436  _nActividad = (int)eActividadesModelos.OtrasActividades;
1437  }
1438  }
1439  }
1440 
1444  public string _CodigoActividad
1445  {
1446  get { return _cActividad; }
1447  set { _cActividad = value; }
1448  }
1449 
1450 
1455  public string _CodigoActividadCombo
1456  {
1457  get
1458  {
1459  if (_cActividad != null && _codigosActividadesTC.ContainsKey(_cActividad))
1460  return _codigosActividadesTC[_cActividad];
1461  else
1462  return "";
1463  }
1464  set
1465  {
1466  if (value == null) value = "";
1467 
1468  string lcActividad = string.Empty;
1469 
1470  if (_codigosActividadesTC.ContainsValue(value))
1471  lcActividad = _codigosActividadesTC.FirstOrDefault(v => v.Value == value).Key;
1472 
1473  _cActividad = lcActividad;
1474  }
1475  }
1476 
1480  public int _Clave
1481  {
1482  get { return _nClave; }
1483  set { _nClave = value; }
1484  }
1485 
1490  public string _ClaveCombo
1491  {
1492  get
1493  {
1494  if (_oParent._lIgic)
1495  {
1496  if (Enum.IsDefined(typeof(eClavesActividadesModelosCanarias), _nClave))
1497  return FUNCTIONS._GetEnumDescription((eClavesActividadesModelosCanarias)_nClave);
1498  }
1499  else
1500  {
1501  if (Enum.IsDefined(typeof(eClavesActividadesModelosTC), _nClave))
1502  return FUNCTIONS._GetEnumDescription((eClavesActividadesModelosTC)_nClave);
1503  }
1504  return "";
1505  }
1506  set
1507  {
1508  if (value == null) value = "";
1509 
1510  Enum loClave;
1511 
1512  if (_oParent._lIgic)
1513  {
1514  loClave = FUNCTIONS._GetEnumFromDescription<eClavesActividadesModelosCanarias>(value, eClavesActividadesModelosCanarias.IAEEmpresariales);
1515  }
1516  else
1517  {
1518  loClave = FUNCTIONS._GetEnumFromDescription<eClavesActividadesModelosTC>(value, eClavesActividadesModelosTC.IAEEmpresariales);
1519  }
1520  _nClave = Convert.ToInt32(loClave);
1521  }
1522  }
1523 
1528  public string _Epigrafe
1529  {
1530  get { return _cEpigrafe; }
1531  set
1532  {
1533  if (!this._oParent._bIsLoading && !string.IsNullOrWhiteSpace(value) && this._oParent != null && !this._oParent._bIsLoading)
1534  {
1535  if (!Regex.Match(value.Trim(), @"^\d+(?:[.]\d+)?$").Success)
1536  {
1537  _oParent._Show_Error_Message("En la epígrafe únicamente se permiten caracteres numéricos, el '.' y debe terminar en carácter numérico.");
1538  value = _cEpigrafe;
1539  }
1540  }
1541 
1542  _cEpigrafe = value;
1543  }
1544  }
1545 
1546 
1547 
1551  public int _Regimen
1552  {
1553  get { return _nRegimen; }
1554  set { _nRegimen = value; }
1555  }
1556 
1561  public string _RegimenCombo
1562  {
1563  get
1564  {
1565  if (Enum.IsDefined(typeof(eRegimenesActividadesModelosCanarias), _nRegimen))
1566  return FUNCTIONS._GetEnumDescription((eRegimenesActividadesModelosCanarias)_nRegimen);
1567  return "";
1568  }
1569  set
1570  {
1571  if (value == null)
1572  value = "";
1573  eRegimenesActividadesModelosCanarias loRegimen = FUNCTIONS._GetEnumFromDescription<eRegimenesActividadesModelosCanarias>(value, eRegimenesActividadesModelosCanarias.Ordinario);
1574  _nRegimen = (int)loRegimen;
1575  }
1576  }
1577 
1581  public string _Definicion
1582  {
1583  get { return _cDefinicion; }
1584  set { _cDefinicion = value; }
1585  }
1586 
1590  public int _Linea
1591  {
1592  get { return _nLinea; }
1593  set { _nLinea = value; }
1594  }
1595 
1599  public bool _Deleted
1600  {
1601  get { return _lDeleted; }
1602  set { _lDeleted = value; }
1603  }
1604 
1608  public object _Parent
1609  {
1610  get { return _oParent; }
1611  set { _oParent = (ActividadesModelo)value; }
1612  }
1613  #endregion Propiedades públicas
1614 
1615  #region Métodos públicos
1616  public bool Fila_Plena()
1621  {
1622  bool lbFilaPlena;
1623 
1624  lbFilaPlena = !string.IsNullOrWhiteSpace(_cDefinicion) || !string.IsNullOrWhiteSpace(_cEpigrafe);
1625 
1626  return lbFilaPlena;
1627  }
1628  #endregion Métodos públicos
1629  }
1630 
1631 
1632  #endregion Definición de la estructura ILinTRel de la Configuración de los modelos
1633  }
1634 
1638  public class TiposImpuestosModelo : ewManteTRel<TiposImpuestosModelo.TipoImpuestoModelo, TiposImpuestosModelo.Clave>
1639  {
1640  #region Propiedades privadas
1641  private bool _lIgic = false;
1642  #endregion Propiedades privadas
1643 
1644  #region Constructores
1645  public TiposImpuestosModelo()
1649  {
1650  CrearEstructura();
1651  }
1652 
1659  public TiposImpuestosModelo(string tcEmpresa, string tcModelo, bool tlIgic)
1660  {
1661  CrearEstructura();
1662 
1663  _Claves._Empresa._Valor = tcEmpresa;
1664  _Claves._Modelo._Valor = tcModelo;
1665  }
1666  #endregion Constructores
1667 
1668  #region Métodos privados
1669  private string DescripcionTipoIva()
1674  {
1675  if (_lIgic)
1676  return "IGIC";
1677  else
1678  return "IVA";
1679  }
1680 
1684  private void CrearEstructura()
1685  {
1686  // Definir la base
1687  _DataBase = "Gestion";
1688  _Tabla = "modtipo";
1689  _Condicion = "";
1690 
1691  // Omplim els camps i relació de propietats
1692  _AddCampoTRel("_Empresa", "Empresa", ewCampoTRel.Visible.No, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.No);
1693  _AddCampoTRel("_Modelo", "Modelo", ewCampoTRel.Visible.No, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.No);
1694  _AddCampoTRel("_Tipo", "Tipo", ewCampoTRel.Visible.No, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.No);
1695  _AddCampoTRel("_Linea", "Linea", ewCampoTRel.Visible.No, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.No);
1696 
1697  ewCampoTRel _Def_Tipo_Iva = _AddCampoTRel("_Tipo_Iva", "Tipo_Iva", ewCampoTRel.Visible.Si, ewCampoTRel.Updatable.Si, ewCampoTRel.Editable.Si, "Tipo de " + DescripcionTipoIva());
1698  {
1699  _Def_Tipo_Iva._PermiteDuplicados = false;
1700 
1701  // Validacions
1702  _Def_Tipo_Iva._Validar_Dato_BaseDatos = "Gestion";
1703  _Def_Tipo_Iva._Validar_Dato_Tabla = "Tipo_Iva";
1704  _Def_Tipo_Iva._Validar_Dato_Clave = "Codigo";
1705  _Def_Tipo_Iva._Validar_Dato_Campos = "Nombre";
1706  _Def_Tipo_Iva._Validar_Asignar_Cargando = true;
1707  _Def_Tipo_Iva._Validar_Dato_CampoTRel_Asignar = "_Definicion";
1708  _Def_Tipo_Iva._Error_Validar_Dato = "El código de " + DescripcionTipoIva() + " indicado no existe.";
1709 
1710  // Configurar el browser
1711  _Def_Tipo_Iva._Browser = new botones.btBrowTipoIva();
1712 
1713  // Configurar el manteniment
1714  _Def_Tipo_Iva._Mante = new botones.btMante();
1715  _Def_Tipo_Iva._Mante._NombreManteNet = "TIPO_IVA";
1716 
1717  _Def_Tipo_Iva._Error_Duplicados = "Este código de " + DescripcionTipoIva() + " ya se ha entrado previamente.";
1718  }
1719 
1720  _AddCampoTRel("_Definicion", "", ewCampoTRel.Visible.Si, ewCampoTRel.Updatable.No, ewCampoTRel.Editable.No, "Definición", gridColumnsTypes.Texto, null);
1721  }
1722  #endregion Métodos privados
1723 
1724  #region Definición de la Clave de la Configuración de los modelos
1725  public class Clave : IClaves
1729  {
1733  public ClaveTRel _Empresa { get; set; }
1734 
1738  public ClaveTRel _Modelo { get; set; }
1739 
1743  public ClaveTRel _Linea { get; set; }
1744 
1748  public Clave()
1749  {
1750  // Definim les propietats de cada una de les claus
1751  _Empresa = new ClaveTRel();
1752  _Empresa._EsFiltro = true; // Actuarà com a filtre per recuperar els registres
1753 
1754  _Modelo = new ClaveTRel();
1755  _Modelo._EsFiltro = true;
1756  _Modelo._Valor = "";
1757 
1758  _Linea = new ClaveTRel();
1759  _Linea._EsFiltro = false;
1760  _Linea._EsCampoLinea = true;
1761  }
1762  }
1763  #endregion Definición de la Clave de la Configuración de los modelos
1764 
1765  #region Definición de la esctructura ILinTRel de la Configuración de los modelos
1766  public class TipoImpuestoModelo : ILinTRel
1770  {
1771  #region Constructor
1772  public TipoImpuestoModelo()
1776  {
1777  }
1778  #endregion Constructor
1779 
1780  #region Propiedades públicas
1781  public string _Empresa
1785  {
1786  get { return _cEmpresa; }
1787  set { _cEmpresa = value; }
1788  }
1789  private string _cEmpresa = "";
1790 
1794  public string _Modelo
1795  {
1796  get { return _cModelo; }
1797  set { _cModelo = value; }
1798  }
1799  private string _cModelo = string.Empty;
1800 
1804  public string _Tipo
1805  {
1806  get { return _cTipo; }
1807  set { _cTipo = value; }
1808  }
1809  private string _cTipo = string.Empty;
1810 
1814  public string _Tipo_Iva
1815  {
1816  get { return _cTipo_Iva; }
1817  set
1818  {
1819  if (_cTipo_Iva != value)
1820  {
1821  if (loParent != null && loParent.CamposTRel_Validar_Valor("_Tipo_Iva", value, this))
1822  value = _cTipo_Iva;
1823  }
1824 
1825  if (_cTipo_Iva != value)
1826  _cTipo_Iva = value;
1827  }
1828  }
1829  private string _cTipo_Iva = string.Empty;
1830 
1834  public string _Definicion
1835  {
1836  get { return _cDefinicion; }
1837  set { _cDefinicion = value; }
1838  }
1839  private string _cDefinicion = "";
1840 
1844  public int _Linea
1845  {
1846  get { return _nLinea; }
1847  set { _nLinea = value; }
1848  }
1849  private int _nLinea = 1;
1850 
1851  private TiposImpuestosModelo loParent;
1855  public object _Parent
1856  {
1857  get { return loParent; }
1858  set { loParent = (TiposImpuestosModelo)value; }
1859  }
1860  #endregion Propiedades públicas
1861 
1862  #region Métodos públicos
1863  public bool Fila_Plena()
1868  {
1869  bool lbFilaPlena;
1870 
1871  lbFilaPlena = _Tipo_Iva != "";
1872 
1873  return lbFilaPlena;
1874  }
1875  #endregion Métodos públicos
1876  }
1877  #endregion Definición de la esctructura ILinTRel de la Configuración de los modelos
1878  }
1879 
1883  public ContadoresSerie _ContadoresVentas
1884  {
1885  get
1886  {
1887  if (_oContadoresVentas == null)
1888  {
1889  _oContadoresVentas = new ContadoresSerie(_Codigo);
1890  _oContadoresVentas._ewMantePrincipal = this;
1891  _oContadoresVentas._Load();
1892  }
1893  else
1894  {
1895  if (Convert.ToString(_oContadoresVentas._CodigoEmpresa) != this._Codigo)
1896  {
1897  _oContadoresVentas._CodigoEmpresa = this._Codigo;
1898  _oContadoresVentas._Load();
1899  }
1900 
1901  _AddManteTRel(_oContadoresVentas);
1902  }
1903 
1904  return _oContadoresVentas;
1905  }
1906  }
1907  private ContadoresSerie _oContadoresVentas;
1908 
1912  public ContadoresSerie _ContadoresTPV
1913  {
1914  get
1915  {
1916  if (_oContadoresTPV == null)
1917  {
1918  _oContadoresTPV = new ContadoresSerie(_Codigo, true);
1919  _oContadoresTPV._ewMantePrincipal = this;
1920  _oContadoresTPV._Load();
1921  }
1922  else
1923  {
1924  if (Convert.ToString(_oContadoresTPV._CodigoEmpresa) != this._Codigo)
1925  {
1926  _oContadoresTPV._CodigoEmpresa = this._Codigo;
1927  _oContadoresTPV._Load();
1928  }
1929 
1930  _AddManteTRel(_oContadoresTPV);
1931  }
1932 
1933  return _oContadoresTPV;
1934  }
1935  }
1936  private ContadoresSerie _oContadoresTPV;
1937 
1938  private static Assembly _oAssemblyModelos;
1939 
1943  public static Assembly _AssemblyModelos
1944  {
1945  get
1946  {
1947  //Cambiamos el metodo para recoger los errores ya que de vez en cuando fallas
1948  if (_oAssemblyModelos == null)
1949  {
1950  string lcPath = VersionNumber.DirectoryFullNameVersion(Convert.ToString(EW_GLOBAL._GetVariable("wc_pathinicio")));
1951 
1952  //Se añade la validación de la carpeta para las pruebas unitarias, ya que el path de inicio no es el de Sage50
1953  _oAssemblyModelos = FUNCTIONS._LoadAssembly(Directory.Exists(lcPath) && !Debugger.IsAttached ? Path.Combine(lcPath, "sage.50.exe") : "sage.50.exe");
1954  }
1955 
1956  return _oAssemblyModelos;
1957  }
1958  }
1959 
1963  public ITiposModelo _TiposModelo303
1964  {
1965  get
1966  {
1967  if (_oTiposModelo303 == null)
1968  {
1969  Type loType = _AssemblyModelos.GetType("Sage.ES.S50.Modelos.Clases.TiposModelo303");
1970  _oTiposModelo303 = (ITiposModelo)Activator.CreateInstance(loType, new object[] { _Codigo });
1971  _oTiposModelo303._Load();
1972 
1973  if (_oTiposModelo303._TiposModelo.Count == 0)
1974  {
1975  crearConfiguracionModelos(); // Configuramos todos los modelos el 303 y el de retenciones
1976  _oTiposModelo303._Empresa = this;
1977  _oTiposModelo303._Load();
1978  }
1979  }
1980  else
1981  {
1982  if (Convert.ToString(_oTiposModelo303._Empresa._Codigo) != this._Codigo)
1983  {
1984  _oTiposModelo303._Empresa = this;
1985  _oTiposModelo303._Load();
1986  }
1987  }
1988 
1989  return _oTiposModelo303;
1990  }
1991  }
1992  private ITiposModelo _oTiposModelo303;
1993 
1997  public ITiposModelo _TiposModelo347
1998  {
1999  get
2000  {
2001  if (_oTiposModelo347 == null)
2002  {
2003  Type loType = _AssemblyModelos.GetType("Sage.ES.S50.Modelos.Clases.TiposModelo347");
2004  _oTiposModelo347 = (ITiposModelo)Activator.CreateInstance(loType, new object[] { _Codigo });
2005  _oTiposModelo347._Empresa = this;
2006  _oTiposModelo347._Load();
2007  }
2008  else
2009  {
2010  if (Convert.ToString(_oTiposModelo347._Empresa._Codigo) != this._Codigo)
2011  {
2012  _oTiposModelo347._Empresa = this;
2013  _oTiposModelo347._Load();
2014  }
2015  }
2016 
2017  return _oTiposModelo347;
2018  }
2019  }
2020  private ITiposModelo _oTiposModelo347;
2021 
2025  public ITiposModelo _TiposModelo349
2026  {
2027  get
2028  {
2029  if (_oTiposModelo349 == null)
2030  {
2031  Type loType = _AssemblyModelos.GetType("Sage.ES.S50.Modelos.Clases.TiposModelo349");
2032  _oTiposModelo349 = (ITiposModelo)Activator.CreateInstance(loType, new object[] { _Codigo });
2033  _oTiposModelo349._Empresa = this;
2034  _oTiposModelo349._Load();
2035  }
2036  else
2037  {
2038  if (Convert.ToString(_oTiposModelo349._Empresa._Codigo) != this._Codigo)
2039  {
2040  _oTiposModelo349._Empresa = this;
2041  _oTiposModelo349._Load();
2042  }
2043  }
2044 
2045  return _oTiposModelo349;
2046  }
2047  }
2048  private ITiposModelo _oTiposModelo349;
2049 
2053  public ITiposModelo _TiposModelo417
2054  {
2055  get
2056  {
2057  if (_oTiposModelo417 == null)
2058  {
2059  Type loType = _AssemblyModelos.GetType("Sage.ES.S50.Modelos.Clases.TiposModelo417");
2060  _oTiposModelo417 = (ITiposModelo)Activator.CreateInstance(loType, new object[] { _Codigo });
2061  _oTiposModelo417._Empresa = this;
2062  _oTiposModelo417._Load();
2063  }
2064  else
2065  {
2066  if (Convert.ToString(_oTiposModelo417._Empresa._Codigo) != this._Codigo)
2067  {
2068  _oTiposModelo417._Empresa = this;
2069  _oTiposModelo417._Load();
2070  }
2071  }
2072 
2073  return _oTiposModelo417;
2074  }
2075  }
2076 
2077  private ITiposModelo _oTiposModelo417;
2078 
2079 
2083  public ITiposModeloBase _TiposModelo111
2084  {
2085  get
2086  {
2087  if (_oTiposModelo111 == null)
2088  {
2089  Type loType = _AssemblyModelos.GetType("Sage.ES.S50.Modelos.Clases.ConfigModelo111");
2090  _oTiposModelo111 = (ITiposModeloBase)Activator.CreateInstance(loType);
2091  _oTiposModelo111._Empresa = this;
2092  _oTiposModelo111._Load();
2093  }
2094  else
2095  {
2096  if (Convert.ToString(_oTiposModelo111._Empresa._Codigo) != this._Codigo)
2097  {
2098  _oTiposModelo111._Empresa = this;
2099  _oTiposModelo111._Load();
2100  }
2101  }
2102 
2103  return _oTiposModelo111;
2104  }
2105  }
2106 
2107  private ITiposModeloBase _oTiposModelo111;
2108 
2109 
2113  public ITiposModeloBase _TiposModelo115
2114  {
2115  get
2116  {
2117  if (_oTiposModelo115 == null)
2118  {
2119  Type loType = _AssemblyModelos.GetType("Sage.ES.S50.Modelos.Clases.ConfigModelo115");
2120  _oTiposModelo115 = (ITiposModeloBase)Activator.CreateInstance(loType);
2121  _oTiposModelo115._Empresa = this;
2122  _oTiposModelo115._Load();
2123  }
2124  else
2125  {
2126  if (Convert.ToString(_oTiposModelo115._Empresa._Codigo) != this._Codigo)
2127  {
2128  _oTiposModelo115._Empresa = this;
2129  _oTiposModelo115._Load();
2130  }
2131  }
2132 
2133  return _oTiposModelo115;
2134  }
2135  }
2136 
2137  private ITiposModeloBase _oTiposModelo115;
2138 
2139 
2143  public ActividadesModelo _ActividadesModelos
2144  {
2145  get
2146  {
2147  if (_oActividadesModelo == null)
2148  {
2149  _oActividadesModelo = new ActividadesModelo(_Codigo, "417", "moda417", true);
2150  _oActividadesModelo._Load();
2151  _AddManteTRel(_oActividadesModelo);
2152  }
2153  else
2154  {
2155  if (Convert.ToString(_oActividadesModelo._Claves._Empresa._Valor) != this._Codigo)
2156  {
2157  _oActividadesModelo._Claves._Empresa._Valor = this._Codigo;
2158  _oActividadesModelo._Load();
2159  }
2160 
2161  _AddManteTRel(_oActividadesModelo);
2162  }
2163 
2164  return _oActividadesModelo;
2165  }
2166  }
2167  private ActividadesModelo _oActividadesModelo;
2168 
2172  public ActividadesModelo _ActividadesModelos390
2173  {
2174  get
2175  {
2176  if (_oActividadesModeloTc == null)
2177  {
2178  _oActividadesModeloTc = new ActividadesModelo(_Codigo, "390", "moda390", false);
2179  _oActividadesModeloTc._Load();
2180  _AddManteTRel(_oActividadesModeloTc);
2181  }
2182  else
2183  {
2184  if (Convert.ToString(_oActividadesModeloTc._Claves._Empresa._Valor) != this._Codigo)
2185  {
2186  _oActividadesModeloTc._Claves._Empresa._Valor = this._Codigo;
2187  _oActividadesModeloTc._Load();
2188  }
2189 
2190  _AddManteTRel(_oActividadesModeloTc);
2191  }
2192 
2193  return _oActividadesModeloTc;
2194  }
2195  }
2196  private ActividadesModelo _oActividadesModeloTc;
2197 
2201  public RepresentantesPersonasJuridicasModelo _RepresentantesPersonasJuridicasCanariasModelo
2202  {
2203  get
2204  {
2205  if (_oRepresentantesPersonasJuridicasCanariasModelo == null)
2206  {
2207  _oRepresentantesPersonasJuridicasCanariasModelo = new RepresentantesPersonasJuridicasModelo(_Codigo, "modreptca");
2208  _oRepresentantesPersonasJuridicasCanariasModelo._Load();
2209  }
2210  else
2211  {
2212  if (Convert.ToString(_oRepresentantesPersonasJuridicasCanariasModelo._Claves._Empresa) != this._Codigo)
2213  {
2214  _oRepresentantesPersonasJuridicasCanariasModelo._Claves._Empresa._Valor = this._Codigo;
2215  _oRepresentantesPersonasJuridicasCanariasModelo._Load();
2216  }
2217 
2218  _AddManteTRel(_oRepresentantesPersonasJuridicasCanariasModelo);
2219  }
2220 
2221  return _oRepresentantesPersonasJuridicasCanariasModelo;
2222  }
2223  }
2224  private RepresentantesPersonasJuridicasModelo _oRepresentantesPersonasJuridicasCanariasModelo;
2225 
2226 
2231  public DataTable _LoadContadoresIvaSoportado()
2232  {
2233 
2234  String tcSql;
2235  DataTable loContadoresIvaSoportado = new DataTable();
2236 
2237  //PE-99808 Añadimos el group by para evitar que se dupliquen si hay más de un tipo de iva
2238  tcSql = String.Format("SELECT '(' + t.serie + ') '+ m.nombre as nombre_largo, t.serie, m.nombre, s.contador, s.contador as contador_inicial, s.tipodoc, '" + this._Codigo + "' as empresa FROM {0} t INNER JOIN {1} m ON t.serie = m.codigo INNER JOIN {2} s ON s.empresa='{3}' AND s.serie = t.serie WHERE s.empresa = '{3}' GROUP BY t.serie, m.nombre, s.contador, s.contador, s.tipodoc ", DB.SQLDatabase("GESTION", "ORD_SOPT"), DB.SQLDatabase("GESTION", "ORD_SOPM"), DB.SQLDatabase("GESTION", "ORD_SOP"), _Codigo);
2239  DB.SQLExec(tcSql, ref loContadoresIvaSoportado);
2240 
2241  DataRow loRowDefecto = loContadoresIvaSoportado.NewRow();
2242 
2243  loRowDefecto["nombre_largo"] = String.Format("00) Contador General de {0} Soportado", EW_GLOBAL._GetVariable("wc_iva"));
2244  loRowDefecto["serie"] = "00";
2245  loRowDefecto["nombre"] = "";
2246  loRowDefecto["contador"] = _Orden;
2247  loRowDefecto["contador_inicial"] = _Orden;
2248  loRowDefecto["tipodoc"] = 1;
2249  loRowDefecto["empresa"] = this._Codigo;
2250 
2251  loContadoresIvaSoportado.Rows.InsertAt(loRowDefecto, 0);
2252 
2253  return loContadoresIvaSoportado;
2254 
2255  }
2256 
2260  public String _CodigoOperarioDefecto
2261  {
2262  get
2263  {
2264  return _lisCamposCODIGOS.ContainsKey("OPERARIO") ? _lisCamposCODIGOS["OPERARIO"]._NewVal.ToString() : String.Empty;
2265  }
2266  set
2267  {
2268  if (_lisCamposCODIGOS.ContainsKey("OPERARIO"))
2269  {
2270  _lisCamposCODIGOS["OPERARIO"]._NewVal = value;
2271  }
2272  }
2273  }
2274 
2278  public string _TipoIVA
2279  {
2280  // 96708
2281  get
2282  {
2283  if (_lisCampos.ContainsKey("TIPO_IVA"))
2284  {
2285  return _lisCampos["TIPO_IVA"]._NewVal.ToString();
2286  }
2287  else
2288  {
2289  return String.Empty;
2290  }
2291  }
2292  set
2293  {
2294  if (_lisCampos.ContainsKey("TIPO_IVA"))
2295  {
2296  _lisCampos["TIPO_IVA"]._NewVal = value;
2297  }
2298  }
2299  // fi 96708
2300  }
2301 
2305  public string _Acronimo
2306  {
2307  get
2308  {
2309  if (_lisCampos.ContainsKey("ACRONIMO"))
2310  {
2311  return _lisCampos["ACRONIMO"]._NewVal.ToString().Trim();
2312  }
2313  else
2314  {
2315  return String.Empty;
2316  }
2317  }
2318  set
2319  {
2320  if (_lisCampos.ContainsKey("ACRONIMO"))
2321  {
2322  _lisCampos["ACRONIMO"]._NewVal = value;
2323  }
2324  }
2325  }
2326 
2330  public string _Idioma = string.Empty; // PE-82856
2331 
2332  // PE-94737
2336  public string _Foto
2337  {
2338  get
2339  {
2340  if (_lisCampos.ContainsKey("FOTO"))
2341  {
2342  return _lisCampos["FOTO"]._NewVal.ToString();
2343  }
2344  else
2345  {
2346  return String.Empty;
2347  }
2348  }
2349  set
2350  {
2351  if (_lisCampos.ContainsKey("FOTO"))
2352  {
2353  _lisCampos["FOTO"]._NewVal = value;
2354  }
2355  }
2356  }
2357 
2361  public string _Mensaje_Albaran_1
2362  {
2363  get
2364  {
2365  if (_lisCampos.ContainsKey("TXTALBA1"))
2366  {
2367  return _lisCampos["TXTALBA1"]._NewVal.ToString();
2368  }
2369  else
2370  {
2371  return String.Empty;
2372  }
2373  }
2374  set
2375  {
2376  if (_lisCampos.ContainsKey("TXTALBA1"))
2377  {
2378  _lisCampos["TXTALBA1"]._NewVal = value;
2379  }
2380  }
2381  }
2382 
2386  public string _Mensaje_Albaran_2
2387  {
2388  get
2389  {
2390  if (_lisCampos.ContainsKey("TXTALBA2"))
2391  {
2392  return _lisCampos["TXTALBA2"]._NewVal.ToString();
2393  }
2394  else
2395  {
2396  return String.Empty;
2397  }
2398  }
2399  set
2400  {
2401  if (_lisCampos.ContainsKey("TXTALBA2"))
2402  {
2403  _lisCampos["TXTALBA2"]._NewVal = value;
2404  }
2405  }
2406  }
2407 
2408  //PE-95440
2412  public string _Mensaje_Pedico_1
2413  {
2414  get
2415  {
2416  if (_lisCampos.ContainsKey("PEDICO1"))
2417  {
2418  return _lisCampos["PEDICO1"]._NewVal.ToString();
2419  }
2420  else
2421  {
2422  return String.Empty;
2423  }
2424  }
2425  set
2426  {
2427  if (_lisCampos.ContainsKey("PEDICO1"))
2428  {
2429  _lisCampos["PEDICO1"]._NewVal = value;
2430  }
2431  }
2432  }
2433 
2434  //PE-95440
2438  public string _Mensaje_Pedico_2
2439  {
2440  get
2441  {
2442  if (_lisCampos.ContainsKey("PEDICO2"))
2443  {
2444  return _lisCampos["PEDICO2"]._NewVal.ToString();
2445  }
2446  else
2447  {
2448  return String.Empty;
2449  }
2450  }
2451  set
2452  {
2453  if (_lisCampos.ContainsKey("PEDICO2"))
2454  {
2455  _lisCampos["PEDICO2"]._NewVal = value;
2456  }
2457  }
2458  }
2459 
2460 
2461  //PE-95440
2465  public string _Mensaje_Factucom_1
2466  {
2467  get
2468  {
2469  if (_lisCampos.ContainsKey("FACTUCOM1"))
2470  {
2471  return _lisCampos["FACTUCOM1"]._NewVal.ToString();
2472  }
2473  else
2474  {
2475  return String.Empty;
2476  }
2477  }
2478  set
2479  {
2480  if (_lisCampos.ContainsKey("FACTUCOM1"))
2481  {
2482  _lisCampos["FACTUCOM1"]._NewVal = value;
2483  }
2484  }
2485  }
2486 
2487  //PE-95440
2491  public string _Mensaje_Factucom_2
2492  {
2493  get
2494  {
2495  if (_lisCampos.ContainsKey("FACTUCOM2"))
2496  {
2497  return _lisCampos["FACTUCOM2"]._NewVal.ToString();
2498  }
2499  else
2500  {
2501  return String.Empty;
2502  }
2503  }
2504  set
2505  {
2506  if (_lisCampos.ContainsKey("FACTUCOM2"))
2507  {
2508  _lisCampos["FACTUCOM2"]._NewVal = value;
2509  }
2510  }
2511  }
2512 
2513 
2517  public override string _Codigo
2518  {
2519  get
2520  {
2521  return base._Codigo;
2522  }
2523  set
2524  {
2525  // En modo HERA no se pueden crear empresas (PE-90860)
2526  if (this._Hera)
2527  {
2528  bool llExiste = !string.IsNullOrWhiteSpace(DB.SQLValor("EMPRESA", "CODIGO", value, "CODIGO").ToString());
2529  if (!llExiste)
2530  value = "";
2531  }
2532 
2533  //PE-99833 IMPORTANTE no quitar ni mover antes de la asignación, perderá los filtros y puede machacar la empresa
2534  _SetFiltrosBrowser(value);
2535  base._Codigo = value;
2536  // _Load(); Task 131301. La línea base._Codigo ya dispara un _Load (Optimización)
2537  }
2538  }
2539 
2540  //PE-94391
2544  public bool _ImprimirSageReports
2545  {
2546  get
2547  {
2548  //Consulto el opcflag 50020 => DESHABILITAR SAGE REPORTS EN LA IMPRESIÓN DE DOCUMENTOS DE VENTA
2549  //Es una condición negada
2550  _lImprimirSageReports = !_GetOpcEmp("50020"); //Consulta al momento en la BBDD
2551  return _lImprimirSageReports;
2552  }
2553  set
2554  {
2555  _lImprimirSageReports = value;
2556  }
2557  }
2558  private bool _lImprimirSageReports = false;
2559 
2560 
2565  public string _ModuloSeleccionado = "";
2566 
2567 
2576  public bool _GetOpcEmpMemory(int tnCodigoOpc)
2577  {
2578  bool llValor = false;
2579 
2580  if (string.IsNullOrWhiteSpace(this._Codigo))
2581  return false;
2582 
2583  DataRow[] laRows = this._OpcionesGenerales.Select("tipo_opc=" + tnCodigoOpc.ToString().Trim());
2584  if (laRows.Count() >= 1)
2585  llValor = Convert.ToBoolean(laRows[0]["estado"]);
2586 
2587  return llValor;
2588  }
2589 
2590 
2591 
2600  public bool _GetOpcEmpMemory(string tcVariable)
2601  {
2602  bool llValor = false;
2603 
2604  if (string.IsNullOrWhiteSpace(this._Codigo))
2605  return false;
2606 
2607  DataRow[] ldRows = this._OpcionesGenerales.Select("variable='" + tcVariable.ToUpper().Trim() + "'");
2608 
2609  if (ldRows.Length > 0)
2610  llValor = Convert.ToBoolean(ldRows[0]["estado"]);
2611  return llValor;
2612  }
2613 
2614 
2622  public void _SetOpcEmpMemory(int tnCodigoOpc, bool tlValor)
2623  {
2624  if (string.IsNullOrWhiteSpace(this._Codigo))
2625  return;
2626 
2627  DataRow[] ldRows = this._OpcionesGenerales.Select("tipo_opc=" + tnCodigoOpc.ToString().Trim());
2628 
2629  if (ldRows.Length > 0)
2630  {
2631  if (Convert.ToBoolean(ldRows[0]["ESTADO"]) != tlValor)
2632  {
2633  ldRows[0]["MODIFICADO"] = Convert.ToBoolean(ldRows[0]["MODIFICADO"]) ? 0 : 1;
2634  ldRows[0]["ESTADO"] = tlValor;
2635  }
2636  }
2637  return;
2638  }
2639 
2640 
2648  public void _SetOpcEmpMemory(string tcVariable, bool tlValor)
2649  {
2650  if (string.IsNullOrWhiteSpace(this._Codigo))
2651  return;
2652 
2653  DataRow[] ldRows = this._OpcionesGenerales.Select("variable='" + tcVariable.ToUpper().Trim() + "'");
2654 
2655  if (ldRows.Length > 0)
2656  {
2657  if (Convert.ToBoolean(ldRows[0]["ESTADO"]) != tlValor)
2658  {
2659  ldRows[0]["MODIFICADO"] = Convert.ToBoolean(ldRows[0]["MODIFICADO"]) ? 0 : 1;
2660  ldRows[0]["ESTADO"] = tlValor;
2661  }
2662  }
2663  return;
2664  }
2665 
2666 
2673  public bool _GetOpcEmp(string tcCodigo, string tcEmpresa = "")
2674  {
2675  bool llEstado = false;
2676 
2677  //Sino tengo empresa utilizo la actual
2678  if (string.IsNullOrWhiteSpace(tcEmpresa))
2679  //tcEmpresa = Convert.ToString(EW_GLOBAL._GetVariable("wc_empresa"));
2680  tcEmpresa = this._Codigo;
2681 
2682  //Sino hay codigo => False
2683  if (string.IsNullOrWhiteSpace(tcCodigo)) return false;
2684 
2685  DataTable ldtEstado = new DataTable();
2686 
2687  //bool llOk = DB.SQLExec("SELECT estado FROM " + DB.SQLDatabase("COMUNES", "OPCEMP") + " " +
2688  // "WHERE empresa = " + DB.SQLString(tcEmpresa) +
2689  // " AND tipo_opc = " + DB.SQLString(tcCodigo) + " ", ref ldtEstado);
2690 
2691  //PE-102978: Comprobar checksum y condicion para retornar el valor default o el valor que tiene en opcemp
2692  bool llOk = DB.SQLExec("select o.codigo,o.nombre,o.variable,coalesce(p.estado,cast(0 as bit)) as estado, o.condicion, o.checksum, o.[default] as defecto from " +
2693  DB.SQLDatabase("COMUNES", "OPCFLAG") + " o " +
2694  " left join " + DB.SQLDatabase("COMUNES", "OPCEMP") + " p on o.codigo=p.tipo_opc " +
2695  " WHERE p.empresa= " + DB.SQLString(tcEmpresa) + " and o.variable!=' '" +
2696  " AND p.tipo_opc = " + DB.SQLString(tcCodigo), ref ldtEstado);
2697 
2698  for (int i = 0; i < ldtEstado.Rows.Count; i++)
2699  {
2700  DataRow dr = ldtEstado.Rows[i];
2701  bool lbResult = true;
2702  if (!FUNCTIONS._EvaluarCondicionFinal(Convert.ToString(dr["condicion"]), lbResult) ||
2703  !Criptografia.ChecksumValidoOpcion(Convert.ToString(dr["variable"]).Trim(), Convert.ToString(dr["condicion"]).Trim(), Convert.ToString(dr["checksum"])))
2704  {
2705  dr["estado"] = dr["defecto"];
2706  }
2707  }
2708  ldtEstado.AcceptChanges();
2709 
2710  //FI PE-102978
2711 
2712  if (llOk && ldtEstado.Rows.Count > 0) llEstado = Convert.ToBoolean(ldtEstado.Rows[0]["estado"]);
2713 
2714  ldtEstado = null;
2715 
2716  return llEstado;
2717  }
2718 
2719 
2725  public Dictionary<string, bool> _GetOpcEmpAll(string tcEmpresa = "")
2726  {
2727  Dictionary<string, bool> loOpcEmp = new Dictionary<string, bool>();
2728  DataTable ldtEstado = new DataTable();
2729  bool llEstado = false;
2730 
2731  // Sino tengo empresa utilizo la actual
2732  if (string.IsNullOrWhiteSpace(tcEmpresa))
2733  tcEmpresa = this._Codigo;
2734 
2735  // Consultar todos los valores de opcflags
2736  DB.SQLExec("select o.codigo,o.nombre,o.variable,coalesce(p.estado,cast(0 as bit)) as estado, o.condicion, o.checksum, o.[default] as defecto, p.tipo_opc from " +
2737  DB.SQLDatabase("COMUNES", "OPCFLAG") + " o " +
2738  " left join " + DB.SQLDatabase("COMUNES", "OPCEMP") + " p on o.codigo=p.tipo_opc " +
2739  " WHERE p.empresa= " + DB.SQLString(tcEmpresa) + " and o.variable!=' '", ref ldtEstado);
2740 
2741  // Comprobar checksum y condicion para retornar el valor default o el valor que tiene en opcemp
2742  for (int i = 0; i < ldtEstado.Rows.Count; i++)
2743  {
2744  DataRow dr = ldtEstado.Rows[i];
2745 
2746  // Valor del estado del opcemp
2747  llEstado = Convert.ToBoolean(dr["estado"]);
2748 
2749  if (!FUNCTIONS._EvaluarCondicionFinal(Convert.ToString(dr["condicion"]), true) ||
2750  !Criptografia.ChecksumValidoOpcion(Convert.ToString(dr["variable"]).Trim(), Convert.ToString(dr["condicion"]).Trim(), Convert.ToString(dr["checksum"])))
2751  {
2752  // Valor del estado por defecto ya que no se ha superado el checksum
2753  llEstado = Convert.ToBoolean(dr["defecto"]);
2754  }
2755 
2756  // Añadir valor al diccionario
2757  loOpcEmp.Add(Convert.ToString(dr["tipo_opc"]), llEstado);
2758  }
2759 
2760  ldtEstado = null;
2761 
2762  return loOpcEmp;
2763  }
2764 
2772  public bool _SetOpcEmp(string tcCodigo, bool tlValor, string tcEmpresa = "")
2773  {
2774  bool llOk = false;
2775  string lcSql = String.Empty;
2776 
2777  //Sino tengo empresa utilizo la actual
2778  if (string.IsNullOrWhiteSpace(tcEmpresa))
2779  //tcEmpresa = Convert.ToString(EW_GLOBAL._GetVariable("wc_empresa"));
2780  tcEmpresa = this._Codigo;
2781 
2782  //Sino hay codigo => False
2783  if (string.IsNullOrWhiteSpace(tcCodigo)) return false;
2784 
2785 
2786  if (!_ExisteOpcemp(tcCodigo, tcEmpresa))
2787  {
2788  lcSql = String.Format("INSERT INTO {0} (EMPRESA, TIPO_OPC, ESTADO) VALUES ('{1}','{2}','{3}') ",
2789  DB.SQLDatabase("COMUNES", "OPCEMP"), tcEmpresa, tcCodigo, (tlValor) ? 1 : 0);
2790  }
2791  else
2792  {
2793  lcSql = String.Format("UPDATE {0} SET ESTADO = {1} WHERE EMPRESA = '{2}' AND TIPO_OPC = '{3}' ",
2794  DB.SQLDatabase("COMUNES", "OPCEMP"), (tlValor) ? 1 : 0, tcEmpresa, tcCodigo);
2795  }
2796  llOk = DB.SQLExec(lcSql);
2797 
2798  return llOk;
2799  }
2800 
2806  public bool _ExistPassword(String tcPassword)
2807  {
2808  String lcSql, lcPass;
2809  DataTable ldtCont = new DataTable();
2810 
2811  lcPass = Usuario._This.TrataPassword(tcPassword);
2812 
2813  lcSql = String.Format("SELECT * FROM {0} WHERE CODIGO != '{1}' AND PASWORD ='{2}' ", DB.SQLDatabase("GESTION", "EMPRESA"), _Codigo, lcPass);
2814  DB.SQLExec(lcSql, ref ldtCont);
2815 
2816  return ldtCont.Rows.Count > 0;
2817  }
2818 
2825  private bool _ExisteOpcemp(String tcCodigo, String tcEmpresa)
2826  {
2827  String lcSql;
2828  DataTable ldtPantalla = new DataTable();
2829 
2830  lcSql = String.Format("SELECT * FROM {0} WHERE EMPRESA = '{1}' AND tipo_opc = '{2}' ",
2831  DB.SQLDatabase("COMUNES", "OPCEMP"), tcEmpresa, tcCodigo);
2832 
2833  DB.SQLExec(lcSql, ref ldtPantalla);
2834  return ldtPantalla.Rows.Count > 0;
2835  }
2836 
2837 
2838  // PARTE 89113
2842  public virtual void _Load_Codigo()
2843  {
2844  this._CrearCargarCampos("GESTION", "CODIGOS", this._Codigo, ref _lisCamposCODIGOS);
2845  }
2846 
2850  public override void _Load()
2851  {
2852  base._Load();
2853 
2854  //Cargamos la configuración
2855  _Load_Codigo_Config();
2856 
2857  _oReportTemplates = null;
2858 
2859  _SetFiltrosBrowser();
2860  }
2861 
2865  public virtual void _Load_Codigo_Config()
2866  {
2867  _ConfigTPV = null;
2868 
2869  _oOpcionesGenerales = null;
2870 
2871  if (!String.IsNullOrWhiteSpace(_Codigo))
2872  {
2873  _lIsLoad = true;
2874  // PARTE 89113.
2875  _CrearCargarCampos("GESTION", "CODIGOS", _Codigo, ref _lisCamposCODIGOS);
2876 
2877  // Tenemos de creas siempre la instancia del TPV, es necesario para el método "_InicializarValoresValidacionContadores"
2878  _ConfigTPV = new ConfigTPV(_Codigo);
2879 
2880  //Cargamos la tabla de contadores
2881  _CrearCargarCampos("GESTION", "CONTADOR", _Codigo, ref _lisCamposCONTADORES);
2882  _CrearCargarCampos("GESTION", "FACTUCNF", _Codigo, ref _lisCamposFACTUCNF);
2883  _CrearCargarCampos("GESTION", "FLAGS", _Codigo, ref _lisCamposFLAGS);
2884  _CrearCargarCampos("GESTION", "CFGFACT", _Codigo, ref _lisCamposCFGFACT);
2885  if (_lisCamposCFGFACT.ContainsKey("EF_EMAILCO"))
2886  {
2887  _lisCamposCFGFACT["EF_EMAILCO"]._NewVal = _lisCamposCFGFACT["EF_EMAILCO"]._NewVal.ToString().Trim();
2888  }
2889  _CrearCargarCampos("GESTION", "MODCONFI", _Codigo, ref _lisCamposMODCONFI); // PE-90860
2890  _CrearCargarCampos("GESTION", "MODCCAN", _Codigo, ref _lisCamposMODCANARIAS);
2891 
2892 
2894  _CrearCargarCampos("COMUNES", "SOCIAL365", new string[] { "[EMPRESA]", "[TIPO]" }, new string[] { _Codigo, "1" }, ref _lisCamposSOCIALFACEBOOK);
2895  _CrearCargarCampos("COMUNES", "SOCIAL365", new string[] { "[EMPRESA]", "[TIPO]" }, new string[] { _Codigo, "2" }, ref _lisCamposSOCIALTWITTER);
2897 
2899  _CrearCargarCampos("COMUNES", "SOCIAL365", new string[] { "[EMPRESA]", "[TIPO]" }, new string[] { _Codigo, "4" }, ref _lisCamposSOCIAL365);
2900 
2901  //String lcSql;
2902  //DataTable loDt = new DataTable();
2903 
2904  //lcSql = String.Format("SELECT * FROM {0} WHERE EMPRESA = {1} AND ( TIPO = 1 OR TIPO = 2 OR TIPO = 4) ", DB.SQLDatabase("COMUNES", "SOCIAL365"), DB.SQLString(_Codigo));
2905  //DB.SQLExec(lcSql, ref loDt);
2906 
2907  //_CrearCargarCampos("COMUNES", "SOCIAL365", new string[] { "[EMPRESA]", "[TIPO]" }, new string[] { _Codigo, "1" }, ref _lisCamposSOCIALFACEBOOK, loDt, loDt.Select("TIPO = 1").FirstOrDefault());
2908  //_CrearCargarCampos("COMUNES", "SOCIAL365", new string[] { "[EMPRESA]", "[TIPO]" }, new string[] { _Codigo, "2" }, ref _lisCamposSOCIALTWITTER, loDt, loDt.Select("TIPO = 2").FirstOrDefault());
2909  //_CrearCargarCampos("COMUNES", "SOCIAL365", new string[] { "[EMPRESA]", "[TIPO]" }, new string[] { _Codigo, "3" }, ref _lisCamposSOCIAL365, loDt, loDt.Select("TIPO = 4").FirstOrDefault());
2910  //FI PE-104237
2911 
2912  //PE-98706
2913  _CrearCargarCampos("COMUNES", "OTROSCFG", _Codigo, ref _lisCamposOTROSCFG);
2914  _CrearCargarCampos("GESTION", "CONTACNF", _Codigo, ref _lisCamposCONTACNF);
2915  _CrearCargarCampos("COMUNES", "CFGBABEL", _Codigo, ref _lisCamposCFGBABEL);
2916  //PE-99355 Quitamos la empresa ya que no filtra por este campo
2917  _CrearCargarCampos("COMUNES", "COMPRCNF", "", ref _lisCamposCOMPRCNF);
2918 
2919  _oTiposModelo303 = null;
2920  _oTiposModelo347 = null;
2921  _oTiposModelo349 = null;
2922  _oTiposModelo417 = null;
2923  _oTiposModelo111 = null;
2924  _oTiposModelo115 = null;
2925 
2926  _InicializarValoresValidacionContadores();
2927  _ValoresPorDefecto();
2928  }
2929  }
2930 
2934  private void _ValoresPorDefecto()
2935  {
2936  if (_Estado == _EstadosMantenimiento.EntrandoNuevo)
2937  {
2938  _EmpStock = _Codigo;
2939 
2940  //PE-99576
2941  _ConfigTPV._PararEnCantidad = true;
2942  _ConfigTPV._PararEnPrecio = true;
2943  _Tipo_Fjuridica = 0;
2944 
2945  // S50MIG-2493 - Al crear la empresa, coger la configuración de la empresa actual y si tiene configuración de TPV
2946  bool llDefEmpresa = EW_GLOBAL._Empresa != null &&
2947  EW_GLOBAL._Empresa._Codigo != _Codigo &&
2948  !String.IsNullOrWhiteSpace(Convert.ToString(DB.SQLValor("CONFTPV", "EMPRESA", EW_GLOBAL._Empresa._Codigo, "EMPRESA", "TPV")));
2949 
2950  ValoresPorDefectoTPV(llDefEmpresa, (Empresa)EW_GLOBAL._Empresa);
2951  }
2952  else if (_Estado == _EstadosMantenimiento.EditandoRegistro)
2953  {
2954  // Si la empresa actual no tiene configuración de TPV, poner la configuración por defecto
2955  if (String.IsNullOrWhiteSpace(Convert.ToString(DB.SQLValor("CONFTPV", "EMPRESA", _Codigo, "EMPRESA", "TPV"))))
2956  ValoresPorDefectoTPV(false);
2957  }
2958  }
2959 
2966  private void ValoresPorDefectoTPV(bool tlDefEmpresa, Empresa toEmpresa = null, string tcSerieFactura = "")
2967  {
2968  tlDefEmpresa = toEmpresa == null ? false : tlDefEmpresa;
2969 
2970  // Pestaña general
2971  _ConfigTPV._VentaEnCredito = tlDefEmpresa ? toEmpresa._ConfigTPV._VentaEnCredito : true; // Permitir generar albaranes y facturas
2972  _ConfigTPV._AbrirCajaEnCobrosPagos = tlDefEmpresa ? toEmpresa._ConfigTPV._AbrirCajaEnCobrosPagos : true; // Abrir caja en cobros y pagos
2973  _ConfigTPV._AbrirCajaEnImpresion = tlDefEmpresa ? toEmpresa._ConfigTPV._AbrirCajaEnImpresion : true; // Abrir caja en impresión marcado
2974  _ConfigTPV._DesglosarFamiliasEnArqueos = tlDefEmpresa ? toEmpresa._ConfigTPV._DesglosarFamiliasEnArqueos : true; // Desglosar familias en arqueos
2975  _ConfigTPV._PresentarFichaClientesVarios = tlDefEmpresa ? toEmpresa._ConfigTPV._PresentarFichaClientesVarios : true; // Presentar ficha de clientes varios en albaranes y facturas
2976  _ConfigTPV._PresentarColumnaDescuento = tlDefEmpresa ? toEmpresa._ConfigTPV._PresentarColumnaDescuento : true; // Mostrar columnas de descuento
2977  _ConfigTPV._DefinicionTraspasoTicketAlb = tlDefEmpresa ? toEmpresa._ConfigTPV._DefinicionTraspasoTicketAlb : "TRASPASO HACIA ALBARÁN"; //Texto de la línea comentario del traspaso de tickets a albaranes
2978 
2979  // Pestaña opciones
2980  _ConfigTPV._HoraInicial = tlDefEmpresa ? toEmpresa._ConfigTPV._HoraInicial : "09:00"; // Hora inicial
2981  _ConfigTPV._HoraFinal = tlDefEmpresa ? toEmpresa._ConfigTPV._HoraFinal : "20:00"; //Hora final
2982  _ConfigTPV._ValesPermitirDevolucionEnEfectivo = tlDefEmpresa ? toEmpresa._ConfigTPV._ValesPermitirDevolucionEnEfectivo : true; // Permitir devoluciones en efectivo
2983  _ConfigTPV._ValesCodigo = tlDefEmpresa ? toEmpresa._ConfigTPV._ValesCodigo : "03"; // Código de vales
2984  _ConfigTPV._ValesCaducidad = tlDefEmpresa ? toEmpresa._ConfigTPV._ValesCaducidad : 0; // Días de caducidad
2985  _ConfigTPV._AbriCajon = tlDefEmpresa ? toEmpresa._ConfigTPV._AbriCajon : 1; // Abrir cajón al: entrar en la pantalla de cobros
2986 
2987  // Pestaña impresión
2988  _ConfigTPV._NumCopiasTickets = tlDefEmpresa ? toEmpresa._ConfigTPV._NumCopiasTickets : 1; // Nº copias tickets
2989  _ConfigTPV._ImprimirFormaCobroTickets = tlDefEmpresa ? toEmpresa._ConfigTPV._ImprimirFormaCobroTickets : true; // Imprimir formas de cobro
2990  _ConfigTPV._ImprimirAgruparLineasMismoArticuloTickets = tlDefEmpresa ? toEmpresa._ConfigTPV._ImprimirAgruparLineasMismoArticuloTickets : true; //Agrupar las líneas con el mismo artículo
2991  _ConfigTPV._IVAEnTickets = tlDefEmpresa ? toEmpresa._ConfigTPV._IVAEnTickets : 1; //IVA en tickets
2992  _ConfigTPV._NumImpresionEntregasCta = tlDefEmpresa ? toEmpresa._ConfigTPV._NumImpresionEntregasCta : 1; // Nº entregas a cuenta
2993  _ConfigTPV._NumImpresionVales = tlDefEmpresa ? toEmpresa._ConfigTPV._NumImpresionVales : 1; // Nº copias vales
2994  _ConfigTPV._NumImpresionCobrosVarios = tlDefEmpresa ? toEmpresa._ConfigTPV._NumImpresionCobrosVarios : 1; // Nº copias cobros varios
2995  _ConfigTPV._ListadosConIvaIncluido = tlDefEmpresa ? toEmpresa._ConfigTPV._ListadosConIvaIncluido : true; // Mostrar precios e importes con IVA incluido en listados / gráficas de ventas
2996 
2997  // Serie de Faturación
2998  _ConfigTPV._SerieFactura = tlDefEmpresa ? toEmpresa._ConfigTPV._SerieFactura : tcSerieFactura; // Serie para facturación de tickets
2999  }
3000 
3006  public bool _ActualizaContadorArticulo(Int32 tnContador)
3007  {
3008  Boolean llOk = false;
3009 
3010  if (_ContadorArticulo < tnContador)
3011  {
3012  _ContadorArticulo = tnContador;
3013  llOk = _SaveLista("GESTION", "CONTADOR", _Codigo, ref _lisCamposCONTADORES);
3014  }
3015  return llOk;
3016  }
3017 
3022  public override void _New(string tcCodigo = "")
3023  {
3024  base._New(tcCodigo);
3025 
3026  // Valores por defecto
3027  _Tipo = Convert.ToString(TipoEmpresa.Normal);
3028 
3029  //PE-100521 Añadimos las horas, min, segundos para que no de problemas con las horas
3030  _PeriodoIni = Convert.ToDateTime(EW_GLOBAL._GetVariable("wd_periodoini"));
3031  _PeriodoFin = Convert.ToDateTime(EW_GLOBAL._GetVariable("wd_periodofin"));
3032  }
3033 
3034 
3038  private void _CreateDefaultOpcFlags()
3039  {
3040  String lcSql;
3041  DataTable lOdt = new DataTable();
3042 
3043  lcSql = String.Format("SELECT * FROM {0} ", DB.SQLDatabase("COMUNES", "OPCFLAG"));
3044  DB.SQLExec(lcSql, ref lOdt);
3045 
3046  foreach (DataRow loDr in lOdt.Rows)
3047  {
3048  //PE-99503
3049  lcSql = $@"IF NOT EXISTS ( SELECT 1 FROM {DB.SQLDatabase("COMUNES", "OPCEMP")} WHERE EMPRESA = '{_Codigo}' AND TIPO_OPC = '{loDr["CODIGO"]}' )
3050  INSERT INTO {DB.SQLDatabase("COMUNES", "OPCEMP")} (EMPRESA, TIPO_OPC, ESTADO) VALUES ('{_Codigo}', '{loDr["CODIGO"]}', {(_oDefaultActiveOpcFlags.Contains(Convert.ToString(loDr["VARIABLE"]).Trim()) || Convert.ToBoolean(loDr["DEFAULT"]) ? DB.SQLTrue() : DB.SQLFalse())} ) ";
3051  DB.SQLExec(lcSql);
3052  }
3053 
3054  //Activamos tallas y colores si la empresa actual lo tiene activado
3055  activarOpcflagSegunValorEmpresaActual("9004");
3056 
3057  //Activamos contraseña segura si la empresa actual lo tiene activado
3058  activarOpcflagSegunValorEmpresaActual("50030");
3059 
3060  // Bug 132277 Activamos gestión de puntos si la empresa actual lo tiene activado
3061  activarOpcflagSegunValorEmpresaActual("10022");
3062 
3063  // Previas
3064  activarOpcflagSegunValorEmpresaActual("9100");
3065  activarOpcflagSegunValorEmpresaActual("9110");
3066 
3067  //Ejercicio partido
3068  activarOpcflagSegunValorEmpresaActual("9008");
3069 
3070  //Trabajar con un único nivel de analítica
3071  activarOpcflagSegunValorEmpresaActual("30062");
3072 
3073  //Introducción manual en planes analíticos
3074  activarOpcflagSegunValorEmpresaActual("30006");
3075 
3076  //Introducción de planes analíticos para todas las cuentas contables en asientos
3077  activarOpcflagSegunValorEmpresaActual("30201");
3078 
3079  //Ampliar definición en ventas
3080  activarOpcflagSegunValorEmpresaActual("10006");
3081 
3082  //Activar Fabricación si la empresa actual lo tiene activado
3083  activarOpcflagSegunValorEmpresaActual("10009");
3084 
3085  }
3086 
3091  private void activarOpcflagSegunValorEmpresaActual(String tcCodigoOpcflag)
3092  {
3093  string lcSql = String.Format("UPDATE {0} SET ESTADO = (SELECT ESTADO FROM {0} WHERE EMPRESA = '{1}' AND TIPO_OPC = '{2}') " +
3094  "WHERE TIPO_OPC = '{2}' AND EMPRESA = '{3}' ",
3095  DB.SQLDatabase("COMUNES", "OPCEMP"),
3096  EW_GLOBAL._GetVariable("WC_EMPRESA"),
3097  tcCodigoOpcflag.Trim(),
3098  _Codigo);
3099  DB.SQLExec(lcSql);
3100  }
3101 
3102 
3107  public override bool _Save_Before()
3108  {
3109  Boolean llOk;
3110 
3111  llOk = base._Save_Before();
3112 
3113  if (_Tipo == Convert.ToString(TipoEmpresa.Normal))
3114  {
3115  //PE-99586
3116  if (String.IsNullOrEmpty(_EmpStock.Trim()))
3117  {
3118  if (_Estado != _EstadosMantenimiento.EsperandoCodigo)
3119  {
3120  _Error_Message = "Debe informar la empresa de stock";
3121  if (_FormMante != null) this._FormMante._SetError_OnControl("_EmpStock", _Error_Message);
3122  llOk = false;
3123  }
3124  else
3125  {
3126  _EmpStock = _Codigo;
3127  }
3128  }
3129  }
3130 
3131  if (llOk && _TrabajaSuplidos)
3132  {
3133  llOk &= _ValidaTipoIvaSuplidos(_TipoIVASuplipos);
3134  }
3135 
3136  if (llOk && _GetOpcEmpMemory("WL_PARTI"))
3137  {
3138  llOk &= _ValidaFechasEjercicioPartido();
3139  }
3140 
3141  if (llOk && _Prorrata_Aplicar && _Prorrata_Prc == 0)
3142  {
3143  _Error_Message = "Si se trabaja con prorrata el porcentaje no puede ser 0.";
3144  if (_FormMante != null) this._FormMante._SetError_OnControl("_Prorrata_Prc", _Error_Message);
3145  llOk = false;
3146  }
3147 
3148  return llOk;
3149  }
3150 
3155  private bool CambioFechasEjercicioPartido()
3156  {
3157  return (_lisCampos.ContainsKey("PERIODOINI") && _lisCampos.ContainsKey("PERIODOFIN") && // NO deberia de pasar nunca ...
3158  (Convert.ToDateTime(_lisCampos["PERIODOINI"]._OldVal) != Convert.ToDateTime(_PeriodoIni) || // Validamos si hay cambio de fechas
3159  Convert.ToDateTime(_lisCampos["PERIODOFIN"]._OldVal) != Convert.ToDateTime(_PeriodoFin)));
3160  }
3161 
3162  private bool _ValidaFechasEjercicioPartido()
3163  {
3164  Boolean lbOk = true;
3165 
3166  if (!CambioFechasEjercicioPartido())
3167  return true;
3168 
3169  if (_PeriodoFin < _PeriodoIni)
3170  {
3171  _Error_Message = "El periodo de inicio del ejercicio no puede ser inferior al periodo final del ejercicio";
3172  if (_FormMante != null) this._FormMante._SetError_OnControl("_PeriodoIni", _Error_Message);
3173  lbOk = false;
3174  }
3175 
3176  DateTime loIni = Convert.ToDateTime(_PeriodoIni);
3177  DateTime loDateFin = Convert.ToDateTime(_PeriodoFin);
3178 
3179  if (lbOk && loIni.Date.Day != 1)
3180  {
3181  _Error_Message = "El día de inicio de la fecha debe de ser 1";
3182  if (_FormMante != null) this._FormMante._SetError_OnControl("_PeriodoIni", _Error_Message);
3183  lbOk = false;
3184  }
3185 
3186  if (lbOk && loIni.AddMonths(11).Month != loDateFin.Month)
3187  {
3188  _Error_Message = "El periodo debe tener 12 meses";
3189  if (_FormMante != null) this._FormMante._SetError_OnControl("_PeriodoFin", _Error_Message);
3190  lbOk = false;
3191  }
3192 
3193  return lbOk;
3194  }
3195 
3200  public bool _ValidaTipoIvaSuplidos(String tcCodigoIva)
3201  {
3202  Boolean lbOk = true;
3203 
3204  if (String.IsNullOrEmpty(tcCodigoIva.Trim()))
3205  {
3206  _Error_Message = String.Format(" Si trabaja con suplidos debe informar el tipo de {0}", (_GetOpcEmpMemory("wl_igic") ? "IGIC" : "IVA"));
3207  if (_FormMante != null) this._FormMante._SetError_OnControl("_TipoIVASuplipos", _Error_Message);
3208  lbOk = false;
3209  }
3210  else
3211  {
3212  TipoIVA loTipo = new TipoIVA
3213  {
3214  _Codigo = tcCodigoIva
3215  };
3216  loTipo._Load();
3217 
3218  if (loTipo._IVA > 0)
3219  {
3220  _Error_Message = String.Format("Debe informar un tipo de {0} al 0% para trabajar con suplidos", (_GetOpcEmpMemory("wl_igic") ? "IGIC" : "IVA"));
3221  if (_FormMante != null) this._FormMante._SetError_OnControl("_TipoIVASuplipos", _Error_Message);
3222  lbOk = false;
3223  }
3224  }
3225 
3226  return lbOk;
3227  }
3228 
3232  public override bool _Save()
3233  {
3234  Boolean bOk = true;
3235 
3236  // Podemos modificar información del mantenimiento de empresa
3237  if (base._Save())
3238  {
3239  //PE-99361
3240  if (_Estado == _EstadosMantenimiento.EsperandoCodigo)
3241  {
3242  //Si la empresa es nueva debemos crear contadors, series, ivas, meses ....
3243  bOk = bOk && _CreaDatosRelacionadosEmpresa();
3244  }
3245  else
3246  {
3247  _SaveContadores();
3248 
3249  bOk = bOk && _ContadoresVentas._Save();
3250 
3251  bOk = bOk && _ContadoresTPV._Save();
3252 
3253  bOk = bOk && _SaveLista("GESTION", "CONTADOR", _Codigo, ref _lisCamposCONTADORES, true);
3254  bOk = bOk && _SaveLista("GESTION", "FACTUCNF", _Codigo, ref _lisCamposFACTUCNF, true);
3255  bOk = bOk && _SaveLista("GESTION", "FLAGS", _Codigo, ref _lisCamposFLAGS, true);
3256  bOk = bOk && _SaveLista("GESTION", "CODIGOS", _Codigo, ref _lisCamposCODIGOS, true);
3257  bOk = bOk && _SaveLista("GESTION", "CFGFACT", _Codigo, ref _lisCamposCFGFACT, true);
3258  bOk = bOk && _SaveLista("GESTION", "MODCONFI", _Codigo, ref _lisCamposMODCONFI, true); // PE-90860
3259  bOk = bOk && _SaveLista("GESTION", "MODCCAN", _Codigo, ref _lisCamposMODCANARIAS, true);
3260 
3261  // PE-96744. Guardar datos de Social Media
3262  bOk = bOk && _SaveLista("COMUNES", "SOCIAL365", new string[] { "[EMPRESA]", "[TIPO]" }, new string[] { _Codigo, "1" }, ref _lisCamposSOCIALFACEBOOK, true);
3263  bOk = bOk && _SaveLista("COMUNES", "SOCIAL365", new string[] { "[EMPRESA]", "[TIPO]" }, new string[] { _Codigo, "2" }, ref _lisCamposSOCIALTWITTER, true);
3264  // FI PE-96744
3265 
3266  bOk = bOk && _SaveContaAnalitica();
3267 
3268  //PE-98706
3269  bOk = bOk && _SaveLista("COMUNES", "OTROSCFG", _Codigo, ref _lisCamposOTROSCFG, true);
3270  bOk = bOk && _SaveLista("GESTION", "CONTACNF", _Codigo, ref _lisCamposCONTACNF, true);
3271  bOk = bOk && _SaveLista("COMUNES", "CFGBABEL", _Codigo, ref _lisCamposCFGBABEL, true);
3272 
3273  bOk = bOk && _SaveLista("GESTION", "CFGFACT", _Codigo, ref _lisCamposCFGFACT, true);
3274  bOk = bOk && _SaveLista("COMUNES", "COMPRCNF", "", ref _lisCamposCOMPRCNF, true);
3275 
3276  bOk = bOk && _SetOpcEmp("50020", !_lImprimirSageReports); //PE-94391 => Imprimir true = deshabilitar false
3277  bOk = bOk && _ConfigTPV._Save();
3278 
3279  bOk = bOk && _SaveOpcionesGenerales();
3280  //PE-99421
3281  bOk = bOk && _SaveContadoresIvaSoportado();
3282 
3283  bOk = bOk && _CodigosAutorizacionSII._Save(); // TASK SII: Actualizamos los códigos de autorización
3284  if (_SIIGestionTerritorios) _CodigosAutorizacionSIITerritorio2._Save();
3285 
3286  //Modelos
3287  bOk = bOk && _TiposModelo417._Save();
3288  bOk = bOk && _TiposModelo115._Save();
3289  bOk = bOk && _TiposModelo111._Save();
3290  bOk = bOk && _TiposModelo303._Save();
3291  bOk = bOk && _TiposModelo347._Save();
3292  bOk = bOk && _TiposModelo349._Save();
3293 
3294  if (!_Hera) _ReportTemplates._Save();
3295 
3296  _SavePeriodosIvaRetencion();
3297  _SaveMeses();
3298 
3299  if (bOk)
3300  {
3301  //if (_EFactura) _SaveCertificado(); //PE-100493
3302  _Actualizar_Variables_Globales(); // PE-90860
3303 
3304  // Task 143008, si cambian cualquiera de los datos de configuración de la regla de la prorrata anotamos los cambios en la
3305  // tabla COMUNES!HISTPRTPRC
3306  //
3307  _SaveHistoPrcProrrata();
3308  }
3309 
3310  if (bOk && _GetOpcEmpMemory("WL_PARTI"))
3311  {
3312  _UpdateExercici();
3313  }
3314 
3315  string _lcEmpresa = EW_GLOBAL._GetVariable("wc_empresa").ToString().Trim();
3316  if (Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_PCostes")) != Convert.ToBoolean(DB.SQLValor("empresa", "codigo", _lcEmpresa, "pcostes", "GESTION")))
3317  {
3318  EW_GLOBAL._SetVariable("wl_PCostes", Convert.ToBoolean(DB.SQLValor("empresa", "codigo", _lcEmpresa, "pcostes", "GESTION")));
3319  _ReloadMenu50();
3320  }
3321  }
3322 
3323  // Comprobar si hay que instalar/actualizar algún visor
3324  if (bOk)
3325  {
3326  //_ComprobarVisores();
3327  if (_Estado == _EstadosMantenimiento.EntrandoNuevo)
3328  {
3329  CrearEmpresaEjercicios(); //Task 180201
3330  CrearPlantillasSepa(); //Task 186661
3331  }
3332  }
3333 
3334  return bOk;
3335  }
3336 
3337  return false;
3338  }
3339 
3344  public void _ReloadMenu50()
3345  {
3346  ControladorDesktop loControlador;
3347  loControlador = (ControladorDesktop)EW_GLOBAL._GetVariable("wo_ControladorDesktop");
3348  if (loControlador != null)
3349  {
3350  loControlador._RefreshWidgets(new Menu50());
3351  }
3352  }
3353 
3354  private Boolean _PeriodosModificados()
3355  {
3356  Boolean lbPartido = _GetOpcEmpMemory("WL_PARTI");
3357  DateTime loPeriodoIni, loPeriodoFin;
3358 
3359  loPeriodoIni = Convert.ToDateTime(EW_GLOBAL._GetVariable("wd_periodoini"));
3360  loPeriodoFin = Convert.ToDateTime(EW_GLOBAL._GetVariable("wd_periodofin"));
3361 
3362  return loPeriodoIni.Month != _PeriodoIni?.Month || loPeriodoFin.Month != _PeriodoFin?.Month || loPeriodoIni.Year != _PeriodoIni?.Year || loPeriodoFin.Year != _PeriodoFin?.Year || Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_parti")) != lbPartido;
3363  }
3364 
3370  {
3371  return _PeriodosModificados() || Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_parti")) != _GetOpcEmpMemory("WL_PARTI");
3372  }
3373 
3374  private Boolean _SaveMeses(Boolean tlNew = false)
3375  {
3376  Boolean lbOK = true;
3377 
3378  if (tlNew)
3379  {
3380  lbOK = MesesCerrados._Create(_Codigo, Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_parti")), Convert.ToDateTime(EW_GLOBAL._GetVariable("wd_periodoini")), Convert.ToDateTime(EW_GLOBAL._GetVariable("wd_periodofin")));
3381  }
3382  else if (_PeriodosModificados())
3383  {
3384  lbOK = MesesCerrados._RefreshData(_GetOpcEmpMemory("WL_PARTI"), Convert.ToDateTime(_PeriodoIni), Convert.ToDateTime(_PeriodoFin));
3385  }
3386 
3387  return lbOK;
3388  }
3389 
3390  private void _SavePeriodosIvaRetencion()
3391  {
3392  String lcCodigoEmpresa;
3393  PeriodosIva loPeriodosIva;
3394  PeriodosRetencion loPeriodosReten;
3395  DataTable loDt = Empresa._GetEmpresas(tcCampos: "CODIGO");
3396  Boolean lbPartido = _GetOpcEmpMemory("WL_PARTI");
3397 
3398  if (_DatosEjercicioModificados())
3399  {
3400  foreach (DataRow loRow in loDt.Rows)
3401  {
3402  lcCodigoEmpresa = Convert.ToString(loRow["CODIGO"]);
3403  loPeriodosIva = new PeriodosIva(lcCodigoEmpresa);
3404  loPeriodosIva._Load();
3405  loPeriodosIva._RefreshData(_PeriodoIni, _PeriodoFin, lbPartido);
3406 
3407  loPeriodosReten = new PeriodosRetencion(lcCodigoEmpresa);
3408  loPeriodosReten._Load();
3409  loPeriodosReten._RefreshData(_PeriodoIni, _PeriodoFin, lbPartido);
3410  }
3411  }
3412  }
3413 
3417  private bool _SaveContaAnalitica()
3418  {
3419  // Comprobamos si ha habido cambio en la imputación de analítica.
3420  if ((_lisCamposCONTACNF["IMPUTAR_AN"]._OldVal != _lisCamposCONTACNF["IMPUTAR_AN"]._NewVal) && (Convert.ToInt32(_lisCamposCONTACNF["IMPUTAR_AN"]._NewVal) == 1))
3421  {
3422  _lisCamposCONTACNF["PLAN1"]._NewVal = "";
3423  _lisCamposCONTACNF["PLAN2"]._NewVal = "";
3424  if (!Convert.ToBoolean(_lisCamposCONTACNF["SECUNDAR"]._NewVal))
3425  _lisCamposCONTACNF["NCAMBIARAN"]._NewVal = false;
3426  }
3427 
3428  return true;
3429  }
3430 
3431  private void _UpdateExercici()
3432  {
3433  String lcSql;
3434 
3435  //Actualizamos todas las empresas
3436  lcSql = String.Format("UPDATE {0} SET PERIODOINI = {1}, PERIODOFIN = {2} ", DB.SQLDatabase("GESTION", "EMPRESA"), DB.SQLString(_PeriodoIni), DB.SQLString(_PeriodoFin));
3437  DB.SQLExec(lcSql);
3438 
3439  //Actualizamos el perdiodo en exercici
3440  lcSql = String.Format("UPDATE {0} SET PERIODOINI = {1}, PERIODOFIN = {2} WHERE [ANY] = {3}", DB.SQLDatabase("COMUNES", "EJERCICI"), DB.SQLString(_PeriodoIni), DB.SQLString(_PeriodoFin), DB.Ejercicio_EW);
3441  DB.SQLExec(lcSql);
3442  }
3443 
3444 
3448  //private void _ComprobarVisores()
3449  //{
3450  // string lcMensaje = "";
3451 
3452  // if (_lInstalarVisorFacturaE)
3453  // lcMensaje = "-Visor factura electrónica" + Environment.NewLine;
3454 
3455  // if (_lInstalarVisorSII)
3456  // lcMensaje += "-Visor SII" + Environment.NewLine;
3457 
3458  // if (_lInstalarVisorBabel)
3459  // lcMensaje += "-Visor Babel" + Environment.NewLine;
3460 
3461  // if (string.IsNullOrWhiteSpace(lcMensaje))
3462  // return;
3463 
3464  // lcMensaje = "A continuación se procederá a la instalación de los siguientes visores de ficheros:" + Environment.NewLine + Environment.NewLine + lcMensaje + Environment.NewLine + Environment.NewLine +
3465  // "Es posible que el proceso tarde unos minutos.";
3466 
3467  // FUNCTIONS._MessageBox(lcMensaje, MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, DialogResult.OK);
3468 
3469  // if (_lInstalarVisorFacturaE)
3470  // {
3471  // if (!Visores._ComprobarVisor(Visores.TipoVisor.EFactura))
3472  // FUNCTIONS._MessageBox(Visores._ErrorMessage, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1, DialogResult.OK);
3473  // _lInstalarVisorFacturaE = false;
3474  // }
3475 
3476  // if (_lInstalarVisorSII)
3477  // {
3478  // if (!Visores._ComprobarVisor(Visores.TipoVisor.SII))
3479  // FUNCTIONS._MessageBox(Visores._ErrorMessage, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1, DialogResult.OK);
3480  // _lInstalarVisorSII = false;
3481  // }
3482 
3483  // if (_lInstalarVisorBabel)
3484  // {
3485  // if (!Visores._ComprobarVisor(Visores.TipoVisor.Babel))
3486  // FUNCTIONS._MessageBox(Visores._ErrorMessage, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1, DialogResult.OK);
3487  // _lInstalarVisorBabel = false;
3488  // }
3489  //}
3490 
3491 
3496  private Boolean _CreaDatosRelacionadosEmpresa()
3497  {
3498  Boolean bOk = true;
3499  DataTable loDt = new DataTable();
3500  String lcSql, lcValues, lcContador;
3501 
3502  //PE-99322
3503  _CreateDefaultOpcFlags();
3504 
3505  //PE-99701
3506  lcContador = Convert.ToString(EW_GLOBAL._GetVariable("wc_any")).Substring(2, 2);
3507  lcContador = String.Format("{0}{1}", lcContador, "5".PadRight(5, '0'));
3508 
3509  // Tener en cuenta ancho ampliable de almacen. Bug 142656
3510  int lnLenAlmacen = Convert.ToInt16(EW_GLOBAL._GetLenCampo(KeyDiccionarioLenCampos.wn_almacen));
3511  string lcAlmDef = "0".PadRight(lnLenAlmacen, '0');
3512 
3513  // Bug 162721 - Asignar la serie "SF"
3514  // Bug 161446 - Si tenemos activado el addon de conceptos facturables poner la serie de albaranes y facturas "SD"
3515  string lcSerie = "SF";
3516  string lcSerieFacDir = "";
3517  string lcTarifa = "";
3518  if (Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_ConceptosFacturables")))
3519  {
3520  lcSerieFacDir = lcSerie;
3521  lcTarifa = Tarifa._ExisteTarifaCodigo("TD");
3522  }
3523 
3524  //PE-99701 //PE-102141 Ponemos letra por defecto
3525  lcSql = String.Format("UPDATE {0} SET LETRA = "+DB.SQLString(lcSerie)+ ", MONEDA = '000', DECIMALES = 2, ARTICULO = 13, TPC = '999.99', FRACEE = {2}, ALMACEN = '{3}', ALMFABRI = '{3}', ALBFADI = '{4}', TARIFACF = '{5}' WHERE CODIGO = '{1}' ", DB.SQLDatabase("GESTION", "EMPRESA"), _Codigo, lcContador, lcAlmDef, lcSerieFacDir, lcTarifa);
3526  DB.SQLExec(lcSql);
3527 
3528  //Series //Bug 127567
3529  lcSql = String.Format(" INSERT INTO {0} (SERIE, TIPODOC, CONTADOR, EMPRESA) SELECT DISTINCT SERIE, TIPODOC, 0, '{1}' FROM {0} ", DB.SQLDatabase("GESTION", "SERIES"), _Codigo);
3530  DB.SQLExec(lcSql);
3531 
3532  //FLAGS
3533 
3534  bool trabajaConObras = Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_obra", false));
3535  bool trabajaConPeso = Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_peso", false));
3536 
3537  lcSql = String.Format(" INSERT INTO {0} (EMPRESA, POINT, SEPARATOR, BROWSER, INF_ADI, OBRA, PESO) VALUES ('{1}','.',',', '8421504', 1, {2}, {3} ) ",
3538  DB.SQLDatabase("GESTION", "FLAGS"),
3539  _Codigo,
3540  trabajaConObras ? DB.SQLTrue() : DB.SQLFalse(),
3541  trabajaConPeso ? DB.SQLTrue() : DB.SQLFalse());
3542  DB.SQLExec(lcSql);
3543 
3544  //LLIS_PER, LLIS_RET
3545  for (int lnI = 1; lnI <= 4; lnI++)
3546  {
3547 
3548  lcSql = String.Format(" INSERT INTO {0} (EMPRESA, PERIODO, PAG_SOPOR, PAG_REPER, LIQUIDADO, LIQUI_RET, PAG_COM, ASI_IVA, ASI_RET, VISTA) VALUES ('{1}','{2}', 0, 0, 0, 0, 0, '','', 0) ", DB.SQLDatabase("GESTION", "LLIS_PER"), _Codigo, lnI);
3549  DB.SQLExec(lcSql);
3550 
3551  lcSql = String.Format(" INSERT INTO {0} (EMPRESA, PERIODO, PAG_SOPOR, PAG_REPER, LIQUI_RET, PAG_COM, ASI_RET, VISTA) VALUES ('{1}','{2}', 0, 0, 0, 0, '', 0) ", DB.SQLDatabase("GESTION", "LLIS_RET"), _Codigo, lnI);
3552  DB.SQLExec(lcSql);
3553  }
3554 
3555  //FACTUCNF
3556  lcTarifa = Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_ConceptosFacturables")) ? lcTarifa : Tarifa._ObtenerTarifaDefecto();
3557  loDt = new DataTable();
3558  lcSql = String.Format("SELECT * FROM {0} WHERE 1 = 0", DB.SQLDatabase("GESTION", "FACTUCNF"));
3559  DB.SQLExec(lcSql, ref loDt);
3560 
3561  lcSql = " EMPRESA , CONVERSION, DIAS_ENTRE, UNIDADES, ALBAVEN, FACTUVEN, PEDIVEN, DEPOVEN, PRESUVEN, PEDICOM, ALBACOM, FACTUCOM, LETRACNV, GRANUNIDADES, MASCARAPES, ENVIO, ENVIO2, RECIBO, REC_ESPE, PRESUVEN2, RECCUOTA, PAGARE, TICKET, TIPO_IMP_PAGARE, ENTREGA, VALE, REPARTO, CAJAS, CALBDTOS, VALBDTOS, V_IVA_DOL, V_CTA_DOL, C_IVA_DOL, C_CTA_DOL, RUTAEXP, TARIFAPRET ";
3562  lcValues = string.Format("'{0}' ", _Codigo);
3563  lcValues += " , 1, 15, '999,999.99', 'ALBAVEN', 'FACTUVEN', 'PEDIVEN', 'DEPOVEN', 'PRESUVEN', 'PEDICOM', 'ALBACOM', 'FACTUCOM', 'LETRACNV' ,'999,999.99', '999,999.999', 'ENVIO', 'ENVIO2', 'RECIBO', 'REC_ESPE', 'PRESUVEN2', 'RECCUOTA', 'PAGARE', 'TICKET', 1, 'ENTREGA', 'VALE', 'HOJA_REP' ";
3564  bool trabajaConCajas = Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_cajas", false));
3565 
3566  lcValues += String.Format(", {0}, 2, 2, '03', '{1}' , '03', '{2}', '{3}', '{4}' ", trabajaConCajas ? DB.SQLTrue() : DB.SQLFalse(), FUNCTIONS._Punto_Por_Ceros("700000.1"), FUNCTIONS._Punto_Por_Ceros("600000.1"), Path.Combine(Convert.ToString(EW_GLOBAL._GetVariable("wc_iniservidor")), "DOCS_SAGE\\" + GrupoEmpresa._CodigoGrupoActual()), lcTarifa);
3567 
3568  //Bug 147964: Crear la carpeta de exportación de documentos si no existe
3569  if (!Directory.Exists(Path.Combine(Convert.ToString(EW_GLOBAL._GetVariable("wc_iniservidor")), "DOCS_SAGE\\" + GrupoEmpresa._CodigoGrupoActual())))
3570  Directory.CreateDirectory(Path.Combine(Convert.ToString(EW_GLOBAL._GetVariable("wc_iniservidor")), "DOCS_SAGE\\" + GrupoEmpresa._CodigoGrupoActual()));
3571 
3572  if (loDt.Columns.Contains("TIT_CENTRO"))
3573  {
3574  lcSql += ", TIT_CENTRO ";
3575  lcValues += ", 'Obras' ";
3576  }
3577 
3578  if (loDt.Columns.Contains("TRASPVEN"))
3579  {
3580  lcSql += ", TRASPVEN ";
3581  lcValues += ", 1 ";
3582  }
3583 
3584  if (loDt.Columns.Contains("TRASPCOM"))
3585  {
3586  lcSql += ", TRASPCOM ";
3587  lcValues += ", 1 ";
3588  }
3589 
3590  if (loDt.Columns.Contains("TIT_UNID"))
3591  {
3592  lcSql += ", TIT_UNID ";
3593  lcValues += ", 'Unidades' ";
3594  }
3595 
3596  if (loDt.Columns.Contains("TIT_CAJAS"))
3597  {
3598  lcSql += ", TIT_CAJAS ";
3599  lcValues += ", 'Cajas' ";
3600  }
3601 
3602  if (loDt.Columns.Contains("TIT_IMP_AR"))
3603  {
3604  lcSql += ", TIT_IMP_AR ";
3605  lcValues += ", 'Punto verde' ";
3606  }
3607 
3608  if (loDt.Columns.Contains("PRECOM"))
3609  {
3610  lcSql += ", PRECOM ";
3611  lcValues += ", 'PRECOM' ";
3612  }
3613 
3614  if (loDt.Columns.Contains("DEPCOM"))
3615  {
3616  lcSql += ", DEPCOM ";
3617  lcValues += ", 'DEPOCOM' ";
3618  }
3619 
3620  lcSql += ", LFPAGCUOTAS, LIMPFACTUCUOTAS, LIMPRECIBOCUOTA, LCONTADORCUOTAS ";
3621  lcValues += String.Format(", {0}, {0}, {0}, {0} ", DB.SQLTrue());
3622 
3623  //Bug 161669
3624  if (Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_ConceptosFacturables")))
3625  {
3626  lcSql += ", VENDEDORCUOTAS ";
3627  lcValues += ", '01' ";
3628  }
3629 
3630  lcSql = String.Format("INSERT INTO {0} ({1}) VALUES ({2})", DB.SQLDatabase("GESTION", "FACTUCNF"), lcSql, lcValues);
3631  DB.SQLExec(lcSql);
3632 
3633  //CFGFACT
3634  lcSql = String.Format(" INSERT INTO {0} (EMPRESA, REPFACT, IMPFACT, FACTAGRUP, PRESCAB1, IMPFACT2, PRESALB2, IMPCAB2, AGRUOBRA2, FACTALB2, FACTAGRUP2, PRESPREV2, AGRUPSER2) VALUES ('{1}', 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0) ", DB.SQLDatabase("GESTION", "CFGFACT"), _Codigo);
3635  DB.SQLExec(lcSql);
3636 
3637  //CONTACNF
3638  lcSql = String.Format(" INSERT INTO {0} (EMPRESA, DIAS_RIESGO, CARTAS, DIRPAGA, RUTA_SEPA, COBROEFEC, RUTA_LIBR, AUTIVARET ) VALUES ('{1}', 15, '{2}', '{3}', '{4}', '{5}', '{6}' , 1) ", DB.SQLDatabase("GESTION", "CONTACNF"), _Codigo, Path.Combine(Convert.ToString(EW_GLOBAL._GetVariable("wc_iniservidor")), "Reports"), Path.Combine(Convert.ToString(EW_GLOBAL._GetVariable("wc_iniservidor")), @"Reports\Pagares\"), Path.Combine(Convert.ToString(EW_GLOBAL._GetVariable("wc_pathinicio")), @"Reports\Remesas\"), Convert.ToString(EW_GLOBAL._GetVariable("wc_ctacobroefec")), Path.Combine(Convert.ToString(EW_GLOBAL._GetVariable("wc_iniservidor")), @"Libros\"));
3639  DB.SQLExec(lcSql);
3640 
3641  //CODIGOS //PE-102591
3642  // Añadimos los registros correspondientes en la tabla GESTION!CODIGOS para la empresa actual
3643  String tccPathInicio, tcFileRutaIped;
3644  string tcIntrastat = @"Documentos\INTRASTAT\";
3645  int lnLenVendedor = Convert.ToInt32(EW_GLOBAL._GetLenCampo(KeyDiccionarioLenCampos.wn_vendedor)); //Bug 124355: Puede ser que el vendedor sea de más de 2 dígitos. Utilizamos su longitud
3646  string lcVendedor = "'" + new string('0', lnLenVendedor - 1) + "1'";
3647 
3648  tccPathInicio = Convert.ToString(EW_GLOBAL._GetVariable("wc_pathinicio"));
3649  tcFileRutaIped = Path.Combine(tccPathInicio, tcIntrastat);
3650 
3651  lcSql = String.Format(" INSERT INTO {0} (EMPRESA, PAIS, VENDEDOR, OPERARIO, MODOTRANS, NAT1, NAT2, REGESTAT, RUTAIDEP ) VALUES ('{1}', '034', " + lcVendedor + ", '01', '3', 9, 1, 1, {2}) ", DB.SQLDatabase("GESTION", "CODIGOS"), _Codigo, DB.SQLString(tcFileRutaIped));
3652  DB.SQLExec(lcSql);
3653 
3654  //PE-99594 CFGBABEL
3655  lcSql = $@"IF NOT EXISTS (SELECT 1 FROM {DB.SQLDatabase("COMUNES", "CFGBABEL")} WHERE EMPRESA = '{_Codigo}' ) INSERT INTO {DB.SQLDatabase("COMUNES", "CFGBABEL")} (EMPRESA, URL, EXP_USER, EXP_PLANCTA, EXP_ASIENTO, EXP_NOTRASPAS, WEBSERVICE ) VALUES ('{_Codigo}', 'https://spa.sage.es/accesoSPA.aspx', 1, 1, 1, 1, 'https://spa.sage.es/sage/sagebagws.asmx ' )";
3656  DB.SQLExec(lcSql);
3657 
3658  // Bug 137907. Mirar si alguna empresa trabaja con SERIES, para activarlo
3659  string lcSeries = "5439"; // Código para indicar que no se trabaja con SERIES
3660  if (!string.IsNullOrWhiteSpace(Convert.ToString(DB.SQLValor("CONTADOR", "SERIES", DB.SQLString(8758), "EMPRESA"))))
3661  lcSeries = "8758"; // Código para indicar que se trabaja con SERIES
3662 
3663  //PE-99695
3664  lcContador = Convert.ToString(EW_GLOBAL._GetVariable("wc_any")).Substring(2, 2).PadRight(7, '0');
3665  lcSql = String.Format("INSERT INTO {0} (EMPRESA, CUOTAS, SERIES) VALUES ('{1}', {2}, {3})", DB.SQLDatabase("GESTION", "CONTADOR"), _Codigo, lcContador, lcSeries);
3666  DB.SQLExec(lcSql);
3667 
3668  //PE-101295 Creamos los idiomas
3669  DataTable loDtIdiomas = Idiomas._GetIdiomas();
3670 
3671  if (loDtIdiomas.Rows.Count > 0)
3672  {
3673  loDtIdiomas = loDtIdiomas.AsEnumerable().GroupBy(r => r.Field<string>("CODIGO")).Select(g => g.First()).CopyToDataTable();
3674 
3675  foreach (DataRow loRowIdioma in loDtIdiomas.Rows)
3676  {
3677 
3678  Idiomas loIdioma = new Idiomas();
3679  loIdioma._Empresa = _Codigo;
3680  loIdioma._Codigo = Convert.ToString(loRowIdioma["CODIGO"]);
3681  loIdioma._Nombre = Convert.ToString(loRowIdioma["NOMBRE"]);
3682 
3683  loIdioma._Pediven = "PEDIVEN";
3684  loIdioma._Albaven = "ALBAVEN";
3685  loIdioma._Factuven = "FACTUVEN";
3686  loIdioma._Ticket = "TICKET";
3687  loIdioma._Depoven = "DEPOVEN";
3688  loIdioma._Presuven = "PRESUVEN";
3689  loIdioma._Presuven2 = "PRESUVEN2";
3690  loIdioma._Entrega = "ENTREGA";
3691  loIdioma._Vale = "VALE";
3692  loIdioma._Pedicom = "PEDICOM";
3693  loIdioma._Albacom = "ALBACOM";
3694  loIdioma._Factucom = "FACTUCOM";
3695  loIdioma._Precom = "PRECOM";
3696  loIdioma._Depcom = "DEPOCOM"; //Bug 109060
3697 
3698  loIdioma._Save();
3699  }
3700  }
3701 
3702  _SaveMeses(true);
3703 
3704  // Añadimos los registros correspondientes en la tabla GESTION!CODIGOS para la empresa actual
3705  lcSql = String.Format(" UPDATE {0} SET MODOTRANS = '3', NAT1 = 9, NAT2 = 1, REGESTAT = 1, RUTAIDEP = {2} WHERE EMPRESA = '{1}' ",
3706  DB.SQLDatabase("GESTION", "CODIGOS"),
3707  _Codigo, DB.SQLString(tcFileRutaIped));
3708  DB.SQLExec(lcSql);
3709 
3710 
3711  _ReportTemplates._CreateRelTemplate(_Codigo);
3712 
3713  //Bug 135072 Faltan períodos de IVA y de RETENCIONES
3714  crearPeriodosIva();
3715  crearPeriodosRetenciones();
3716 
3717  // Bug 145856
3718  crearContadoresSoportado();
3719 
3720  crearConfiguracionModelos();
3721 
3722  crearConfiguracionTPV();
3723 
3724  return bOk;
3725  }
3726 
3730  private void crearConfiguracionTPV()
3731  {
3732  string lcSql;
3733  DataTable ldtTemp = new DataTable();
3734  //Comprobamos si la forma de cobro por defecto de vales existe y está creada
3735  lcSql = "SELECT codigo FROM " + DB.SQLDatabase("TPV", "F_COBROS") +
3736  " WHERE codigo = " + DB.SQLString("03") + " AND nombre = " + DB.SQLString("VALES");
3737  DB.SQLExec(lcSql, ref ldtTemp);
3738 
3739  if (ldtTemp != null && ldtTemp.Rows.Count > 0)
3740  {
3741  _ConfigTPV = new ConfigTPV(_Codigo);
3742  _ConfigTPV._Save();
3743  // Updatamos registro en CONFTPV con el campo VALE para que tenga esta forma de cobro 03 por defecto, la misma que cuando se crea un nuevo grupo
3744  lcSql = "UPDATE " + DB.SQLDatabase("TPV", "CONFTPV") +
3745  " SET VALE = " + DB.SQLString("03") +
3746  " WHERE EMPRESA = " + DB.SQLString(_Codigo);
3747  DB.SQLExec(lcSql);
3748  }
3749  FUNCTIONS._DisposeDatatable(ldtTemp);
3750  }
3751 
3757  private void crearPeriodosEn(string tcTabla, int tnTotalPeriodos)
3758  {
3759  string lcSql = String.Empty;
3760  int mesesPorPerido = 12 / tnTotalPeriodos;
3761 
3762  DateTime inicioPeriodo = (DateTime)EW_GLOBAL._GetVariable("wd_periodoini");
3763 
3764  for (int periodo = 1; periodo <= tnTotalPeriodos; periodo++)
3765  {
3766  DateTime ultimoDiaPeriodo = inicioPeriodo.AddMonths(periodo * mesesPorPerido).AddDays(-1);
3767  string lcFechaFinPeriodo = DB.SQLString(ultimoDiaPeriodo);
3768 
3769  lcSql += "INSERT INTO " + DB.SQLDatabase(tcTabla) + " (PERIODO, SOPOR, REPER, EMPRESA) " +
3770  "VALUES (" + periodo + ", " + lcFechaFinPeriodo + ", " + lcFechaFinPeriodo + ", " + DB.SQLString(_Codigo) + "); ";
3771  }
3772  DB.SQLExec(lcSql);
3773  }
3774 
3775  private void crearPeriodosRetenciones()
3776  {
3777  crearPeriodosEn("DATA_RET", 4);
3778  }
3779 
3780  private void crearPeriodosIva()
3781  {
3782  crearPeriodosEn("DATA_IVA", 4);
3783  }
3784 
3788  private void crearContadoresSoportado()
3789  {
3790  // Obtener los distintos tipos de contadores de IVA soportado que existen
3791  DataTable ldtConta = new DataTable();
3792  string lcSql = String.Format("SELECT CODIGO FROM {0}", DB.SQLDatabase("GESTION", "ORD_SOPM"));
3793  bool llOk = DB.SQLExec(lcSql, ref ldtConta);
3794 
3795  if (llOk && ldtConta.Rows.Count > 0)
3796  {
3797  // Asegurar que para la empresa actual existan todos los contadores de IVA soportado existentes
3798  foreach (DataRow loContador in ldtConta.Rows)
3799  {
3801  loContEmp._Codigo = Convert.ToString(loContador["codigo"]);
3802  loContEmp._Save();
3803  }
3804  }
3805  }
3806 
3810  private void crearConfiguracionModelos()
3811  {
3812  if (_TiposModelo303 == null || _TiposModelo303 != null && _TiposModelo303._TiposModelo.Count() == 0)
3813  crearConfiguracionModelosTiposIva303();
3814 
3815  crearConfiguracionModelosRetenciones();
3816  }
3817 
3821  private void crearConfiguracionModelosTiposIva303()
3822  {
3823  bool llOk = false;
3824  string lcSql = string.Empty;
3825  int lnLinea = 1;
3826  DataTable ldtTipos_Iva = new DataTable();
3827  DataTable ldtModTipo = new DataTable();
3828  Dictionary<string, string> dictValoresModelo = new Dictionary<string, string>();
3829 
3830  llOk = DB.SQLExec("SELECT tipo_iva from " + DB.SQLDatabase("GESTION", "MODTIPO") + " WHERE empresa = " + DB.SQLString(_Codigo) + " AND modelo = '303'", ref ldtModTipo);
3831 
3832  if (llOk && ldtModTipo.Rows.Count == 0) // Si tenemos registros no ha de actualizar nada, no debería de pasar nunca ...
3833  {
3834  llOk = DB.SQLExec("SELECT codigo from " + DB.SQLDatabase("GESTION", "TIPO_IVA"), ref ldtTipos_Iva);
3835 
3836  if (llOk)
3837  {
3838  dictValoresModelo = configuracionModelo303();
3839 
3840  foreach (KeyValuePair<string, string> loValorModelo in dictValoresModelo)
3841  {
3842  lnLinea = 1;
3843 
3844  string[] lstTipos_Iva = loValorModelo.Value.Split(','); // Si no tenemos la "," igualmente tendremos un elemento
3845 
3846  if (lstTipos_Iva.Count() > 0)
3847  {
3848  foreach (string lcTipo_Iva in lstTipos_Iva)
3849  {
3850  if (ldtTipos_Iva.AsEnumerable().Where(myRow => (myRow.Field<string>("codigo") == lcTipo_Iva)).ToList<DataRow>().Count() > 0) // Cerfificamos que existe el código de IVA
3851  {
3852  insertModTipo("303", loValorModelo.Key, lcTipo_Iva, lnLinea);
3853  lnLinea++;
3854  }
3855  }
3856  }
3857  }
3858  }
3859  }
3860 
3861  dictValoresModelo.Clear();
3862  ldtTipos_Iva.Clear();
3863  ldtModTipo.Clear();
3864  ldtTipos_Iva.Dispose();
3865  ldtModTipo.Dispose();
3866  }
3867 
3871  private void CrearEmpresaEjercicios()
3872  {
3873  // Solamente tiene sentido al crear nueva empresa
3874  if (_Estado != _EstadosMantenimiento.EntrandoNuevo)
3875  return;
3876 
3877  // Coger los ejercicios superiores al actual
3878  string lcEjerAct = Convert.ToString(EW_GLOBAL._GetVariable("wc_any"));
3879 
3880  // Obtener ejercicios
3881  List<string> lstEjer = CrearEmpresaEjerciciosLista(lcEjerAct);
3882  if (lstEjer == null || lstEjer.Count == 0)
3883  return;
3884 
3885  int lnEjerAdd = 0;
3886 
3887  // Lista de tablas de gestión a copiar los registros
3888  List<string> listGestion = new List<string>() { "EMPRESA", "CFGFACT", "CONTADO", "CONTADOR", "CONTACNF", "LLIS_PER", "MESES", "FACTUCNF",
3889  "FLAGS", "CODIGOS", "SERIES", "DATA_IVA", "DATA_RET", "LLIS_RET",
3890  "MODCONFI", "MODTIPO", "MODVARIO", "MODCCAN", "ORD_SOP"};
3891 
3892  // Recorrer ejercicios
3893  foreach (string lcEjerDest in lstEjer)
3894  {
3895  //Si encontramos en un ejercicio que existe la empresa, no continuamos con los siguientes
3896  if (ExisteEmpresaEjer(lcEjerDest))
3897  break;
3898 
3899  ++lnEjerAdd;
3900 
3901  //Recorrer las tablas y hacer el traspaso
3902  foreach(string lcTabla in listGestion)
3903  {
3904  // Crear la clase para los parámetros
3905  _Params loParams = new _Params();
3906  loParams._BdOrigen = lcEjerAct;
3907  loParams._BdDestino = lcEjerDest;
3908  loParams._Tabla = lcTabla;
3909  loParams._Condicion = (lcTabla == "EMPRESA" ? "codigo" : "empresa") + $" = {DB.SQLString(_Codigo)}";
3910 
3911  try
3912  {
3913  CrearEmpresaEjercicioTabla(loParams, lnEjerAdd);
3914  }
3915  catch (Exception loEx)
3916  {
3917  DB.Registrar_Error(new Exception("Crear empresa "+_Codigo+" en el ejercicio "+lcEjerDest+", error en la tabla '"+lcTabla+"' (" + loEx.Message + ")."));
3918  }
3919  }
3920  }
3921  }
3922 
3927  private bool CrearEmpresaEjercicioTabla(_Params toParams, int tnEjerAdd)
3928  {
3929  string lcSql = string.Empty;
3930 
3931  // Realizar el traspaso de datos
3932  if (!Functions._TraspasarDatosEjer(toParams))
3933  {
3934  DB.Registrar_Error(new Exception("Crear empresa " + _Codigo + " en el ejercicio " + toParams._BdDestino + ", error en la tabla '" + toParams._Tabla+"' (" + DB.Error_Message + ")."));
3935  return false;
3936  }
3937 
3938  // Acciones adicionales después del traspaso
3939  switch (toParams._Tabla.ToLower())
3940  {
3941  case "empresa":
3942  lcSql = $@"
3943  UPDATE {DB.SQLDatabase(toParams._BdDestino, toParams._Tabla)}
3944  SET periodoini = dateadd(year, {tnEjerAdd.ToString()}, periodoini),
3945  periodofin = dateadd(year, {tnEjerAdd.ToString()}, periodofin)
3946  WHERE codigo = {DB.SQLString(_Codigo)}";
3947  break;
3948  case "data_iva":
3949  case "data_ret":
3950  lcSql = $@"
3951  UPDATE {DB.SQLDatabase(toParams._BdDestino, toParams._Tabla)}
3952  SET reper = dateadd(year, {tnEjerAdd.ToString()}, reper),
3953  sopor = dateadd(year, {tnEjerAdd.ToString()}, sopor)
3954  WHERE empresa = {DB.SQLString(_Codigo)}";
3955  break;
3956  }
3957 
3958 
3959  // Ejecutar instrucción SQL
3960  if (!string.IsNullOrWhiteSpace(lcSql))
3961  {
3962  bool llOk = DB.SQLExec(lcSql);
3963  if (!llOk)
3964  {
3965  DB.Registrar_Error(new Exception("Error al crear la empresa '" + _Codigo + " en la tabla '" + toParams._Tabla + "' (" + DB.Error_Message + ")."));
3966  return false;
3967  }
3968  }
3969 
3970  return true;
3971  }
3972 
3973 
3979  private List<string> CrearEmpresaEjerciciosLista(string tcEjer)
3980  {
3981  List<string> lstEjer = null;
3982 
3983  try
3984  {
3985  lstEjer = DB._oAliasDBEjer.AsEnumerable().Where(x => Convert.ToInt16(x.Key) > Convert.ToInt16(tcEjer)).Select(y => y.Key).OrderBy(c => c).ToList();
3986  }
3987  catch (Exception loEx)
3988  {
3989  lstEjer = null;
3990  DB.Registrar_Error(new Exception("Crear empresa nueva, error al obtener los ejercicios "+ "' (" + loEx.Message + ")."));
3991  }
3992 
3993  return lstEjer;
3994  }
3995 
4000  private bool ExisteEmpresaEjer(string tcEjer)
4001  {
4002  DataTable ldTemp = new DataTable();
4003 
4004  string lcSql = $"Select codigo from {DB.SQLDatabase(tcEjer, "empresa")} where codigo = {DB.SQLString(_Codigo)}";
4005  bool llOk = DB.SQLExec(lcSql, ref ldTemp);
4006  llOk = llOk && ldTemp != null && ldTemp.Rows.Count > 0;
4007 
4008  FUNCTIONS._DisposeDatatable(ldTemp);
4009  return llOk;
4010  }
4011 
4015  private void CrearPlantillasSepa()
4016  {
4017  // Solamente tiene sentido al crear nueva empresa
4018  if (_Estado != _EstadosMantenimiento.EntrandoNuevo)
4019  return;
4020 
4021  // Eliminar plantilla que existiera
4022  string lcSql = $@"
4023  delete from {DB.SQLDatabase("COMUNES", "plsepa_c")} where empresa = {DB.SQLString(_Codigo)};
4024  delete from {DB.SQLDatabase("COMUNES", "plsepa_d")} where empresa = {DB.SQLString(_Codigo)}";
4025  bool llOk = DB.SQLExec(lcSql);
4026 
4027  // Crear la clase para los parámetros
4028  _Params loParams = new _Params();
4029  loParams._BdOrigen = DB.DbComunes;
4030  loParams._BdDestino = DB.DbComunes;
4031  loParams._Tabla = "PLSEPA_C";
4032  loParams._Condicion = "regbase50 = " + DB.SQLTrue();
4033  loParams._DicValores = new Dictionary<string, string>();
4034  loParams._DicValores.Add("empresa", _Codigo);
4035  loParams._DicValores.Add("basep", "0");
4036  loParams._DicValores.Add("regbase50", "0");
4037 
4038  // Copiar registros de PLSEPA_C
4039  if (!Functions._TraspasarDatosEjer(loParams))
4040  DB.Registrar_Error(new Exception("Crear empresa " + _Codigo + " , error en la tabla '" + loParams._Tabla + "' (" + DB.Error_Message + ")."));
4041 
4042  loParams._Tabla = "PLSEPA_D";
4043 
4044  // Copiar registros de PLSEPA_D
4045  if (!Functions._TraspasarDatosEjer(loParams))
4046  DB.Registrar_Error(new Exception("Crear empresa " + _Codigo + " , error en la tabla '" + loParams._Tabla + "' (" + DB.Error_Message + ")."));
4047  }
4048 
4053  private bool ExisteEmpresaEjercicios()
4054  {
4055  bool llExiste = false;
4056  List<string> lstEjer = CrearEjerciciosLista();
4057  if (lstEjer == null || lstEjer.Count == 0)
4058  return llExiste;
4059 
4060  DataTable dtTemp = new DataTable();
4061  string lcSql = $@" select codigo
4062  From [multiples_ejercicios].dbo.empresa
4063  where codigo = {DB.SQLString(_Codigo)}";
4064  DB.SQLExecEjer(lcSql, ref dtTemp, lstEjer.ToArray());
4065 
4066  llExiste = dtTemp != null && dtTemp.Rows.Count > 0;
4067  FUNCTIONS._DisposeDatatable(dtTemp);
4068 
4069  return llExiste;
4070  }
4071 
4076  private List<string> CrearEjerciciosLista()
4077  {
4078  List<string> lstEjer = null;
4079 
4080  try
4081  {
4082  lstEjer = DB._oAliasDBEjer.AsEnumerable().Where(x => Convert.ToInt16(x.Key) != Convert.ToInt16(EW_GLOBAL._GetVariable("wc_any"))).Select(y => y.Key).OrderBy(c => c).ToList();
4083  }
4084  catch (Exception loEx)
4085  {
4086  lstEjer = null;
4087  DB.Registrar_Error(new Exception("Error al obtener lista ejercicios " + "' (" + loEx.Message + ")."));
4088  }
4089 
4090  return lstEjer;
4091  }
4092 
4093 
4098  private Dictionary<string, string> configuracionModelo303()
4099  {
4100  Dictionary<string, string> dictValoresModelo = new Dictionary<string, string>();
4101  dictValoresModelo.Add("DEV_01", "01"); // IVA Devengado - Primer IVA - 01
4102  dictValoresModelo.Add("DEV_02", "02"); // IVA Devengado -Segundo IVA - 02
4103  dictValoresModelo.Add("DEV_03", "03"); // IVA Devengado -Tercer IVA - 03
4104  dictValoresModelo.Add("DEV_04", "04,05,06"); // IVA Devengado - Adquisiciones intracomunitarias de bienes y servicios - 04,05,06
4105  dictValoresModelo.Add("SER_01", "11,12,13"); // Otras operaciones con Inversión del Sujeto Pasivo(Excepto ADQ.Intracom.) - 11,12,13
4106  dictValoresModelo.Add("DED_01", "01,02,03,11,12,13"); // IVA Deducible por cuotas soportadas de las operaciones interiores corrientes - 01,02,03,11,12,13
4107  dictValoresModelo.Add("DED_03", "04,05,06"); // IVA Deducible en adquisiciones intracomunitarias de bienes corrientes - 04,05,06
4108 
4109  return dictValoresModelo;
4110  }
4111 
4120  private bool insertModTipo(string tcModelo, string tcTipo, string tcTipo_Iva, int tnLinea)
4121  {
4122  bool llOk = DB.SQLExec("INSERT INTO " + DB.SQLDatabase("GESTION", "MODTIPO") +
4123  " (empresa, modelo, tipo, tipo_iva, linea) " +
4124  " VALUES (" + DB.SQLString(_Codigo) + "," + DB.SQLString(tcModelo) + "," + DB.SQLString(tcTipo) + ", " + DB.SQLString(tcTipo_Iva) + ", " + DB.SQLString(tnLinea) + " )");
4125 
4126  return llOk;
4127  }
4128 
4132  private void crearConfiguracionModelosRetenciones()
4133  {
4134  bool llOk = false;
4135  string lcSql = string.Empty;
4136 
4137  DataTable ldtG_Contri = new DataTable();
4138  DataTable ldtModVario = new DataTable();
4139  Dictionary<string, List<string>> dictValoresModelo = new Dictionary<string, List<string>>();
4140 
4141  llOk = DB.SQLExec("SELECT valor from " + DB.SQLDatabase("GESTION", "MODVARIO") + " WHERE empresa = " + DB.SQLString(_Codigo) + " AND modelo = '190'", ref ldtModVario);
4142 
4143  if (llOk && ldtModVario.Rows.Count == 0) // Si tenemos registros no ha de actualizar nada, no debería de pasar nunca ...
4144  {
4145  llOk = DB.SQLExec("SELECT codigo from " + DB.SQLDatabase("COMUNES", "G_CONTRI"), ref ldtG_Contri);
4146 
4147  if (llOk)
4148  {
4149  dictValoresModelo = configuracionModelosRet();
4150 
4151  foreach (KeyValuePair<string, List<string>> loValorModelo in dictValoresModelo)
4152  {
4153  List<string> lstValores = loValorModelo.Value;
4154 
4155  if (lstValores.Count() > 1)
4156  {
4157  string lcCodigoGrupo = lstValores[0];
4158 
4159  if (ldtG_Contri.AsEnumerable().Where(myRow => (myRow.Field<string>("codigo") == lcCodigoGrupo)).ToList<DataRow>().Count() > 0) // Cerfificamos que existe el código de grupo de contribuyente
4160  {
4161  int lnLinea = Convert.ToInt16(lstValores[1]);
4162  insertModVario("190", loValorModelo.Key, lcCodigoGrupo, lnLinea);
4163  }
4164  }
4165  }
4166  }
4167  }
4168 
4169  dictValoresModelo.Clear();
4170  ldtG_Contri.Clear();
4171  ldtModVario.Clear();
4172  ldtG_Contri.Dispose();
4173  ldtModVario.Dispose();
4174  }
4175 
4176  private Dictionary<string, List<string>> configuracionModelosRet()
4177  {
4178  Dictionary<string, List<string>> dictValoresModelo = new Dictionary<string, List<string>>();
4179 
4180  dictValoresModelo.Add("actividi", new List<string>() { "02", "3" }); // Rendimientos de actividades económicas
4181  dictValoresModelo.Add("alquiler", new List<string>() { "05", "10" }); // Arrendamientos
4182  dictValoresModelo.Add("partidi", new List<string>() { "04", "5" }); // Premios
4183  dictValoresModelo.Add("trabadi", new List<string>() { "01", "1" }); // Rendimientos del trabajo
4184 
4185  return dictValoresModelo;
4186  }
4187 
4196  private bool insertModVario(string tcModelo, string tcTipo, string tcG_Contri, int tnLinea)
4197  {
4198  bool llOk = DB.SQLExec("INSERT INTO " + DB.SQLDatabase("GESTION", "MODVARIO") +
4199  " (empresa, modelo, tipo, valor, linea) " +
4200  " VALUES (" + DB.SQLString(_Codigo) + "," + DB.SQLString(tcModelo) + "," + DB.SQLString(tcTipo) + ", " + DB.SQLString(tcG_Contri) + ", " + DB.SQLString(tnLinea) + " )");
4201 
4202  return llOk;
4203  }
4204 
4209  private bool _SaveContadoresIvaSoportado()
4210  {
4211  String lcSql = "";
4212 
4213  foreach (DataRow loDrow in _ContadoresIvaSoportado.Rows)
4214  {
4215  if (Convert.ToString(loDrow["contador"]) != Convert.ToString(loDrow["contador_inicial"]))
4216  {
4217  if (Convert.ToString(loDrow["serie"]) == "00")
4218  {
4219  lcSql += String.Format("UPDATE {0} SET ORDEN = {1} WHERE CODIGO = '{2}' ", DB.SQLDatabase("GESTION", "EMPRESA"), loDrow["contador"], this._Codigo) + ";";
4220  }
4221  else
4222  {
4223  lcSql += String.Format("UPDATE {0} SET CONTADOR = {1} WHERE EMPRESA = '{2}' AND SERIE = '{3}' AND TIPODOC = {4} ", DB.SQLDatabase("GESTION", "ORD_SOP"), loDrow["contador"], this._Codigo, loDrow["serie"], loDrow["tipodoc"]) + ";";
4224  }
4225  }
4226  }
4227 
4228  // Task 131304. Ejecutamos todos los updates en una sola instrucción. Optimización
4229  if (!string.IsNullOrWhiteSpace(lcSql))
4230  DB.SQLExec(lcSql);
4231 
4232  return true;
4233  }
4234 
4239  public bool _SaveCertificado()
4240  {
4241  return _SaveLista("GESTION", "CFGFACT", _Codigo, ref _lisCamposCFGFACT);
4242  }
4243 
4247  private void _Actualizar_Variables_Globales()
4248  {
4249  if (_Codigo != Convert.ToString(EW_GLOBAL._GetVariable("wc_empresa"))) // Bug 134267. Se llama únicamente desde el _Save, si estabamos edidando/creando otra empresa no ha de actualizar nada
4250  return;
4251 
4253 
4254  // PE-97014
4255  if (Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_sage50")))
4256  {
4257  object[] loParametres = new object[1] { _Codigo };
4258  NETVFP._Ejecutar_Funcion_VFP("Sage50_CambiarEmpresa", loParametres);
4259  }
4260  else
4261  NETVFP._Ejecutar_Funcion_VFP("wo_pripal.Carga_Empresa");
4262  // FI PE-97014
4263 
4264  // Recargamos la variable global de empresa por si se han producido cambios en la misma
4265  if (_Codigo == Convert.ToString(EW_GLOBAL._GetVariable("wc_empresa")))
4266  {
4267  string lcCodEmpresa = _Codigo; //hacemos una copia del código, pq EW_GLOBAL._Empresa._Codigo y _codigo son lo mismo y al vaciarlo se perdía el código
4268  EW_GLOBAL._Empresa._Codigo = "";
4269  EW_GLOBAL._Empresa._Codigo = lcCodEmpresa; // Task 131304. Utilizar la instancia actual en vez de crear otra nueva. Optimización.
4270  }
4271  }
4272 
4280  private bool Delete_Table(string tcDatabase, string tcTable, string tcWhere)
4281  {
4282  bool lbOk = false;
4283  string lcSql = string.Empty;
4284 
4285  lcSql = "DELETE FROM " + DB.SQLDatabase(tcDatabase, tcTable) + " " +
4286  "WHERE " + tcWhere;
4287 
4288  lbOk = DB.SQLExec(lcSql);
4289 
4290  if (!lbOk)
4291  {
4292  _Error_Message = "Error al borrar los registros con la empresa '" + _Codigo + "' en la tabla '" + tcTable + "' ";
4293  }
4294 
4295  return lbOk;
4296  }
4297 
4302  public override bool _Delete()
4303  {
4304  // Declaración de variables
4305  bool lbDelete = false;
4306 
4307  ActualizarBarraProgreso();
4308 
4309  //PE-99853 Validamos que haya más de una empresa de tipo normal
4310  if (_GetEmpresas(String.Format(" TIPO <> '{0}'", Convert.ToString(TipoEmpresa.Consolidada))).Rows.Count > 1)
4311  {
4312  // Si estaba creando una empresa y cancelo, hace este Empresa._Delete() en el que estoy, pero no hace falta
4313  // que mire nada de Sage Contacts en Overdrive pues es imposible que haya nada que borrar "arriba".
4314  // Solo lo haré por tanto caso de que esté borrando realmente una empresa creada anteriormente.
4315  if (this._Estado != _EstadosMantenimiento.EntrandoNuevo)
4316  {
4317  //PE-104237: Overdrive borrar configuración del dataset de contacts
4318  try
4319  {
4320  Overdrive loOverdrive = new Overdrive(DB.DbComunes.Trim().Substring(4, 4));
4321  loOverdrive.DeleteDataSetContacts(Convert.ToString(this._Codigo));
4322  }
4323  catch (Exception loEx)
4324  {
4325  //Registrar error en LOG_ERROR
4326  DB.Escribir_En_Log_Error(DB.Modo_Registro.Registro_Error, loEx);
4327  }
4328  }
4329 
4330  ActualizarBarraProgreso();
4331  CheckManteTRelInicio(); //Bug 214681
4332 
4333  // Realizamos el borrado del registro de la empresa
4334  lbDelete = (base._Delete());
4335 
4336  CheckManteTRelFin(); //Bug 214681
4337  ActualizarBarraProgreso();
4338 
4339  if (lbDelete)
4340  {
4341  // Declaración de variables
4342  string lcSql = string.Empty;
4343  string lcWhere = string.Empty;
4344  string lcWhere_Empresa = "empresa = '" + this._Codigo + "' ";
4345  string lcDatabase = string.Empty;
4346  DataTable ldtTables = new DataTable();
4347 
4348  // Creamos una lista con las tablas de las BD de GESTION y de COMUNES
4349  List<string> listComunes = new List<string>() { "BLOQUEOS", "PREVIS", "PREVI_CL", "PREVIOBS", "STOCKENV", "CUOTAS", "DATA_IV2", "OPCEMP", "DATA_RE2", "ACC_HIST", "CFGBABEL", "ESCALADO", "EMGRUPOS", "PLSEPA_C", "PLSEPA_D" };
4350 
4351  List<string> listGestion = new List<string>() { "ACCESOS", "MENUS", "ALB_FPAG", "ASIDEFSE", "ASIENTOS", "ASIULT", "BAL1", "BAL2", "D_ALBARE", "C_ALBARE",
4352  "D_ALBATR", "C_ALBATR", "D_ALBCOM", "C_ALBCOM","D_ALBDEP", "C_ALBDEP", "D_ALBVEN", "C_ALBVEN","D_PEDICO", "C_PEDICO",
4353  "D_PEDIVE", "C_PEDIVE", "REGULARI", "STOCKINI", "CONTACNF", "OTRASIEN", "PAGARE_C", "PAGARE_P", "REMESA", "RETREPER",
4354  "RETSOPOR", "SALDOS", "IVAREPER", "IVASOPOR", "LLIS_PER", "MESES", "CONSOLID", "FACTUCNF", "CONTACNF", "C_PRESUV",
4355  "D_PRESUV", "IDIOMA", "CONTADOR", "FLAGS", "CODIGOS", "PORTES", "PORTESC", "STOCKS", "SERIES", "DATA_IVA",
4356  "ENVIOETI", "GAS_ALB", "REP_GAS", "D_PACKLI", "C_PACKLI", "ENTREGAS", "D_PROD", "C_TRANS", "D_TRANS", "C_TRANS",
4357  "DALBDAT", "STOCK_ES", "TRABAJOS", "VENSER", "ALBV_ADI", "PEDV_ADI", "DEPV_ADI", "PRES_ADI", "FRACEE", "LIMITS",
4358  "MULTICA2", "CONTADO", "CFGFACT", "TREBALL", "DEPSER", "ALB_FPA2", "PROMCONF", "PUNT_CLI", "PUNT_LIQ", "PUNT_INI",
4359  "DEFPROMO", "CUO_ALB", "STOCKS2", "ENTRE_PV", "CONCILIA", "CONCIASI", "TCPS", "CONTROL", "CONTAPRE1", "CONTAPRE2",
4360  "DATA_RET", "LLIS_RET", "MOD303", "MOD347I", "MOD349R", "MODCONFI", "MODEXPOR", "MODRECTI", // PE-90860. Quitar STOCKINSER
4361  "MODREGIS", "MODTIPO", "MODVARIO", "ORD_SOP", "MODCCAN"};
4362 
4363  //Bug 150586: Tablas a limpiar de depósito de cuentas (van por el campo codigo)
4364  List<string> listDepoCuen = new List<string>() { "DC_A1", "DC_A1D", "DC_A2", "DC_A3", "DC_A4", "DC_A5", "DC_A6", "DC_A7", "DC_ADM", "DC_BS", "DC_DBI", "DC_DBII",
4365  "DC_EMPRE", "DC_FOR", "DC_INSP", "DC_INSTD", "DC_PF25", "DC_PFAS", "DC_PFIND", "DC_PYG"};
4366 
4367  // Bug 190498
4368  // Tablas de los addons con campo EMPRESA sin campo EJERCICIO que guardan algún tipo de configuración, de forma que si se borra
4369  // una empresa en un ejercicio pero la empresa existe en otros ejercicios, no se debería hacer en esa tabla el DELETE FROM tabla
4370  // WHERE EMPRESA=XX pues dejaria a los otros ejercicios donde aún existe la empresa, huérfanos de configuración.
4371  //
4372  Dictionary<string, List<string>> dicTablasAddonsEmpNoEjer = new Dictionary<string, List<string>>();
4373  dicTablasAddonsEmpNoEjer.Add("AMORTIZA", new List<string>() { "CFG_ADDON", "PARTINVE", "PLANAMOR", "TABLA_AM", "TABLA_FI" });
4374  dicTablasAddonsEmpNoEjer.Add("FACTUCERT", new List<string>() { "CFG_ADDON", "MODELOS" });
4375  dicTablasAddonsEmpNoEjer.Add("GAPED", new List<string>() { "CFG_STATUS", "ESTADOS" });
4376  dicTablasAddonsEmpNoEjer.Add("IMEXASI", new List<string>() { "CFG_ADDON", "CFG_ISV" });
4377  dicTablasAddonsEmpNoEjer.Add("INFORAUT", new List<string>() { "IACONFIG", "IAEMADEF", "IAEMAPR", "IAFECHA", "IAOPCEMP", "IAOPCFORM", "OPCEMP" });
4378  dicTablasAddonsEmpNoEjer.Add("LOTES", new List<string>() { "CONFIGURA", "CONFRECE", "CONTADOR", "REVCONF" });
4379  dicTablasAddonsEmpNoEjer.Add("OFFLINE", new List<string>() { "EMPEXCLU"});
4380  dicTablasAddonsEmpNoEjer.Add("RGPD", new List<string>() { "DELEGADOS", "TRATAENT" });
4381  dicTablasAddonsEmpNoEjer.Add("SERVICES", new List<string>() { "CFG_ADDON", "EMPRESA" });
4382  dicTablasAddonsEmpNoEjer.Add("TPV", new List<string>() { "CAJ_FCOB", "CANALES", "CONFIGERP", "CONFTICK", "CONFTPV", "CONFVAL",
4383  "DELEG_ALM", "DELEG_CAJA", "DELEG_DEL", "DELEGACION", "ENLACE_ERP",
4384  "OPCEMP", "PVPAGRUP", "SUPERFTP" });
4385 
4386  // Tablas de COMUNES con campo EMPRESA sin campo EJERCICIO que guardan algún tipo de configuración, de forma que si se borra
4387  // una empresa en un ejercicio pero la empresa existe en otros ejercicios, no se debería hacer en esa tabla el DELETE FROM tabla
4388  // WHERE EMPRESA=XX pues dejaria a los otros ejercicios donde aún existe la empresa, huérfanos de configuración.
4389  //
4390  List<string> lstTablasComunesEmpNoEjer = new List<string>() { "OPCEMP", "CUOTAS", "CFGBABEL", "ESCALADO", "PLSEPA_C", "PLSEPA_D" };
4391 
4392  if (!_Hera) _ReportTemplates._RemoveRelTemplate(_Codigo);
4393 
4394  // Tenemos una serie de tablas a exluir en los módulos
4395  List<string> listExcludeTables = new List<string>() { "BARRAS", "BINDEVENTS", "CABEZERA", "CONFIG", "DBF_MS", "INFORMES", "MODULOS", "FORMULS", "TABSYS" };
4396 
4397  bool llExisteEmpresaEjercicios = ExisteEmpresaEjercicios();
4398 
4399  // 1. Eliminaremos la información de las tablas de la BD de COMUNES
4400  foreach (string lcTable in listComunes)
4401  {
4402  // Todas las tablas tienen el mismo WHERE a excepción de las tablas PREVIS y PREVI_CL
4403  lcWhere = lcWhere_Empresa;
4404 
4406  //if (lcTable == "OPCEMP" && llExisteEmpresaEjercicios)
4407  // continue;
4408 
4409  // Buscamos si esta tabla de COMUNES está en la lista de tablas que tienen campo EMPRESA pero no EJERCICIO en las que
4410  // no se debería hacer un DELETE FROM tabla WHERE EMPRESA=xx en caso de que existan otros ejercicios con la empresa
4411  // que se está borrando, puesto que dejaría a estos ejercicios huerfanos de configuración para la empresa por el hecho
4412  // de haber eliminado estos registros si lo hicieramos.
4413  //
4414  if (llExisteEmpresaEjercicios && lstTablasComunesEmpNoEjer.Contains(lcTable.Trim().ToUpper()))
4415  continue;
4416 
4417 
4418  // Únicamente tenemos de borrar las previsiones del ejercicio actual
4419  if (lcTable == "PREVIS" || lcTable == "PREVI_CL" || lcTable == "PREVIOBS")
4420  {
4421  DateTime ldPeridoIni = (DateTime)EW_GLOBAL._GetVariable("wd_periodoini", DateTime.Today);
4422 
4423  lcWhere = lcWhere + " AND periodo = " + DB.SQLString(ldPeridoIni.Year);
4424  }
4425 
4426  // Únicamente tenemos de borrar el registro del ejercicio actual
4427  if (lcTable == "EMGRUPOS")
4428  {
4429  lcWhere = lcWhere + " AND grupo = " + DB.SQLString(EW_GLOBAL._GetVariable("wc_grupo")) + " AND ejercicio = " + DB.SQLString(EW_GLOBAL._GetVariable("wc_any")) + " ";
4430  }
4431 
4432  if (!this.Delete_Table("COMUNES", lcTable, lcWhere))
4433  {
4434  return false;
4435  }
4436  ActualizarBarraProgreso();
4437  }
4438 
4439  // 2. Ahora eliminaremos los registros de la BD de gestión
4440  // Todas las tablas tienen el mismo WHERE a excepción de la tabla CONSOLID
4441  lcWhere = lcWhere_Empresa;
4442 
4443  foreach (string lcTable in listGestion)
4444  {
4445  if (!this.Delete_Table("GESTION", lcTable, lcWhere))
4446  return false;
4447 
4448  if (lcTable == "CONSOLID")
4449  {
4450  // Tenemos de eliminar los registros a partir del campo SECCION
4451  lcWhere = "seccion = '" + this._Codigo + "' ";
4452 
4453  // Ahora borraremos las registros correspondientes de las empresas consolidadas
4454  if (!this.Delete_Table("GESTION", lcTable, lcWhere))
4455  return false;
4456 
4457  // Restauramos el valor
4458  lcWhere = lcWhere_Empresa;
4459  }
4460  ActualizarBarraProgreso();
4461  }
4462 
4463  foreach (string lcTable in listDepoCuen) //Bug 150586: Vaciar tablas del depósito de cuentas
4464  {
4465  lcWhere = "codigo = '" + this._Codigo + "' ";
4466 
4467  if (!this.Delete_Table("GESTION", lcTable, lcWhere))
4468  return false;
4469 
4470  // Restauramos el valor
4471  lcWhere = lcWhere_Empresa;
4472 
4473  ActualizarBarraProgreso();
4474  }
4475 
4476  // 3. Consultamos los diferentes módulos que tenemos actualmente
4477  lcSql = "SELECT nombre " +
4478  "FROM " + DB.SQLDatabase("COMUNES", "MODULOS");
4479 
4480  DB.SQLExec(lcSql, ref ldtTables);
4481 
4482  // Vamos recorriendo los diferentes módulos
4483  foreach (DataRow ldrTables in ldtTables.Rows)
4484  {
4485  // Nombre del módulo. TPV, LOTES ...
4486  lcDatabase = Convert.ToString(ldrTables["nombre"]).Trim();
4487 
4488  // Vamos a consultar las tablas de la base de datos
4489  List<String> listTables = DB.SQLDatabaseTables(lcDatabase);
4490 
4491  List<string> lstTablesAddonEmpNoEjer = null;
4492  dicTablasAddonsEmpNoEjer.TryGetValue(lcDatabase, out lstTablesAddonEmpNoEjer);
4493 
4494  // Vamos recorriendo las diferentes tablas de la base de datos
4495  foreach (string lcTable in listTables)
4496  {
4497  // Buscamos si esta tabla del addon está en la lista de tablas que tienen campo EMPRESA pero no EJERCICIO en las que
4498  // no se debería hacer un DELETE FROM tabla WHERE EMPRESA=xx en caso de que existan otros ejercicio con la empresa
4499  // que se está borrando, puesto que dejaría a estos ejercicios huerfanos de configuración para la empresa por el hecho
4500  // de haber eliminado estos registros si lo hicieramos.
4501  //
4502  if (lstTablesAddonEmpNoEjer != null)
4503  {
4504  if (llExisteEmpresaEjercicios && lstTablesAddonEmpNoEjer.Contains(lcTable.Trim().ToUpper()) )
4505  continue;
4506  }
4507 
4508  // Tenemos de excluir una serie de tablas. Certificamos que existe el campo empresa
4509  if ((!listExcludeTables.Contains(lcTable.ToUpper())) && DB.SQLTipoCampo(lcDatabase, lcTable, "empresa") == "caracter") // PE-90860
4510  {
4511  lcWhere = lcWhere_Empresa;
4512 
4513  // Si la tabla tiene el campo ejercicio tenemos de preparar el WHERE para eliminar únicamente el actual
4514  if (DB.SQLExisteCampo(lcDatabase, lcTable, "ejercicio"))
4515  {
4516  lcWhere = lcWhere + " AND ejercicio = " + DB.SQLString(EW_GLOBAL._GetVariable("wc_any")) + "";
4517  }
4518 
4519  // Realizamos el borrado de las diferentes tablas del módulo con su respectivo where
4520  if (!this.Delete_Table(lcDatabase, lcTable, lcWhere))
4521  return false;
4522  }
4523  }
4524  ActualizarBarraProgreso();
4525  }
4526  }
4527  }
4528  //PE-99853
4529  else
4530  {
4531  _Error_Message = String.Format("Para poder borrar la empresa {0} debería tener más de 1 empresa no consolidada ", _Nombre);
4532  }
4533 
4534  return lbDelete;
4535  }
4536  // FPARTE 88385
4537 
4544  private void CheckManteTRelInicio()
4545  {
4546  _ManteTRelLista = new List<IManteTRel>();
4547  foreach (IManteTRel loItem in _ListewManteTRel)
4548  {
4549  _ManteTRelLista.Add(loItem);
4550  }
4551 
4552  foreach (IManteTRel loItemLista in _ManteTRelLista)
4553  {
4554  if (loItemLista is ContadoresSerie)
4555  {
4556  _ListewManteTRel.Remove(loItemLista);
4557  }
4558  }
4559 
4560  }
4561 
4565  private void CheckManteTRelFin()
4566  {
4567  if (_ManteTRelLista == null || _ManteTRelLista.Any() == false)
4568  return;
4569 
4570  // Volvemos a cargar el IManteTRel
4571  foreach (IManteTRel loItemLista in _ManteTRelLista)
4572  {
4573  if (loItemLista is ContadoresSerie)
4574  {
4575  _ListewManteTRel.Add(loItemLista);
4576  loItemLista._Load();
4577  }
4578  }
4579 
4580 
4581  }
4582 
4583 
4588  private Boolean _SaveOpcionesGenerales()
4589  {
4590  Boolean bOk = true;
4591  DB.SQLChangeConnection("eurowin");
4592  if (this._oOpcionesGenerales != null)
4593  {
4594  DataRow[] aRowsModif = this._oOpcionesGenerales.Select("modificado = true or asistente = true");
4595 
4596  for (int i = 0; i < aRowsModif.GetLength(0); i++)
4597  {
4598  if (Convert.ToInt32(aRowsModif[i]["CODIGO"]) == 9085) // PARTE 92342: OPCION ---> 9085. ACTIVAR SISTEMA CLÁSICO DE MENÚS - WL_CLASSICMENU
4599  {
4600  string lcMensaje = String.Format("Para cargar el sistema de menús {0} debe reiniciar el programa.", Convert.ToBoolean(aRowsModif[i]["ESTADO"]) ? "clásico" : "nuevo");
4601  FUNCTIONS._MessageBox(lcMensaje, MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, DialogResult.OK);
4602  }
4603 
4604  if (Convert.ToInt32(aRowsModif[i]["CODIGO"]) == 50010) // PARTE 94420: OPCION ---> 50010. PRESENTAR ESCRITORIO SAGE - WL_DASHBOARD
4605  {
4606  string lcMensaje = String.Format("Los cambios en la presentación del escritorio Sage tendrán efecto al reiniciar el programa.");
4607  FUNCTIONS._MessageBox(lcMensaje, MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, DialogResult.OK);
4608  }
4609 
4610  if (Convert.ToInt32(aRowsModif[i]["CODIGO"]) == 30041) //PE-99572: OPCION ---> 30041 Criterio de caja WL_RECC
4611  _ActualizarCriterioCaja(Convert.ToBoolean(aRowsModif[i]["ESTADO"]));
4612 
4613  if (Convert.ToInt32(aRowsModif[i]["CODIGO"]) == 9008) // PE-99859 Actualizar ejercicio partido empresas
4614  _RevisarOpcEmpEmpresas(9008, Convert.ToBoolean(aRowsModif[i]["ESTADO"]));
4615 
4616  if (Convert.ToInt32(aRowsModif[i]["CODIGO"]) == 30061) // Actualizar mandatos por empresas
4617  _RevisarOpcEmpEmpresas(30061, Convert.ToBoolean(aRowsModif[i]["ESTADO"]));
4618 
4619  if (Convert.ToInt32(aRowsModif[i]["CODIGO"]) == 50030) // Actualizar contraseña segura empresas
4620  _RevisarOpcEmpEmpresas(50030, Convert.ToBoolean(aRowsModif[i]["ESTADO"]));
4621 
4622  if (Convert.ToInt32(aRowsModif[i]["CODIGO"]) == 10017 && Convert.ToBoolean(aRowsModif[i]["ESTADO"])) // PE-100855. OPCION 10017 -> MARCAR CAMBIOS DE TARIFA EN ARTÍCULOS (WL_CNVTAR)
4623  DB.SQLExec("UPDATE " + DB.SQLDatabase("PVP") + " SET pvpiva = pvp "); // Igualar el campo PVPIVA al campo PVP, de esta manera al activar el opcflag no veremos ninguna tarifa de artículo remarcada hasta que no se cambie
4624 
4625  if (Convert.ToInt32(aRowsModif[i]["CODIGO"]) == 9006) //PE-102142 avisar mínimo/máximo stock por almacén
4626  _MaximosMinimosPorAlmacen(Convert.ToBoolean(aRowsModif[i]["ESTADO"]));
4627 
4628  // Si se activan Series de Facturas, se debe crear la Serie "A0" para las previsiones de cobro refundidas
4629  if (Convert.ToInt32(aRowsModif[i]["CODIGO"]) == 9020 && Convert.ToBoolean(aRowsModif[i]["ESTADO"]))
4630  {
4631  Letras loLetras = new Letras();
4632  loLetras._Codigo = "A0";
4633  loLetras._Nombre = "Serie para previsiones de cobro refundidas";
4634  loLetras._Save();
4635  }
4636 
4637  _SetOpcEmp(Convert.ToString(aRowsModif[i]["CODIGO"]), Convert.ToBoolean(aRowsModif[i]["ESTADO"]), this._Codigo); // PE-105423 - Utilizar el método "_SetOpcEmp" para hacer un insert o update
4638 
4639  if (Convert.ToInt32(aRowsModif[i]["CODIGO"]) == 30006)
4640  SaveOpcionesGeneralesPlanesAnaliticos(Convert.ToBoolean(aRowsModif[i]["ESTADO"]));
4641 
4642  if (Convert.ToInt32(aRowsModif[i]["CODIGO"]) == 30201)
4643  SaveOpcionesGeneralesPlanesAnaliticosTodasCuentas(Convert.ToBoolean(aRowsModif[i]["ESTADO"]));
4644 
4645  if (Convert.ToInt32(aRowsModif[i]["CODIGO"]) == 30062) // Actualizar trabajar con un único nivel de analítica
4646  _RevisarOpcEmpEmpresas(30062, Convert.ToBoolean(aRowsModif[i]["ESTADO"]));
4647 
4648  }
4649  }
4650  return bOk;
4651  }
4652 
4653  //PE-102142
4660  public bool _MaximosMinimosPorAlmacen(bool tlActivar)
4661  {
4662  string lcSql = "";
4663 
4664  //Por A o por B ha que vaciar
4665  lcSql = "TRUNCATE TABLE " + DB.SQLDatabase("GESTION", "STOALMMM") + "; ";
4666 
4667  if (tlActivar)
4668  {
4669  lcSql += "INSERT into " + DB.SQLDatabase("GESTION", "STOALMMM") + " (ALMACEN, ARTICULO, COLOR, MAXIMO, MINIMO, TALLA) " +
4670  "select almacen.CODIGO AS ALMACEN, ARTICULO.CODIGO AS ARTICULO, COALESCE(ART_COLO.COLOR, '') AS COLOR, " +
4671  "0 AS MAXIMO, 0 AS MINIMO, COALESCE(ART_TALL.TALLA,'') AS TALLA " +
4672  " FROM " + DB.SQLDatabase("GESTION", "ARTICULO") + " ARTICULO " +
4673  " INNER JOIN " + DB.SQLDatabase("GESTION", "ALMACEN") + " ALMACEN on 1=1 " +
4674  " LEFT JOIN " + DB.SQLDatabase("COMUNES", "ART_TALL") + " ART_TALL ON ARTICULO.CODIGO = ART_TALL.ARTICULO " +
4675  " LEFT JOIN " + DB.SQLDatabase("COMUNES", "ART_COLO") + " ART_COLO ON ARTICULO.CODIGO = ART_COLO.ARTICULO ";
4676  }
4677 
4678  return DB.SQLExec(lcSql);
4679  }
4680 
4681 
4686  public void _ActivarDesactivarSeries(bool tlActivar)
4687  {
4688  bool llOk = false;
4689  string lcValor = tlActivar ? "8758" : "0";
4690  string lcSql = "update " + DB.SQLDatabase("GESTION", "CONTADOR") + " SET series = " + DB.SQLString(lcValor) +
4691  " WHERE empresa = " + DB.SQLString(_Codigo);
4692  llOk = DB.SQLExec(lcSql);
4693  }
4694 
4699  public void _ActivarDesactivarObras(bool tlActivar)
4700  {
4701  _TrabajaObra = tlActivar;
4702  string lcSql = "update " + DB.SQLDatabase("GESTION", "FLAGS") +
4703  " SET OBRA = " + (tlActivar ? 1 : 0) +
4704  " WHERE empresa = " + DB.SQLString(_Codigo);
4705  DB.SQLExec(lcSql);
4706  }
4707 
4713  {
4714  bool empresasConObras = false;
4715  //Mito si alguna otra empresa tiene activado Peso
4716  string lcSql = "SELECT COALESCE(COUNT(*), 0) as CONTA FROM " + DB.SQLDatabase("GESTION", "FLAGS") +
4717  " WHERE OBRA = 1";
4718  DataTable ldtResult = new DataTable();
4719  if (DB.SQLExec(lcSql, ref ldtResult) && ldtResult.Rows.Count > 0)
4720  {
4721  empresasConObras = Convert.ToInt32(ldtResult.Rows[0]["CONTA"]) > 0;
4722  }
4723  return empresasConObras;
4724  }
4725 
4730  public void _ActivarDesactivarPeso(bool tlActivar)
4731  {
4732  _TrabajaPeso = tlActivar;
4733  string lcSql = "update " + DB.SQLDatabase("GESTION", "FLAGS") +
4734  " SET PESO = " + (tlActivar ? 1 : 0) +
4735  " WHERE empresa = " + DB.SQLString(_Codigo);
4736  DB.SQLExec(lcSql);
4737  }
4738 
4743  public static bool ElGrupoDeEmpresasTrabajaConPeso()
4744  {
4745  bool empresasConPeso = false;
4746  //Mito si alguna otra empresa tiene activado Peso
4747  string lcSql = "SELECT COALESCE(COUNT(*), 0) as CONTA FROM " + DB.SQLDatabase("GESTION", "FLAGS") +
4748  " WHERE PESO = 1";
4749  DataTable ldtResult = new DataTable();
4750  if (DB.SQLExec(lcSql, ref ldtResult) && ldtResult.Rows.Count > 0)
4751  {
4752  empresasConPeso = Convert.ToInt32(ldtResult.Rows[0]["CONTA"]) > 0;
4753  }
4754  return empresasConPeso;
4755  }
4756 
4761  private void SaveOpcionesGeneralesPlanesAnaliticos(bool tlActivar)
4762  {
4763  if (!tlActivar)
4764  {
4765  _RevisarOpcEmpEmpresas(30201, tlActivar); // INTRODUCCIÓN DE PLANES ANALÍTICOS PARA TODAS LAS CUENTAS CONTABLES EN ASIENTOS
4766  ActivarDesactivarAnaliticaCuentas(tlActivar);
4767  }
4768  }
4769 
4774  private void SaveOpcionesGeneralesPlanesAnaliticosTodasCuentas(bool tlActivar)
4775  {
4776  if (tlActivar)
4777  _RevisarOpcEmpEmpresas(30006, tlActivar); // INTRODUCCIÓN MANUAL EN PLANES ANALÍTICOS
4778 
4779  _RevisarOpcEmpEmpresas(30201, tlActivar); // INTRODUCCIÓN DE PLANES ANALÍTICOS PARA TODAS LAS CUENTAS CONTABLES EN ASIENTOS
4780  ActivarDesactivarAnaliticaCuentas(tlActivar);
4781  }
4782 
4787  private void _ActualizarCriterioCaja(bool tlActivo)
4788  {
4789  String lcSql;
4790 
4791  if (_GetOpcEmp("30041") != tlActivo)
4792  {
4793  if (tlActivo)
4794  {
4795  if (DateTime.Now < new DateTime(2014, 4, 1))
4796  {
4797 
4798  }
4799  else
4800  {
4801  FUNCTIONS._MessageBox(String.Format("Se establece el día 01/01/{0} como fecha de activación del RÉGIMEN ESPECIAL DE CRITERIO DE CAJA (RECC).", DateTime.Now.Year + 1), "Criterio de caja", MessageBoxButtons.OK, MessageBoxIcon.Information);
4802  }
4803 
4804  if (DialogResult.Yes == FUNCTIONS._MessageBox(String.Format("Se activará la opción RÉGIMEN ESPECIAL DE CRITERIO DE CAJA (RECC) a todos los clientes nacionales."+Environment.NewLine+Environment.NewLine+"¿Desea realizar esta acción?", DateTime.Now.Year + 1), "Criterio de caja", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
4805  {
4806  lcSql = String.Format(" UPDATE {0} SET RECC = {1} WHERE COMUNITARI = 1 AND (IDIOMA = " + DB.SQLString("") + " OR IDIOMA = " + DB.SQLString(Convert.ToString(EW_GLOBAL._GetVariable("wc_moneda"))) + ")", DB.SQLDatabase("GESTION", "CLIENTES"), DB.SQLTrue());
4807  DB.SQLExec(lcSql);
4808  }
4809 
4810  if (DialogResult.Yes == FUNCTIONS._MessageBox(String.Format("Se activará la opción RÉGIMEN ESPECIAL DE CRITERIO DE CAJA (RECC) a todos los proveedores nacionales." + Environment.NewLine + Environment.NewLine + "¿Desea realizar esta acción?", DateTime.Now.Year + 1), "Criterio de caja", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
4811  {
4812  //Bug 108215: Tenemos en cuenta activar el criterio de caja sólo a aquellos proveedores que tengan como moneda la de la empresa o bien vacía
4813  lcSql = String.Format(" UPDATE {0} SET RECC = {1} WHERE COMUNITARI = 1 AND (IDIOMA = " + DB.SQLString("") + " OR IDIOMA = " + DB.SQLString(Convert.ToString(EW_GLOBAL._GetVariable("wc_moneda"))) + ")", DB.SQLDatabase("GESTION", "PROVEED"), DB.SQLTrue());
4814  DB.SQLExec(lcSql);
4815  }
4816 
4817  if (!String.IsNullOrEmpty(Convert.ToString(DB.SQLValor("VARIABLE", "UPPER(VARIABLE)", "WD_INICIORECC", "VARIABLE", "COMUNES"))))
4818  lcSql = " UPDATE {0} SET TIPO = 'D' , VALOR = {1} WHERE UPPER(VARIABLE) = 'WD_INICIORECC' ";
4819  else
4820  lcSql = " INSERT INTO {0} (VARIABLE, TIPO, VALOR) VALUES ('WD_INICIORECC', 'D', {1} ) ";
4821 
4822  lcSql = String.Format(lcSql, DB.SQLDatabase("COMUNES", "VARIABLE"), DB.SQLString(DateTime.Now.ToString(EW_GLOBAL._CustomFormatDate)));
4823  DB.SQLExec(lcSql);
4824 
4825  // Bug 208068:
4826  //
4827  // Podríamos haber activado criterio caja, desactivarlo y volverlo a activar, al volverlo a activar hay que eliminar la variable
4828  // WD_FINALRECC para no quedar en un estado incoherente, si no lo hacemos luego al consultar la empresa nos lo desactiva en el
4829  // método _RevisarOpcempRECC() por que detecta esta variable e interpreta que no tiene que estar activado.
4830  //
4831  if (!String.IsNullOrWhiteSpace(Convert.ToString(DB.SQLValor("VARIABLE", "UPPER(VARIABLE)", "WD_FINALRECC", "VARIABLE", "COMUNES"))))
4832  {
4833  lcSql = " DELETE {0} WHERE UPPER(VARIABLE) = 'WD_FINALRECC' ";
4834  lcSql = String.Format(lcSql, DB.SQLDatabase("COMUNES", "VARIABLE"), DB.SQLString(DateTime.Now.ToString(EW_GLOBAL._CustomFormatDate)));
4835  DB.SQLExec(lcSql);
4836  }
4837 
4838 
4839  if (!Convert.ToBoolean(EW_GLOBAL._GetVariable("WL_PARTI")))
4840  {
4841  lcSql = String.Format(" UPDATE {0} SET CRITEJRMIN = {1} WHERE CODIGO = '{2}' ", DB.SQLDatabase("GESTION", "EMPRESA"), EW_GLOBAL._GetVariable("wc_any"), _Codigo);
4842  DB.SQLExec(lcSql);
4843  }
4844  else
4845  {
4846  frmCritEjerPa loForm = new frmCritEjerPa(_Codigo);
4847  loForm._ShowDialog(); //Bug 114218 Cambiar .ShowDialog() por ._ShowDialog()
4848  if (loForm.DialogResult == DialogResult.OK)
4849  {
4850  lcSql = String.Format(" UPDATE {0} SET CRITEJRMIN = {1} WHERE CODIGO = '{2}' ", DB.SQLDatabase("GESTION", "EMPRESA"), loForm._Exercici, _Codigo);
4851  DB.SQLExec(lcSql);
4852  }
4853  }
4854 
4855  //Miramos si existe el campo
4856  if (_lisCampos.ContainsKey("CRITCAJA"))
4857  {
4858  lcSql = String.Format(" UPDATE {0} SET CRITCAJA = {1} WHERE CODIGO = '{2}' ", DB.SQLDatabase("GESTION", "EMPRESA"), DB.SQLTrue(), _Codigo);
4859  DB.SQLExec(lcSql);
4860  }
4861  }
4862  else
4863  {
4864  if (!String.IsNullOrEmpty(Convert.ToString(DB.SQLValor("VARIABLE", "UPPER(VARIABLE)", "WD_FINALRECC", "VARIABLE", "COMUNES"))))
4865  lcSql = " UPDATE {0} SET TIPO = 'D' , VALOR = {1} WHERE UPPER(VARIABLE) = 'WD_FINALRECC' ";
4866  else
4867  lcSql = " INSERT INTO {0} (VARIABLE, TIPO, VALOR) VALUES ('WD_FINALRECC', 'D', {1} ) ";
4868 
4869  lcSql = String.Format(lcSql, DB.SQLDatabase("COMUNES", "VARIABLE"), DB.SQLString(DateTime.Now.ToString(EW_GLOBAL._CustomFormatDate)));
4870  DB.SQLExec(lcSql);
4871 
4872  if (DialogResult.Yes == FUNCTIONS._MessageBox(String.Format("Se desactivará la opción RÉGIMEN ESPECIAL DE CRITERIO DE CAJA (RECC) a todos los clientes nacionales." + Environment.NewLine + Environment.NewLine + "¿Desea realizar esta acción?", DateTime.Now.Year + 1), "Criterio de caja", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
4873  {
4874  lcSql = String.Format(" UPDATE {0} SET RECC = {1} WHERE COMUNITARI = 1 AND (IDIOMA = " + DB.SQLString("") + " OR IDIOMA = " + DB.SQLString(Convert.ToString(EW_GLOBAL._GetVariable("wc_moneda"))) + ")", DB.SQLDatabase("GESTION", "CLIENTES"), DB.SQLFalse());
4875  DB.SQLExec(lcSql);
4876  }
4877 
4878  if (DialogResult.Yes == FUNCTIONS._MessageBox(String.Format("Se desactivará la opción RÉGIMEN ESPECIAL DE CRITERIO DE CAJA (RECC) a todos los proveedores nacionales." + Environment.NewLine + Environment.NewLine + "¿Desea realizar esta acción?", DateTime.Now.Year + 1), "Criterio de caja", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
4879  {
4880  //Bug 108215: Tenemos en cuenta activar el criterio de caja sólo a aquellos proveedores que tengan como moneda la de la empresa o bien vacía
4881  lcSql = String.Format(" UPDATE {0} SET RECC = {1} WHERE COMUNITARI = 1 AND (IDIOMA = " + DB.SQLString("") + " OR IDIOMA = " + DB.SQLString(Convert.ToString(EW_GLOBAL._GetVariable("wc_moneda"))) + ")", DB.SQLDatabase("GESTION", "PROVEED"), DB.SQLFalse());
4882  DB.SQLExec(lcSql);
4883  }
4884  }
4885 
4886  //Miramos si existe el campo
4887  if (_lisCampos.ContainsKey("CRITCAJA"))
4888  {
4889  lcSql = String.Format(" UPDATE {0} SET CRITCAJA = {1} WHERE CODIGO = '{2}' ", DB.SQLDatabase("GESTION", "EMPRESA"), tlActivo ? DB.SQLTrue() : DB.SQLFalse(), _Codigo);
4890  DB.SQLExec(lcSql);
4891  }
4892 
4893 
4894  //Mostrar els albarans de venta
4895  _ValidarReccAlbaranes(eTipoDocumentoGeneral.Ventas, tlActivo);
4896 
4897  //Mostrar els albarans de compra
4898  _ValidarReccAlbaranes(eTipoDocumentoGeneral.Compras, tlActivo);
4899  }
4900  }
4901 
4907  private void _ValidarReccAlbaranes(eTipoDocumentoGeneral toTipo, Boolean tlActivo)
4908  {
4909  DataTable ldtAlb = new DataTable(), ldtAlbDiv = new DataTable();
4910  String lcCaption, lcWhere, lcSql, lcTabla, lcMensaje;
4911  Boolean llFactser = false;
4912 
4913  if (eTipoDocumentoGeneral.Ventas == toTipo)
4914  {
4915  lcCaption = "Albaranes de venta pendientes de facturar "+ (tlActivo ? "no acogidos" : "acogidos")+" a criterio de caja";
4916  llFactser = Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_factser"));
4917  lcTabla = "c_albven";
4918  }
4919  else
4920  {
4921  lcCaption = "Albaranes de compra pendientes de contabilizar " + (tlActivo ? "no acogidos" : "acogidos") + " a criterio de caja";
4922  lcTabla = "c_albcom";
4923  }
4924 
4925  // Obtener datatables, uno con los albaranes a actualizar y otro con los albaranes con divisa distinta a la de la empresa
4926  _ObtenerAlbaranesRecc(toTipo, tlActivo, out ldtAlb, out ldtAlbDiv);
4927 
4928  ldtAlb.Columns["Ver"].ExtendedProperties.Add("Boton", true);
4929  ldtAlb.Columns["Ver"].ExtendedProperties.Add("Imagen", Resources.search_16);
4930  ldtAlb.Columns["Ver"].ExtendedProperties.Add("Tipo", toTipo);
4931  ldtAlb.Columns["empresa"].ExtendedProperties.Add("NoVisible", true);
4932 
4933  // Si tenemos registros los vamos a presentar
4934  if (ldtAlb.Rows.Count > 0)
4935  {
4937  Boolean llTodos = true;
4938  Boolean llOk = true;
4939 
4940  frmSel._Titulo = lcCaption;
4941  frmSel._DataTable = ldtAlb;
4942  frmSel._Imagen_Aceptar = true;
4943  frmSel._Imagen_Cancelar = true;
4944 
4945  frmSel._ShowDialog(); //Bug 114218 Cambiar .ShowDialog() por ._ShowDialog()
4946  if (DialogResult.OK == frmSel.DialogResult)
4947  {
4948  Int32 lnCounSeleccionadas = (from loRow in ldtAlb.AsEnumerable()
4949  where loRow.Field<bool>("sel")
4950  select loRow).Count();
4951 
4952  if (lnCounSeleccionadas > 0)
4953  {
4954  llTodos = ldtAlb.Rows.Count == lnCounSeleccionadas;
4955  lcMensaje = String.Format("¿Desea {0}marcar{1} los albaranes {2} como albaranes {3} acogidos al criterio de caja?", tlActivo ? "" : "des", llTodos ? " todos" : "", llTodos ? "" : "seleccionados", tlActivo ? "" : " no");
4956 
4957  if (DialogResult.Yes == FUNCTIONS._MessageBox(lcMensaje, "Criterio de caja", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
4958  {
4959  lcSql = String.Format(" UPDATE {0} SET recc = {1} ", DB.SQLDatabase("GESTION", lcTabla), tlActivo ? DB.SQLTrue() : DB.SQLFalse());
4960 
4961  foreach (DataRow loRow in ldtAlb.Rows)
4962  {
4963  if (Convert.ToBoolean(loRow["sel"]))
4964  {
4965  if (eTipoDocumentoGeneral.Ventas == toTipo)
4966  lcWhere = String.Format("empresa = {0} AND numero = '{1}' {2} AND factura = '' ", _Codigo, loRow["numero"], llFactser ? " AND letra = '" + loRow["letra"] + "'" : "");
4967  else
4968  lcWhere = String.Format("empresa = {0} AND numero = '{1}' AND factura = '' AND proveedor = '{2}' ", _Codigo, loRow["numero"], loRow["proveedor"]);
4969 
4970  llOk = llOk && DB.SQLExec(String.Format("{0} WHERE {1}", lcSql, lcWhere));
4971  }
4972  }
4973 
4974  if (llOk)
4975  lcMensaje = "Se han actualizado los albaranes {0}";
4976  else
4977  lcMensaje = "Se ha producido un error en la actualización los albaranes {0}";
4978 
4979  FUNCTIONS._MessageBox(String.Format(lcMensaje, llTodos ? "" : "seleccionados"), "Criterio de caja en los documentos", MessageBoxButtons.OK, MessageBoxIcon.Information);
4980 
4981  // En caso de haber encontrado algún albarán con divisa distinta a la de la empresa, avisamos que no se va a actualizar.
4982  if (ldtAlbDiv != null && ldtAlbDiv.Rows.Count > 0)
4983  {
4984  ldtAlbDiv.Columns["Ver"].ExtendedProperties.Add("Boton", true);
4985  ldtAlbDiv.Columns["Ver"].ExtendedProperties.Add("Imagen", Resources.search_16);
4986  ldtAlbDiv.Columns["Ver"].ExtendedProperties.Add("Tipo", toTipo);
4987  ldtAlbDiv.Columns["empresa"].ExtendedProperties.Add("NoVisible", true);
4988  ldtAlbDiv.Columns["sel"].ExtendedProperties.Add("NoVisible", true);
4989 
4990  frmSel = new frmSeleccionarDocumentos(false);
4991  frmSel._Titulo = "Relación de albaranes nacionales con moneda distinta a la de la empresa "+ (!tlActivo ? "con" : "sin") + " marca de RECC";
4992  frmSel._DataTable = ldtAlbDiv;
4993  frmSel._Imagen_Aceptar = true;
4994  frmSel._Imagen_Cancelar = true;
4995  frmSel._ShowDialog();
4996  }
4997  }
4998  }
4999  }
5000  }
5001  }
5002 
5003 
5012  private void _ObtenerAlbaranesRecc(eTipoDocumentoGeneral toTipo, Boolean tlActivo, out DataTable tdtAlbRecc, out DataTable tdtAlbDivisa)
5013  {
5014  DataTable ldtAlbTodos = new DataTable();
5015  String lcRecc, lcFechaRecc, lcWhere, lcSql, lcMoneda, lcMonedaEmp;
5016  Boolean llFactser = false;
5017 
5018  lcMonedaEmp = Convert.ToString(EW_GLOBAL._GetVariable("wc_moneda"));
5019 
5020  // Fitros RECC
5021  lcRecc = String.Format(" c.recc = {0} ", tlActivo ? DB.SQLFalse() : DB.SQLTrue());
5022  lcFechaRecc = Convert.ToString(DB.SQLValor("VARIABLE", "VARIABLE", "FECHARECC", "VALOR", "COMUNES")).Trim();
5023  if (!String.IsNullOrEmpty(lcFechaRecc) && tlActivo)
5024  lcRecc = String.Format(" {0} AND c.fecha >= {1} ", lcRecc, lcFechaRecc);
5025 
5026  // Montar Where
5027  lcWhere = String.Format("c.factura = '' AND c.empresa = '{0}' AND {1} ", _Codigo, lcRecc);
5028 
5029  if (eTipoDocumentoGeneral.Ventas == toTipo)
5030  {
5031  llFactser = Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_factser"));
5032 
5033  lcSql = String.Format("SELECT " + DB.SQLTrue() + " as sel {0}, c.numero, c.fecha, c.cliente, a.nombre, c.importe, '' as Ver , c.empresa, c.divisa " +
5034  "FROM {2} c INNER JOIN {3} a ON c.cliente = a.codigo AND a.COMUNITARI = 1 " +
5035  "WHERE {1} ORDER BY c.empresa, c.letra, c.numero ",
5036  llFactser ? ", c.letra" : "",
5037  lcWhere,
5038  DB.SQLDatabase("GESTION", "C_ALBVEN"),
5039  DB.SQLDatabase("GESTION", "CLIENTES"));
5040  }
5041  else
5042  {
5043  lcSql = String.Format("SELECT " + DB.SQLTrue() + " as sel, c.numero, c.fecha, c.proveedor, a.nombre, c.importe, '' as Ver , c.empresa, c.divisa " +
5044  "FROM {1} c INNER JOIN {2} a ON c.proveedor = a.codigo AND a.COMUNITARI = 1 " +
5045  "WHERE {0} ORDER BY c.empresa, c.proveedor, c.numero ",
5046  lcWhere,
5047  DB.SQLDatabase("GESTION", "C_ALBCOM"),
5048  DB.SQLDatabase("GESTION", "PROVEED"));
5049  }
5050 
5051  // Obtenemos todos los albaranes susceptibles de cambio RECC
5052  DB.SQLExec(lcSql, ref ldtAlbTodos);
5053 
5054  // Ahora obtenemos los albaranes con divisa distinta a la de la empresa (estos se presentarán a parte a modo de aviso)
5055  tdtAlbDivisa = null;
5056  lcMoneda = string.Format("divisa <> '' AND divisa <> {0}", Convert.ToString(lcMonedaEmp));
5057  DataRow[] loAlbDiv = ldtAlbTodos.Select(lcMoneda);
5058  if (loAlbDiv != null && loAlbDiv.Count() > 0)
5059  {
5060  tdtAlbDivisa = loAlbDiv.CopyToDataTable();
5061 
5062  // Eliminar del datatable con todos los albaranes de RECC los que tengan moneda distinta a la de la empresa.
5063  var loDiv = ldtAlbTodos.AsEnumerable().Except(loAlbDiv);
5064  if (loDiv.Count() > 0)
5065  {
5066  tdtAlbRecc = loDiv.CopyToDataTable();
5067  }
5068  else
5069  {
5070  // Si no lo hacemos asi, la anterior instruccion ( loDiv.CopyToDataTable() ) peta cuando en loDiv no hay registros.
5071  //
5072  DataView ldtTableEmpty = ldtAlbTodos.AsDataView();
5073  ldtTableEmpty.RowFilter = "1=2";
5074  tdtAlbRecc = ldtTableEmpty.ToTable();
5075  }
5076  }
5077  else
5078  tdtAlbRecc = ldtAlbTodos;
5079  }
5080 
5086  private void _RevisarOpcEmpEmpresas(int tcCodigo, bool tlValor)
5087  {
5088  String lcSql;
5089  DataTable loDtOpcEmp = new DataTable();
5090  DataTable loDt = _GetEmpresas(String.Format("CODIGO <> '{0}'", _Codigo), "CODIGO");
5091 
5092  lcSql = String.Format("SELECT * FROM {0} WHERE EMPRESA <> '{1}' AND TIPO_OPC = {2} ", DB.SQLDatabase("COMUNES", "OPCEMP"), _Codigo, tcCodigo);
5093  DB.SQLExec(lcSql, ref loDtOpcEmp);
5094 
5095  foreach (DataRow loDr in loDt.Rows)
5096  {
5097  DataRow[] loDrRows = loDtOpcEmp.Select(String.Format(" EMPRESA = '{0}'", loDr["CODIGO"]));
5098 
5099  if (loDrRows.Length > 0)
5100  {
5101  lcSql = String.Format("UPDATE {0} SET ESTADO = '{1}' WHERE TIPO_OPC = {2} AND EMPRESA = '{3}' ", DB.SQLDatabase("COMUNES", "OPCEMP"), tlValor, tcCodigo, loDr["CODIGO"]);
5102  }
5103  else
5104  {
5105  lcSql = String.Format("INSERT INTO {0} (EMPRESA, ESTADO, TIPO_OPC ) VALUES ('{1}', '{2}', {3}) ", DB.SQLDatabase("COMUNES", "OPCEMP"), loDr["CODIGO"], tlValor, tcCodigo);
5106  }
5107  DB.SQLExec(lcSql);
5108  }
5109  }
5110 
5115  private void ActivarDesactivarAnaliticaCuentas(bool tlValor)
5116  {
5117  if (tlValor)
5118  ActivarAnaliticaCuentas();
5119  else
5120  DesactivarAnaliticaCuentas();
5121  }
5122 
5126  private void ActivarAnaliticaCuentas()
5127  {
5128  string lcSql;
5129 
5130  lcSql = "UPDATE " + DB.SQLDatabase("GESTION", "CUENTAS") +
5131  " SET secundaria = 'S'" +
5132  " WHERE secundaria != 'S'";
5133 
5134  DB.SQLExec(lcSql);
5135  }
5136 
5140  private void DesactivarAnaliticaCuentas()
5141  {
5142  string lcSql;
5143 
5144  lcSql = "UPDATE " + DB.SQLDatabase("GESTION", "CUENTAS") +
5145  " SET secundaria = 'N'" +
5146  " WHERE secundaria = 'S'" +
5147  " AND codigo NOT IN (SELECT codigo FROM " + DB.SQLDatabase("GESTION", "OTRAS") + ")";
5148 
5149  DB.SQLExec(lcSql);
5150  }
5151 
5152  // PARTE 89116
5156  public string _Nombre2
5157  {
5158  get
5159  {
5160  if (_lisCampos.ContainsKey("NOMBRE2"))
5161  {
5162  return _lisCampos["NOMBRE2"]._NewVal.ToString();
5163  }
5164  else
5165  {
5166  return String.Empty;
5167  }
5168  }
5169  set
5170  {
5171  if (_lisCampos.ContainsKey("NOMBRE2"))
5172  {
5173  _lisCampos["NOMBRE2"]._NewVal = value;
5174  }
5175  }
5176  }
5177 
5181  public string _Cif
5182  {
5183  get
5184  {
5185  if (_lisCampos.ContainsKey("CIF"))
5186  {
5187  return _lisCampos["CIF"]._NewVal.ToString();
5188  }
5189  else
5190  {
5191  return String.Empty;
5192  }
5193  }
5194  set
5195  {
5196  if (_lisCampos.ContainsKey("CIF"))
5197  {
5198  _lisCampos["CIF"]._NewVal = value;
5199  }
5200  }
5201  }
5202 
5206  public string _Direccion
5207  {
5208  get
5209  {
5210  if (_lisCampos.ContainsKey("DIRECCION"))
5211  {
5212  return _lisCampos["DIRECCION"]._NewVal.ToString();
5213  }
5214  else
5215  {
5216  return String.Empty;
5217  }
5218  }
5219  set
5220  {
5221  if (_lisCampos.ContainsKey("DIRECCION"))
5222  {
5223  _lisCampos["DIRECCION"]._NewVal = value;
5224  }
5225  }
5226  }
5227 
5231  public string _Codpos
5232  {
5233  get
5234  {
5235  if (_lisCampos.ContainsKey("CODPOS"))
5236  {
5237  return _lisCampos["CODPOS"]._NewVal.ToString();
5238  }
5239  else
5240  {
5241  return String.Empty;
5242  }
5243  }
5244  set
5245  {
5246  if (_lisCampos.ContainsKey("CODPOS"))
5247  {
5248  _lisCampos["CODPOS"]._NewVal = value;
5249  }
5250  }
5251  }
5252 
5256  public string _Telefono
5257  {
5258  get
5259  {
5260  if (_lisCampos.ContainsKey("TELEFONO"))
5261  {
5262  return _lisCampos["TELEFONO"]._NewVal.ToString();
5263  }
5264  else
5265  {
5266  return String.Empty;
5267  }
5268  }
5269  set
5270  {
5271  if (_lisCampos.ContainsKey("TELEFONO"))
5272  {
5273  _lisCampos["TELEFONO"]._NewVal = value;
5274  }
5275  }
5276  }
5277 
5281  public string _Poblacion
5282  {
5283  get
5284  {
5285  if (_lisCampos.ContainsKey("POBLACION"))
5286  {
5287  return _lisCampos["POBLACION"]._NewVal.ToString();
5288  }
5289  else
5290  {
5291  return String.Empty;
5292  }
5293  }
5294  set
5295  {
5296  if (_lisCampos.ContainsKey("POBLACION"))
5297  {
5298  _lisCampos["POBLACION"]._NewVal = value;
5299  }
5300  }
5301  }
5302 
5306  public string _Provincia
5307  {
5308  get
5309  {
5310  if (_lisCampos.ContainsKey("PROVINCIA"))
5311  {
5312  return _lisCampos["PROVINCIA"]._NewVal.ToString();
5313  }
5314  else
5315  {
5316  return String.Empty;
5317  }
5318  }
5319  set
5320  {
5321  if (_lisCampos.ContainsKey("PROVINCIA"))
5322  {
5323  _lisCampos["PROVINCIA"]._NewVal = value;
5324  }
5325  }
5326  }
5327 
5331  public string _Fax
5332  {
5333  get
5334  {
5335  if (_lisCampos.ContainsKey("FAX"))
5336  {
5337  return _lisCampos["FAX"]._NewVal.ToString();
5338  }
5339  else
5340  {
5341  return String.Empty;
5342  }
5343  }
5344  set
5345  {
5346  if (_lisCampos.ContainsKey("FAX"))
5347  {
5348  _lisCampos["FAX"]._NewVal = value;
5349  }
5350  }
5351  }
5352 
5356  public string _Tipo
5357  {
5358  get
5359  {
5360  if (_lisCampos.ContainsKey("TIPO") && !String.IsNullOrEmpty(Convert.ToString(_lisCampos["TIPO"]._NewVal)))
5361  {
5362  return _lisCampos["TIPO"]._NewVal.ToString();
5363  }
5364  else
5365  {
5366  return Convert.ToString(TipoEmpresa.Normal);
5367  }
5368  }
5369  set
5370  {
5371  if (_lisCampos.ContainsKey("TIPO"))
5372  {
5373  _lisCampos["TIPO"]._NewVal = value;
5374  }
5375  }
5376  }
5377 
5381  public string _Email
5382  {
5383  get
5384  {
5385  if (_lisCampos.ContainsKey("EMAIL"))
5386  {
5387  return _lisCampos["EMAIL"]._NewVal.ToString();
5388  }
5389  else
5390  {
5391  return String.Empty;
5392  }
5393  }
5394  set
5395  {
5396  if (_lisCampos.ContainsKey("EMAIL"))
5397  {
5398  _lisCampos["EMAIL"]._NewVal = value;
5399  }
5400  }
5401  }
5402 
5406  public string _HTTP
5407  {
5408  get
5409  {
5410  if (_lisCampos.ContainsKey("HTTP"))
5411  {
5412  return _lisCampos["HTTP"]._NewVal.ToString();
5413  }
5414  else
5415  {
5416  return String.Empty;
5417  }
5418  }
5419  set
5420  {
5421  if (_lisCampos.ContainsKey("HTTP"))
5422  {
5423  _lisCampos["HTTP"]._NewVal = value;
5424  }
5425  }
5426  }
5427 
5431  public string _Movil
5432  {
5433  get
5434  {
5435  if (_lisCampos.ContainsKey("MOBIL"))
5436  {
5437  return _lisCampos["MOBIL"]._NewVal.ToString();
5438  }
5439  else
5440  {
5441  return String.Empty;
5442  }
5443  }
5444  set
5445  {
5446  if (_lisCampos.ContainsKey("MOBIL"))
5447  {
5448  _lisCampos["MOBIL"]._NewVal = value;
5449  }
5450  }
5451  }
5452 
5456  public string _Pais
5457  {
5458  get
5459  {
5460  if (_lisCamposCODIGOS.ContainsKey("PAIS"))
5461  {
5462  return _lisCamposCODIGOS["PAIS"]._NewVal.ToString();
5463  }
5464  else
5465  {
5466  return String.Empty;
5467  }
5468  }
5469  set
5470  {
5471  if (_lisCamposCODIGOS.ContainsKey("PAIS"))
5472  {
5473  _lisCamposCODIGOS["PAIS"]._NewVal = value;
5474  }
5475  }
5476  }
5477  // FPARTE 89116
5478 
5479 
5483  public int _Nat1
5484  {
5485  get
5486  {
5487  if (_lisCamposCODIGOS.ContainsKey("NAT1"))
5488  {
5489  return Convert.ToInt32(_lisCamposCODIGOS["NAT1"]._NewVal);
5490  }
5491  else
5492  {
5493  return 0;
5494  }
5495  }
5496  set
5497  {
5498  if (_lisCamposCODIGOS.ContainsKey("NAT1"))
5499  {
5500  _lisCamposCODIGOS["NAT1"]._NewVal = value;
5501  }
5502  }
5503  }
5504 
5508  public int _Nat2
5509  {
5510  get
5511  {
5512  if (_lisCamposCODIGOS.ContainsKey("NAT2"))
5513  {
5514  return Convert.ToInt32(_lisCamposCODIGOS["NAT2"]._NewVal);
5515  }
5516  else
5517  {
5518  return 0;
5519  }
5520  }
5521  set
5522  {
5523  if (_lisCamposCODIGOS.ContainsKey("NAT2"))
5524  {
5525  _lisCamposCODIGOS["NAT2"]._NewVal = value;
5526  }
5527  }
5528  }
5529 
5533  public int _Regestat
5534  {
5535  get
5536  {
5537  if (_lisCamposCODIGOS.ContainsKey("REGESTAT"))
5538  {
5539  return Convert.ToInt32(_lisCamposCODIGOS["REGESTAT"]._NewVal);
5540  }
5541  else
5542  {
5543  return 0;
5544  }
5545  }
5546  set
5547  {
5548  if (_lisCamposCODIGOS.ContainsKey("REGESTAT"))
5549  {
5550  _lisCamposCODIGOS["REGESTAT"]._NewVal = value;
5551  }
5552  }
5553  }
5554 
5558  public int _Modotrans
5559  {
5560  get
5561  {
5562  if (_lisCamposCODIGOS.ContainsKey("MODOTRANS"))
5563  {
5564  return Convert.ToInt32(_lisCamposCODIGOS["MODOTRANS"]._NewVal);
5565  }
5566  else
5567  {
5568  return 0;
5569  }
5570  }
5571  set
5572  {
5573  if (_lisCamposCODIGOS.ContainsKey("MODOTRANS"))
5574  {
5575  _lisCamposCODIGOS["MODOTRANS"]._NewVal = value;
5576  }
5577  }
5578  }
5579 
5583  public string _Rutaidep
5584  {
5585  get
5586  {
5587  if (_lisCamposCODIGOS.ContainsKey("RUTAIDEP"))
5588  {
5589  return _lisCamposCODIGOS["RUTAIDEP"]._NewVal.ToString();
5590  }
5591  else
5592  {
5593  return String.Empty;
5594  }
5595  }
5596  set
5597  {
5598  if (_lisCamposCODIGOS.ContainsKey("RUTAIDEP"))
5599  {
5600  _lisCamposCODIGOS["RUTAIDEP"]._NewVal = value;
5601  }
5602  }
5603  }
5604 
5605 
5609  public DateTime? _PeriodoIni
5610  {
5611  get
5612  {
5613  if (_lisCampos.ContainsKey("PERIODOINI"))
5614  {
5615  return Convert.ToDateTime(_lisCampos["PERIODOINI"]._NewVal);
5616  }
5617  else
5618  {
5619  return DateTime.MinValue;
5620  }
5621  }
5622  set
5623  {
5624  if (_lisCampos.ContainsKey("PERIODOINI"))
5625  {
5626  _lisCampos["PERIODOINI"]._NewVal = value;
5627  }
5628  }
5629  }
5630 
5634  public DateTime? _PeriodoFin
5635  {
5636  get
5637  {
5638  if (_lisCampos.ContainsKey("PERIODOFIN"))
5639  {
5640  return Convert.ToDateTime(_lisCampos["PERIODOFIN"]._NewVal);
5641  }
5642  else
5643  {
5644  return DateTime.MinValue;
5645  }
5646  }
5647  set
5648  {
5649  if (_lisCampos.ContainsKey("PERIODOFIN"))
5650  {
5651  _lisCampos["PERIODOFIN"]._NewVal = value;
5652  }
5653  }
5654  }
5655 
5663  public string _Password
5664  {
5665  get
5666  {
5667  if (_lisCampos.ContainsKey("PASWORD"))
5668  {
5669  if (!string.IsNullOrWhiteSpace(_lisCampos["PASWORD"]._NewVal.ToString()))
5670  {
5671  return "****";
5672  }
5673  }
5674  return String.Empty;
5675  }
5676  set
5677  {
5678  if (value != "****" && _lisCampos.ContainsKey("PASWORD"))
5679  {
5680  if (!string.IsNullOrWhiteSpace(value))
5681  {
5683  //string lcNewPass = Usuario._This.TrataPassword(value);
5684  //string lcEmpresaConMismoPassword = DB.SQLValor("EMPRESA", "PASWORD", lcNewPass, "CODIGO", "GESTION").ToString();
5685  //if (string.IsNullOrWhiteSpace(lcEmpresaConMismoPassword) || lcEmpresaConMismoPassword == this._Codigo)
5686  // _lisCampos["PASWORD"]._NewVal = lcNewPass;
5687  //else
5688  // this._Error_Message = "Esta contraseña esta definida en otra empresa. Debe definir una contraseña diferente.";
5689 
5690  if (_ExistPassword(value))
5691  {
5692  this._Error_Message = "Esta contraseña esta definida en otra empresa. Debe definir una contraseña diferente.";
5693  }
5694  else
5695  {
5696  _lisCampos["PASWORD"]._NewVal = Usuario._This.TrataPassword(value);
5697  }
5698  }
5699  else
5700  {
5701  //Contrasenya en blanc
5702  _lisCampos["PASWORD"]._NewVal = "";
5703  }
5704  }
5705  }
5706  }
5707 
5711  public string _Mensaje_Factura_1
5712  {
5713  get
5714  {
5715  if (_lisCampos.ContainsKey("TXTFACTU1"))
5716  {
5717  return _lisCampos["TXTFACTU1"]._NewVal.ToString();
5718  }
5719  else
5720  {
5721  return String.Empty;
5722  }
5723  }
5724  set
5725  {
5726  if (_lisCampos.ContainsKey("TXTFACTU1"))
5727  {
5728  _lisCampos["TXTFACTU1"]._NewVal = value;
5729  }
5730  }
5731  }
5732 
5733 
5737  public string _Mensaje_Factura_2
5738  {
5739  get
5740  {
5741  if (_lisCampos.ContainsKey("TXTFACTU2"))
5742  {
5743  return _lisCampos["TXTFACTU2"]._NewVal.ToString();
5744  }
5745  else
5746  {
5747  return String.Empty;
5748  }
5749  }
5750  set
5751  {
5752  if (_lisCampos.ContainsKey("TXTFACTU2"))
5753  {
5754  _lisCampos["TXTFACTU2"]._NewVal = value;
5755  }
5756  }
5757  }
5758 
5763  public string _Mensaje_FactElec_Asunto
5764  {
5765  get
5766  {
5767  if (_lisCampos.ContainsKey("TXTEFACTU1"))
5768  {
5769  return _lisCampos["TXTEFACTU1"]._NewVal.ToString();
5770  }
5771  else
5772  {
5773  return String.Empty;
5774  }
5775  }
5776  set
5777  {
5778  if (_lisCampos.ContainsKey("TXTEFACTU1"))
5779  {
5780  _lisCampos["TXTEFACTU1"]._NewVal = value;
5781  }
5782  }
5783  }
5784 
5789  public string _Mensaje_FactElec_Cuerpo
5790  {
5791  get
5792  {
5793  if (_lisCampos.ContainsKey("TXTEFACTU2"))
5794  {
5795  return _lisCampos["TXTEFACTU2"]._NewVal.ToString();
5796  }
5797  else
5798  {
5799  return String.Empty;
5800  }
5801  }
5802  set
5803  {
5804  if (_lisCampos.ContainsKey("TXTEFACTU2"))
5805  {
5806  _lisCampos["TXTEFACTU2"]._NewVal = value;
5807  }
5808  }
5809  }
5810 
5814  public Int32 _Traspaso
5815  {
5816  get
5817  {
5818  return _lisCampos.ContainsKey("TRASPASO") ? Convert.ToInt32(_lisCampos["TRASPASO"]._NewVal) : 0;
5819  }
5820  set
5821  {
5822  if (_lisCampos.ContainsKey("TRASPASO")) _lisCampos["TRASPASO"]._NewVal = value;
5823  }
5824  }
5825 
5829  public Int32 _Regulariza
5830  {
5831  get
5832  {
5833  return _lisCampos.ContainsKey("REGULARIZA") ? Convert.ToInt32(_lisCampos["REGULARIZA"]._NewVal) : 0;
5834  }
5835  set
5836  {
5837  if (_lisCampos.ContainsKey("REGULARIZA")) _lisCampos["REGULARIZA"]._NewVal = value;
5838  }
5839  }
5840 
5844  public Int32 _ContadorFactura
5845  {
5846  get
5847  {
5848  return _lisCampos.ContainsKey("FACTUVEN") ? Convert.ToInt32(_lisCampos["FACTUVEN"]._NewVal) : 0;
5849  }
5850  set
5851  {
5852  if (_lisCampos.ContainsKey("FACTUVEN")) _lisCampos["FACTUVEN"]._NewVal = value;
5853  }
5854  }
5855 
5859  public Int32 _StCoef_Ent
5860  {
5861  get
5862  {
5863  return _lisCampos.ContainsKey("STCOEF_ENT") ? Convert.ToInt32(_lisCampos["STCOEF_ENT"]._NewVal) : 0;
5864  }
5865  set
5866  {
5867  if (_lisCampos.ContainsKey("STCOEF_ENT")) _lisCampos["STCOEF_ENT"]._NewVal = value;
5868  }
5869  }
5870 
5874  public Int32 _StCoef_Sor
5875  {
5876  get
5877  {
5878  return _lisCampos.ContainsKey("STCOEF_SOR") ? Convert.ToInt32(_lisCampos["STCOEF_SOR"]._NewVal) : 0;
5879  }
5880  set
5881  {
5882  if (_lisCampos.ContainsKey("STCOEF_SOR")) _lisCampos["STCOEF_SOR"]._NewVal = value;
5883  }
5884  }
5885 
5886 
5890  public Int32 _Transform
5891  {
5892  get
5893  {
5894  return _lisCamposCONTADORES.ContainsKey("TRANSFORM") ? Convert.ToInt32(_lisCamposCONTADORES["TRANSFORM"]._NewVal) : 0;
5895  }
5896  set
5897  {
5898  if (_lisCamposCONTADORES.ContainsKey("TRANSFORM")) _lisCamposCONTADORES["TRANSFORM"]._NewVal = value;
5899  }
5900  }
5901 
5905  public Int32 _ParteCoste
5906  {
5907  get
5908  {
5909  return _lisCamposCONTADORES.ContainsKey("PARTECOSTE") ? Convert.ToInt32(_lisCamposCONTADORES["PARTECOSTE"]._NewVal): 0;
5910  }
5911  set
5912  {
5913  if (_lisCamposCONTADORES.ContainsKey("PARTECOSTE")) _lisCamposCONTADORES["PARTECOSTE"]._NewVal = value;
5914  }
5915  }
5919  public Int32 _ContadorPresuven
5920  {
5921  get
5922  {
5923  return _lisCamposCONTADORES.ContainsKey("PRESUVEN") ? Convert.ToInt32(_lisCamposCONTADORES["PRESUVEN"]._NewVal) : 0;
5924  }
5925  set
5926  {
5927  if (_lisCamposCONTADORES.ContainsKey("PRESUVEN")) _lisCamposCONTADORES["PRESUVEN"]._NewVal = value;
5928  }
5929  }
5930 
5934  public Int32 _ContadorPlantilla
5935  {
5936  get
5937  {
5938  return Convert.ToInt32(DB.SQLValor("CODCOM", "", "", "PLANTILLAS", "COMUNES"));
5939  }
5940  set
5941  {
5942  DB.SQLExec("UPDATE " + DB.SQLDatabase("COMUNES", "CODCOM") + " SET plantillas = " + DB.SQLString(value));
5943  }
5944  }
5945 
5949  public Int32 _ContadorCoutas
5950  {
5951  get
5952  {
5953  return _lisCamposCONTADORES.ContainsKey("CUOTAS") ? Convert.ToInt32(_lisCamposCONTADORES["CUOTAS"]._NewVal) : 0;
5954  }
5955  set
5956  {
5957  if (_lisCamposCONTADORES.ContainsKey("CUOTAS")) _lisCamposCONTADORES["CUOTAS"]._NewVal = value;
5958  }
5959  }
5960 
5964  public Int32 _ContadorEtiqueta
5965  {
5966  get
5967  {
5968  return _lisCamposCONTADORES.ContainsKey("ETIQUETA") ? Convert.ToInt32(_lisCamposCONTADORES["ETIQUETA"]._NewVal) : 0;
5969  }
5970  set
5971  {
5972  if (_lisCamposCONTADORES.ContainsKey("ETIQUETA")) _lisCamposCONTADORES["ETIQUETA"]._NewVal = value;
5973  }
5974  }
5975 
5979  public Int32 _ContadorPrecom
5980  {
5981  get
5982  {
5983  return _lisCampos.ContainsKey("PRECOM") ? Convert.ToInt32(_lisCampos["PRECOM"]._NewVal) : 0;
5984  }
5985  set
5986  {
5987  if (_lisCampos.ContainsKey("PRECOM")) _lisCampos["PRECOM"]._NewVal = value;
5988  }
5989  }
5990 
5994  public Int32 _ContadorPedicom
5995  {
5996  get
5997  {
5998  return _lisCampos.ContainsKey("PEDICOM") ? Convert.ToInt32(_lisCampos["PEDICOM"]._NewVal) : 0;
5999  }
6000  set
6001  {
6002  if (_lisCampos.ContainsKey("PEDICOM")) _lisCampos["PEDICOM"]._NewVal = value;
6003  }
6004  }
6005 
6009  public Int32 _ContadorDepcom
6010  {
6011  get
6012  {
6013  return _lisCampos.ContainsKey("DEPCOM") ? Convert.ToInt32(_lisCampos["DEPCOM"]._NewVal) : 0;
6014  }
6015  set
6016  {
6017  if (_lisCampos.ContainsKey("DEPCOM")) _lisCampos["DEPCOM"]._NewVal = value;
6018  }
6019  }
6020 
6024  public Int32 _ContadorFactucom
6025  {
6026  get
6027  {
6028  return _lisCampos.ContainsKey("FACTUCOM") ? Convert.ToInt32(_lisCampos["FACTUCOM"]._NewVal) : 0;
6029  }
6030  set
6031  {
6032  if (_lisCampos.ContainsKey("FACTUCOM")) _lisCampos["FACTUCOM"]._NewVal = value;
6033  }
6034  }
6035 
6039  public Boolean _FlagFactuCom
6040  {
6041  get
6042  {
6043  return _lisCamposFLAGS.ContainsKey("FACTUCOM") ? Convert.ToBoolean(_lisCamposFLAGS["FACTUCOM"]._NewVal) : false;
6044  }
6045  set
6046  {
6047  if (_lisCamposFLAGS.ContainsKey("FACTUCOM")) _lisCamposFLAGS["FACTUCOM"]._NewVal = value;
6048  }
6049  }
6050 
6054  public Int32 _ContadorFracee
6055  {
6056  get
6057  {
6058  return _lisCampos.ContainsKey("FRACEE") ? Convert.ToInt32(_lisCampos["FRACEE"]._NewVal) : 0;
6059  }
6060  set
6061  {
6062  if (_lisCampos.ContainsKey("FRACEE")) _lisCampos["FRACEE"]._NewVal = value;
6063  }
6064  }
6065 
6069  public Int32 _ContadorAsiento
6070  {
6071  get
6072  {
6073  return _lisCampos.ContainsKey("ASIENTO") ? Convert.ToInt32(_lisCampos["ASIENTO"]._NewVal) : 0;
6074  }
6075  set
6076  {
6077  if (_lisCampos.ContainsKey("ASIENTO")) _lisCampos["ASIENTO"]._NewVal = value;
6078  }
6079  }
6080 
6084  public Int32 _ContadorRemesa
6085  {
6086  get
6087  {
6088  return _lisCampos.ContainsKey("REMESA") ? Convert.ToInt32(_lisCampos["REMESA"]._NewVal) : 0;
6089  }
6090  set
6091  {
6092  if (_lisCampos.ContainsKey("REMESA")) _lisCampos["REMESA"]._NewVal = value;
6093  }
6094  }
6095 
6099  public Int32 _ContadorRemesaPago
6100  {
6101  get
6102  {
6103  return _lisCampos.ContainsKey("REMESAPA") ? Convert.ToInt32(_lisCampos["REMESAPA"]._NewVal) : 0;
6104  }
6105  set
6106  {
6107  if (_lisCampos.ContainsKey("REMESAPA")) _lisCampos["REMESAPA"]._NewVal = value;
6108  }
6109  }
6110 
6114  public Int32 _ContadorRefundir
6115  {
6116  get
6117  {
6118  return _lisCampos.ContainsKey("REFUNDIR") ? Convert.ToInt32(_lisCampos["REFUNDIR"]._NewVal) : 0;
6119  }
6120  set
6121  {
6122  if (_lisCampos.ContainsKey("REFUNDIR")) _lisCampos["REFUNDIR"]._NewVal = value;
6123  }
6124  }
6125 
6129  public Int32 _ContadorRefundirPago
6130  {
6131  get
6132  {
6133  return _lisCampos.ContainsKey("REFUNDIRP") ? Convert.ToInt32(_lisCampos["REFUNDIRP"]._NewVal) : 0;
6134  }
6135  set
6136  {
6137  if (_lisCampos.ContainsKey("REFUNDIRP")) _lisCampos["REFUNDIRP"]._NewVal = value;
6138  }
6139  }
6140 
6144  public Int32 _Orden
6145  {
6146  get
6147  {
6148  return _lisCampos.ContainsKey("ORDEN") ? Convert.ToInt32(_lisCampos["ORDEN"]._NewVal) : 0;
6149  }
6150  set
6151  {
6152  if (_lisCampos.ContainsKey("ORDEN")) _lisCampos["ORDEN"]._NewVal = value;
6153  }
6154  }
6155 
6159  public String _TCP
6160  {
6161  get
6162  {
6163  return _lisCamposFACTUCNF.ContainsKey("TCP") ? Convert.ToString(_lisCamposFACTUCNF["TCP"]._NewVal) : String.Empty;
6164  }
6165  set
6166  {
6167  if (_lisCamposFACTUCNF.ContainsKey("TCP")) _lisCamposFACTUCNF["TCP"]._NewVal = value;
6168  }
6169  }
6170 
6174  public decimal _MargenTCP
6175  {
6176  get
6177  {
6178  return _lisCamposFACTUCNF.ContainsKey("MARGEN_TCP") && !String.IsNullOrWhiteSpace(_lisCamposFACTUCNF["MARGEN_TCP"]._NewVal.ToString()) ? Convert.ToDecimal(_lisCamposFACTUCNF["MARGEN_TCP"]._NewVal) : 0;
6179  }
6180  set
6181  {
6182  if (_lisCamposFACTUCNF.ContainsKey("MARGEN_TCP")) _lisCamposFACTUCNF["MARGEN_TCP"]._NewVal = value;
6183  }
6184  }
6185 
6189  public Boolean _TraspasarTodoVentas
6190  {
6191  get
6192  {
6193  //PE-101444 Se mira si hay lotes
6194  return _lisCamposFACTUCNF.ContainsKey("TRASPVEN") && !_HayLotes ? Convert.ToBoolean(_lisCamposFACTUCNF["TRASPVEN"]._NewVal) : false;
6195  }
6196  set
6197  {
6198  if (_lisCamposFACTUCNF.ContainsKey("TRASPVEN")) _lisCamposFACTUCNF["TRASPVEN"]._NewVal = value;
6199  }
6200  }
6201 
6202 
6206  public Boolean _TraspasarPortes
6207  {
6208  get
6209  {
6210  return _lisCamposFACTUCNF.ContainsKey("TRAS_POR") ? Convert.ToBoolean(_lisCamposFACTUCNF["TRAS_POR"]._NewVal) : false;
6211  }
6212  set
6213  {
6214  if (_lisCamposFACTUCNF.ContainsKey("TRAS_POR")) _lisCamposFACTUCNF["TRAS_POR"]._NewVal = value;
6215  }
6216  }
6217 
6218 
6222  public String _BabelRutaFicheros
6223  {
6224  get
6225  {
6226  return _lisCamposCFGBABEL.ContainsKey("RUTAFICHEROS") ? Convert.ToString(_lisCamposCFGBABEL["RUTAFICHEROS"]._NewVal).Trim() : String.Empty;
6227  }
6228  set
6229  {
6230  if (_lisCamposCFGBABEL.ContainsKey("RUTAFICHEROS"))
6231  {
6232  // Comprobar visor Bagel
6233  _lInstalarVisorBabel = (!string.IsNullOrWhiteSpace(value) && Convert.ToString(_lisCamposCFGBABEL["RUTAFICHEROS"]._NewVal) != value);
6234 
6235  _lisCamposCFGBABEL["RUTAFICHEROS"]._NewVal = value;
6236  }
6237  }
6238  }
6239 
6243  public String _BabelMail
6244  {
6245  get
6246  {
6247  return _lisCamposCFGBABEL.ContainsKey("EMAIL") ? Convert.ToString(_lisCamposCFGBABEL["EMAIL"]._NewVal).Trim() : String.Empty;
6248  }
6249  set
6250  {
6251  if (_lisCamposCFGBABEL.ContainsKey("EMAIL")) _lisCamposCFGBABEL["EMAIL"]._NewVal = value;
6252  }
6253  }
6254 
6258  public String _BabelAsunto
6259  {
6260  get
6261  {
6262  return _lisCamposCFGBABEL.ContainsKey("ASUNTO") ? Convert.ToString(_lisCamposCFGBABEL["ASUNTO"]._NewVal).Trim() : String.Empty;
6263  }
6264  set
6265  {
6266  if (_lisCamposCFGBABEL.ContainsKey("ASUNTO")) _lisCamposCFGBABEL["ASUNTO"]._NewVal = value;
6267  }
6268  }
6269 
6273  public Int32 _BabelExpTipoUsuario
6274  {
6275  get
6276  {
6277  return _lisCamposCFGBABEL.ContainsKey("EXP_USER") && Convert.ToInt32(_lisCamposCFGBABEL["EXP_USER"]._NewVal) > 0 ? Convert.ToInt32(_lisCamposCFGBABEL["EXP_USER"]._NewVal) : 1;
6278  }
6279  set
6280  {
6281  if (_lisCamposCFGBABEL.ContainsKey("EXP_USER")) _lisCamposCFGBABEL["EXP_USER"]._NewVal = value;
6282  }
6283  }
6284 
6288  public Boolean _BabelExpPlanCuentas
6289  {
6290  get
6291  {
6292  return _lisCamposCFGBABEL.ContainsKey("EXP_PLANCTA") ? Convert.ToBoolean(_lisCamposCFGBABEL["EXP_PLANCTA"]._NewVal) : false;
6293  }
6294  set
6295  {
6296  if (_lisCamposCFGBABEL.ContainsKey("EXP_PLANCTA")) _lisCamposCFGBABEL["EXP_PLANCTA"]._NewVal = value;
6297  }
6298  }
6299 
6303  public Boolean _BabelExpAsientos
6304  {
6305  get
6306  {
6307  return _lisCamposCFGBABEL.ContainsKey("EXP_ASIENTO") ? Convert.ToBoolean(_lisCamposCFGBABEL["EXP_ASIENTO"]._NewVal) : false;
6308  }
6309  set
6310  {
6311  if (_lisCamposCFGBABEL.ContainsKey("EXP_ASIENTO")) _lisCamposCFGBABEL["EXP_ASIENTO"]._NewVal = value;
6312  }
6313  }
6314 
6315 
6319  public Boolean _BabelExpAsientosBorrados
6320  {
6321  get
6322  {
6323  return _lisCamposCFGBABEL.ContainsKey("EXP_ASIBORRADO") ? Convert.ToBoolean(_lisCamposCFGBABEL["EXP_ASIBORRADO"]._NewVal) : false;
6324  }
6325  set
6326  {
6327  if (_lisCamposCFGBABEL.ContainsKey("EXP_ASIBORRADO")) _lisCamposCFGBABEL["EXP_ASIBORRADO"]._NewVal = value;
6328  }
6329  }
6330 
6334  public Boolean _BabelExpPunteos
6335  {
6336  get
6337  {
6338  return _lisCamposCFGBABEL.ContainsKey("EXP_PUNTEOS") ? Convert.ToBoolean(_lisCamposCFGBABEL["EXP_PUNTEOS"]._NewVal) : false;
6339  }
6340  set
6341  {
6342  if (_lisCamposCFGBABEL.ContainsKey("EXP_PUNTEOS")) _lisCamposCFGBABEL["EXP_PUNTEOS"]._NewVal = value;
6343  }
6344  }
6345 
6349  public Boolean _BabelExpNoTras
6350  {
6351  get
6352  {
6353  return _lisCamposCFGBABEL.ContainsKey("EXP_NOTRASPAS") ? Convert.ToBoolean(_lisCamposCFGBABEL["EXP_NOTRASPAS"]._NewVal) : false;
6354  }
6355  set
6356  {
6357  if (_lisCamposCFGBABEL.ContainsKey("EXP_NOTRASPAS")) _lisCamposCFGBABEL["EXP_NOTRASPAS"]._NewVal = value;
6358  }
6359  }
6360 
6364  public Int32 _BabelImpDatosEmpresa
6365  {
6366  get
6367  {
6368  return _lisCamposCFGBABEL.ContainsKey("IMP_DATEMP") ? Convert.ToInt32(_lisCamposCFGBABEL["IMP_DATEMP"]._NewVal) : 1;
6369  }
6370  set
6371  {
6372  if (_lisCamposCFGBABEL.ContainsKey("IMP_DATEMP")) _lisCamposCFGBABEL["IMP_DATEMP"]._NewVal = value;
6373  }
6374  }
6375 
6376 
6380  public Boolean _BabelImpArbolContable
6381  {
6382  get
6383  {
6384  return _lisCamposCFGBABEL.ContainsKey("IMP_ARBOLC") ? Convert.ToBoolean(_lisCamposCFGBABEL["IMP_ARBOLC"]._NewVal) : false;
6385  }
6386  set
6387  {
6388  if (_lisCamposCFGBABEL.ContainsKey("IMP_ARBOLC")) _lisCamposCFGBABEL["IMP_ARBOLC"]._NewVal = value;
6389  }
6390  }
6391 
6392 
6396  public Int32 _BabelImpAsientos
6397  {
6398  get
6399  {
6400  return _lisCamposCFGBABEL.ContainsKey("IMP_ASIENTO") ? Convert.ToInt32(_lisCamposCFGBABEL["IMP_ASIENTO"]._NewVal) : 0;
6401  }
6402  set
6403  {
6404  if (_lisCamposCFGBABEL.ContainsKey("IMP_ASIENTO")) _lisCamposCFGBABEL["IMP_ASIENTO"]._NewVal = value;
6405  }
6406  }
6407 
6411  public Boolean _BabelImpAsientosBorrados
6412  {
6413  get
6414  {
6415  return _lisCamposCFGBABEL.ContainsKey("IMP_ASIBORRADO") ? Convert.ToBoolean(_lisCamposCFGBABEL["IMP_ASIBORRADO"]._NewVal) : false;
6416  }
6417  set
6418  {
6419  if (_lisCamposCFGBABEL.ContainsKey("IMP_ASIBORRADO")) _lisCamposCFGBABEL["IMP_ASIBORRADO"]._NewVal = value;
6420  }
6421  }
6422 
6426  public Boolean _BabelImpPunteos
6427  {
6428  get
6429  {
6430  return _lisCamposCFGBABEL.ContainsKey("IMP_PUNTEOS") ? Convert.ToBoolean(_lisCamposCFGBABEL["IMP_PUNTEOS"]._NewVal) : false;
6431  }
6432  set
6433  {
6434  if (_lisCamposCFGBABEL.ContainsKey("IMP_PUNTEOS")) _lisCamposCFGBABEL["IMP_PUNTEOS"]._NewVal = value;
6435  }
6436  }
6437 
6441  public Boolean _BabelContabilidadPresupuestariaExport
6442  {
6443  get
6444  {
6445  return _lisCamposCFGBABEL.ContainsKey("EXP_PRESUP") ? Convert.ToBoolean(_lisCamposCFGBABEL["EXP_PRESUP"]._NewVal) : false;
6446  }
6447  set
6448  {
6449  if (_lisCamposCFGBABEL.ContainsKey("EXP_PRESUP")) _lisCamposCFGBABEL["EXP_PRESUP"]._NewVal = value;
6450  }
6451  }
6452 
6456  public Int32 _BabelContabilidadPresupuestariaImport
6457  {
6458  get
6459  {
6460  return _lisCamposCFGBABEL.ContainsKey("IMP_PRESUP") ? Convert.ToInt32(_lisCamposCFGBABEL["IMP_PRESUP"]._NewVal) : 0;
6461  }
6462  set
6463  {
6464  if (_lisCamposCFGBABEL.ContainsKey("IMP_PRESUP")) _lisCamposCFGBABEL["IMP_PRESUP"]._NewVal = value;
6465  }
6466  }
6467 
6471  public Int32 _BabelCuentasSecundarias
6472  {
6473  get
6474  {
6475  return _lisCamposCFGBABEL.ContainsKey("IMP_CTASEC") ? Convert.ToInt32(_lisCamposCFGBABEL["IMP_CTASEC"]._NewVal) : 0;
6476  }
6477  set
6478  {
6479  if (_lisCamposCFGBABEL.ContainsKey("IMP_CTASEC")) _lisCamposCFGBABEL["IMP_CTASEC"]._NewVal = value;
6480  }
6481  }
6482 
6486  public Boolean _TraspasarTodoCompras
6487  {
6488  get
6489  {
6490  //PE-101444 Se mira si hay lotes
6491  return _lisCamposFACTUCNF.ContainsKey("TRASPCOM") && !_HayLotes ? Convert.ToBoolean(_lisCamposFACTUCNF["TRASPCOM"]._NewVal) : false;
6492  }
6493  set
6494  {
6495  if (_lisCamposFACTUCNF.ContainsKey("TRASPCOM")) _lisCamposFACTUCNF["TRASPCOM"]._NewVal = value;
6496  }
6497  }
6498 
6502  public Boolean _FlagsPrecios
6503  {
6504  get
6505  {
6506  return _lisCamposFLAGS.ContainsKey("PRECIOS") ? Convert.ToBoolean(_lisCamposFLAGS["PRECIOS"]._NewVal) : false;
6507  }
6508  set
6509  {
6510  if (_lisCamposFLAGS.ContainsKey("PRECIOS")) _lisCamposFLAGS["PRECIOS"]._NewVal = value;
6511  }
6512  }
6513 
6517  public Boolean _FlagsFormaPagoArticulos
6518  {
6519  get
6520  {
6521  return _lisCamposFLAGS.ContainsKey("TR_FPAG") ? Convert.ToBoolean(_lisCamposFLAGS["TR_FPAG"]._NewVal) : false;
6522  }
6523  set
6524  {
6525  if (_lisCamposFLAGS.ContainsKey("TR_FPAG")) _lisCamposFLAGS["TR_FPAG"]._NewVal = value;
6526  }
6527  }
6528 
6532  public Boolean _FlagsCostesDeposito
6533  {
6534  get
6535  {
6536  return _lisCamposFLAGS.ContainsKey("ALBCOSTE") ? Convert.ToBoolean(_lisCamposFLAGS["ALBCOSTE"]._NewVal) : false;
6537  }
6538  set
6539  {
6540  if (_lisCamposFLAGS.ContainsKey("ALBCOSTE")) _lisCamposFLAGS["ALBCOSTE"]._NewVal = value;
6541  }
6542  }
6543 
6547  public Boolean _FlagsCobradoresVendedoresPrevisiones
6548  {
6549  get
6550  {
6551  return _lisCamposFLAGS.ContainsKey("VENCOB") ? Convert.ToBoolean(_lisCamposFLAGS["VENCOB"]._NewVal) : false;
6552  }
6553  set
6554  {
6555  if (_lisCamposFLAGS.ContainsKey("VENCOB")) _lisCamposFLAGS["VENCOB"]._NewVal = value;
6556  }
6557  }
6558 
6562  public bool _UtilizarCuentasSecundarias
6563  {
6564  get
6565  {
6566  return _lisCamposCONTACNF.ContainsKey("SECUNDAR") ? Convert.ToBoolean(_lisCamposCONTACNF["SECUNDAR"]._NewVal) : false;
6567  }
6568  set
6569  {
6570  if (_lisCamposCONTACNF.ContainsKey("SECUNDAR")) _lisCamposCONTACNF["SECUNDAR"]._NewVal = value;
6571  }
6572  }
6573 
6577  public bool _AutoMarcadoDiferenciasCambio
6578  {
6579  get
6580  {
6581  return _lisCamposCONTACNF.ContainsKey("AUTODIFCAM") ? Convert.ToBoolean(_lisCamposCONTACNF["AUTODIFCAM"]._NewVal) : false;
6582  }
6583  set
6584  {
6585  if (_lisCamposCONTACNF.ContainsKey("AUTODIFCAM")) _lisCamposCONTACNF["AUTODIFCAM"]._NewVal = value;
6586  }
6587  }
6588 
6592  public Int32 _ContabilidadDiasRiesgo
6593  {
6594  get
6595  {
6596  return _lisCamposCONTACNF.ContainsKey("DIAS_RIESGO") ? Convert.ToInt32(_lisCamposCONTACNF["DIAS_RIESGO"]._NewVal) : 0;
6597  }
6598  set
6599  {
6600  if (_lisCamposCONTACNF.ContainsKey("DIAS_RIESGO")) _lisCamposCONTACNF["DIAS_RIESGO"]._NewVal = value;
6601  }
6602  }
6603 
6607  public String _ContabilidadBancoDefecto
6608  {
6609  get
6610  {
6611  return _lisCamposCONTACNF.ContainsKey("COBROEFEC") ? Convert.ToString(_lisCamposCONTACNF["COBROEFEC"]._NewVal) : String.Empty;
6612  }
6613  set
6614  {
6615  if (_lisCamposCONTACNF.ContainsKey("COBROEFEC")) _lisCamposCONTACNF["COBROEFEC"]._NewVal = value;
6616  }
6617  }
6618 
6622  public String _ContabilidadRutaCartas
6623  {
6624  get
6625  {
6626  return _lisCamposCONTACNF.ContainsKey("CARTAS") ? Convert.ToString(_lisCamposCONTACNF["CARTAS"]._NewVal) : String.Empty;
6627  }
6628  set
6629  {
6630  if (_lisCamposCONTACNF.ContainsKey("CARTAS")) _lisCamposCONTACNF["CARTAS"]._NewVal = value;
6631  }
6632  }
6633 
6637  public String _ContabilidadRutaPagares
6638  {
6639  get
6640  {
6641  return _lisCamposCONTACNF.ContainsKey("DIRPAGA") ? Convert.ToString(_lisCamposCONTACNF["DIRPAGA"]._NewVal) : String.Empty;
6642  }
6643  set
6644  {
6645  if (_lisCamposCONTACNF.ContainsKey("DIRPAGA")) _lisCamposCONTACNF["DIRPAGA"]._NewVal = value;
6646  }
6647  }
6648 
6652  public String _Ruta_SEPA
6653  {
6654  get
6655  {
6656  return _lisCamposCONTACNF.ContainsKey("RUTA_SEPA") ? Convert.ToString(_lisCamposCONTACNF["RUTA_SEPA"]._NewVal) : String.Empty;
6657  }
6658  set
6659  {
6660  if (_lisCamposCONTACNF.ContainsKey("RUTA_SEPA")) _lisCamposCONTACNF["RUTA_SEPA"]._NewVal = value;
6661  }
6662  }
6663 
6664 
6668  public string _Ruta_SEPA_Ant
6669  {
6670  get
6671  {
6672  if (_lisCamposCONTACNF.ContainsKey("RUTA_SEPA"))
6673  return Convert.ToString(_lisCamposCONTACNF["RUTA_SEPA"]._OldVal);
6674  else
6675  return "";
6676  }
6677  }
6678 
6679 
6683  public String _ContabilidadTipoIVAGastos
6684  {
6685  get
6686  {
6687  return _lisCamposCONTACNF.ContainsKey("IVAGASDEV") ? Convert.ToString(_lisCamposCONTACNF["IVAGASDEV"]._NewVal) : String.Empty;
6688  }
6689  set
6690  {
6691  if (_lisCamposCONTACNF.ContainsKey("IVAGASDEV")) _lisCamposCONTACNF["IVAGASDEV"]._NewVal = value;
6692  }
6693  }
6694 
6700  public TipoFechaRegistro _TipoFechaRegistro
6701  {
6702  get
6703  {
6704  return (TipoFechaRegistro)Enum.Parse(typeof(TipoFechaRegistro), Convert.ToString(_nTipoFechaRegistro));
6705  }
6706  set
6707  {
6708  _nTipoFechaRegistro = Convert.ToInt32(value);
6709  }
6710  }
6711 
6712  private int _nTipoFechaRegistro
6713  {
6714  get
6715  {
6716  return _lisCamposCONTACNF.ContainsKey("TIPFREGIS") ? Convert.ToInt32(_lisCamposCONTACNF["TIPFREGIS"]._NewVal) : 1;
6717  }
6718  set
6719  {
6720  if (_lisCamposCONTACNF.ContainsKey("TIPFREGIS")) _lisCamposCONTACNF["TIPFREGIS"]._NewVal = value;
6721  }
6722  }
6723 
6724 
6728  public TipoPlanContable _PlanContable
6729  {
6730  get
6731  {
6732  return (TipoPlanContable)Enum.Parse(typeof(TipoPlanContable), Convert.ToString(_Plan_Conta));
6733  }
6734  set
6735  {
6736  _Plan_Conta = Convert.ToInt32(value);
6737  }
6738  }
6739 
6740  private int _Plan_Conta
6741  {
6742  get
6743  {
6744  return _lisCamposCONTACNF.ContainsKey("PLAN_CONTA") ? Convert.ToInt32(_lisCamposCONTACNF["PLAN_CONTA"]._NewVal) : 2;
6745  }
6746  set
6747  {
6748  if (_lisCamposCONTACNF.ContainsKey("PLAN_CONTA")) _lisCamposCONTACNF["PLAN_CONTA"]._NewVal = value;
6749  }
6750  }
6751 
6755  public bool _GranEmpresa
6756  {
6757  get
6758  {
6759  return _lisCamposCONTACNF.ContainsKey("GR_EMPRESA") ? Convert.ToBoolean(_lisCamposCONTACNF["GR_EMPRESA"]._NewVal) : false;
6760  }
6761  set
6762  {
6763  if (_lisCamposCONTACNF.ContainsKey("GR_EMPRESA")) _lisCamposCONTACNF["GR_EMPRESA"]._NewVal = value;
6764  }
6765  }
6766 
6770  public Boolean _BloqPedVta
6771  {
6772  get
6773  {
6774  return _lisCampos.ContainsKey("BLOQPEDVTA") ? Convert.ToBoolean(_lisCampos["BLOQPEDVTA"]._NewVal) : false;
6775  }
6776  set
6777  {
6778  if (_lisCampos.ContainsKey("BLOQPEDVTA")) _lisCampos["BLOQPEDVTA"]._NewVal = value;
6779  }
6780  }
6781 
6785  public Boolean _BloqAlbVta
6786  {
6787  get
6788  {
6789  return _lisCampos.ContainsKey("BLOQALBVTA") ? Convert.ToBoolean(_lisCampos["BLOQALBVTA"]._NewVal) : false;
6790  }
6791  set
6792  {
6793  if (_lisCampos.ContainsKey("BLOQALBVTA")) _lisCampos["BLOQALBVTA"]._NewVal = value;
6794  }
6795  }
6796 
6800  public Boolean _BloqPreVta
6801  {
6802  get
6803  {
6804  return _lisCampos.ContainsKey("BLOQPREVTA") ? Convert.ToBoolean(_lisCampos["BLOQPREVTA"]._NewVal) : false;
6805  }
6806  set
6807  {
6808  if (_lisCampos.ContainsKey("BLOQPREVTA")) _lisCampos["BLOQPREVTA"]._NewVal = value;
6809  }
6810  }
6811 
6815  public Boolean _BloqDepVta
6816  {
6817  get
6818  {
6819  return _lisCampos.ContainsKey("BLOQDEPVTA") ? Convert.ToBoolean(_lisCampos["BLOQDEPVTA"]._NewVal) : false;
6820  }
6821  set
6822  {
6823  if (_lisCampos.ContainsKey("BLOQDEPVTA")) _lisCampos["BLOQDEPVTA"]._NewVal = value;
6824  }
6825  }
6826 
6827 
6831  public Int32 _Produccion
6832  {
6833  get
6834  {
6835  return _lisCamposCONTADORES.ContainsKey("PRODUCCION") ? Convert.ToInt32(_lisCamposCONTADORES["PRODUCCION"]._NewVal) : 0;
6836  }
6837  set
6838  {
6839  if (_lisCamposCONTADORES.ContainsKey("PRODUCCION")) _lisCamposCONTADORES["PRODUCCION"]._NewVal = value;
6840  }
6841  }
6842 
6846  public decimal _Porestrup
6847  {
6848  get
6849  {
6850  return _lisCampos.ContainsKey("PORESTRUP") ? Convert.ToDecimal(_lisCampos["PORESTRUP"]._NewVal) : 0.00M;
6851  }
6852  set
6853  {
6854  if (_lisCampos.ContainsKey("PORESTRUP")) _lisCampos["PORESTRUP"]._NewVal = value;
6855  }
6856  }
6857 
6861  public decimal _Porestrut
6862  {
6863  get
6864  {
6865  return _lisCampos.ContainsKey("PORESTRUT") ? Convert.ToDecimal(_lisCampos["PORESTRUT"]._NewVal) : 0.00M;
6866  }
6867  set
6868  {
6869  if (_lisCampos.ContainsKey("PORESTRUT")) _lisCampos["PORESTRUT"]._NewVal = value;
6870  }
6871  }
6872 
6876  public bool _PCostes
6877  {
6878  get
6879  {
6880  return _lisCampos.ContainsKey("PCOSTES") ? Convert.ToBoolean(_lisCampos["PCOSTES"]._NewVal) : false;
6881  }
6882  set
6883  {
6884  if (_lisCampos.ContainsKey("PCOSTES")) _lisCampos["PCOSTES"]._NewVal = value;
6885  }
6886  }
6887 
6891  public bool _ActualizarCosteArticuloPrincipal
6892  {
6893  get
6894  {
6895  return _lisCampos.ContainsKey("ACTCOSTPRI") ? Convert.ToBoolean(_lisCampos["ACTCOSTPRI"]._NewVal) : false;
6896  }
6897  set
6898  {
6899  if (_lisCampos.ContainsKey("ACTCOSTPRI")) _lisCampos["ACTCOSTPRI"]._NewVal = value;
6900  }
6901  }
6902 
6906  public bool _ActualizarCosteArticuloComponente
6907  {
6908  get
6909  {
6910  return _lisCampos.ContainsKey("ACTCOSTCOM") ? Convert.ToBoolean(_lisCampos["ACTCOSTCOM"]._NewVal) : false;
6911  }
6912  set
6913  {
6914  if (_lisCampos.ContainsKey("ACTCOSTCOM")) _lisCampos["ACTCOSTCOM"]._NewVal = value;
6915  }
6916  }
6917 
6921  public Int32 _FacturasRectificativas
6922  {
6923  get
6924  {
6925  return _lisCampos.ContainsKey("IVASOPOR") ? Convert.ToInt32(_lisCampos["IVASOPOR"]._NewVal) : 0;
6926  }
6927  set
6928  {
6929  if (_lisCampos.ContainsKey("IVASOPOR")) _lisCampos["IVASOPOR"]._NewVal = value;
6930  }
6931  }
6932 
6936  public Int32 _Comunicados
6937  {
6938  get
6939  {
6940  return _lisCampos.ContainsKey("COMUNICA") ? Convert.ToInt32(_lisCampos["COMUNICA"]._NewVal) : 0;
6941  }
6942  set
6943  {
6944  if (_lisCampos.ContainsKey("COMUNICA")) _lisCampos["COMUNICA"]._NewVal = value;
6945  }
6946  }
6947 
6948 
6949 
6953  public String _EmpStock
6954  {
6955  get
6956  {
6957  String lcStock = _Codigo;
6958 
6959  if (_lisCamposFACTUCNF.ContainsKey("EMP_STOCK") && _Tipo == Convert.ToString(TipoEmpresa.Normal))
6960  {
6961  if (String.IsNullOrEmpty(Convert.ToString(_lisCamposFACTUCNF["EMP_STOCK"]._NewVal).Trim()))
6962  {
6963  _lisCamposFACTUCNF["EMP_STOCK"]._NewVal = lcStock = _Codigo;
6964  }
6965  else
6966  {
6967  lcStock = Convert.ToString(_lisCamposFACTUCNF["EMP_STOCK"]._NewVal);
6968  }
6969  }
6970  else
6971  {
6972  lcStock = String.Empty;
6973  }
6974  return lcStock;
6975  }
6976  set
6977  {
6978  if (_lisCamposFACTUCNF.ContainsKey("EMP_STOCK")) _lisCamposFACTUCNF["EMP_STOCK"]._NewVal = value;
6979  }
6980  }
6981 
6985  public Decimal _Conversion
6986  {
6987  get
6988  {
6989  return _lisCamposFACTUCNF.ContainsKey("CONVERSION") ? Convert.ToDecimal(_lisCamposFACTUCNF["CONVERSION"]._NewVal) : 0;
6990  }
6991  set
6992  {
6993  if (_lisCamposFACTUCNF.ContainsKey("CONVERSION")) _lisCamposFACTUCNF["CONVERSION"]._NewVal = value;
6994  }
6995  }
6996 
7000  public String _Moneda
7001  {
7002  get
7003  {
7004  return _lisCampos.ContainsKey("MONEDA") ? Convert.ToString(_lisCampos["MONEDA"]._NewVal) : String.Empty;
7005  }
7006  set
7007  {
7008  if (_lisCampos.ContainsKey("MONEDA")) _lisCampos["MONEDA"]._NewVal = value;
7009  }
7010  }
7011 
7015  public String _IdiomaDocumento
7016  {
7017  get
7018  {
7019  return _lisCamposCODIGOS.ContainsKey("IDIOMAPRED") ? Convert.ToString(_lisCamposCODIGOS["IDIOMAPRED"]._NewVal) : String.Empty;
7020  }
7021  set
7022  {
7023  if (_lisCamposCODIGOS.ContainsKey("IDIOMAPRED")) _lisCamposCODIGOS["IDIOMAPRED"]._NewVal = value;
7024  }
7025  }
7026 
7030  public String _AlmacenPorDefecto
7031  {
7032  get
7033  {
7034  return _lisCampos.ContainsKey("ALMACEN") ? Convert.ToString(_lisCampos["ALMACEN"]._NewVal) : String.Empty;
7035  }
7036  set
7037  {
7038  if (_lisCampos.ContainsKey("ALMACEN")) _lisCampos["ALMACEN"]._NewVal = value;
7039  }
7040  }
7041 
7045  public String _AlmacenFabricacion
7046  {
7047  get
7048  {
7049  return _lisCampos.ContainsKey("ALMFABRI") ? Convert.ToString(_lisCampos["ALMFABRI"]._NewVal) : String.Empty;
7050  }
7051  set
7052  {
7053  if (_lisCampos.ContainsKey("ALMFABRI")) _lisCampos["ALMFABRI"]._NewVal = value;
7054  }
7055  }
7056 
7060  public Boolean _NoVenderNoStock
7061  {
7062  get
7063  {
7064  return (_lisCamposFLAGS.ContainsKey("STOCK")) ? Convert.ToBoolean(_lisCamposFLAGS["STOCK"]._NewVal) : false;
7065  }
7066  set
7067  {
7068  if (_lisCamposFLAGS.ContainsKey("STOCK")) _lisCamposFLAGS["STOCK"]._NewVal = value;
7069  }
7070  }
7071 
7072 
7076  public Boolean _CalculoStockEscandall
7077  {
7078  get
7079  {
7080  return (_lisCamposFLAGS.ContainsKey("ESCAN_PRODUC")) ? Convert.ToBoolean(_lisCamposFLAGS["ESCAN_PRODUC"]._NewVal) : false;
7081  }
7082  set
7083  {
7084  if (_lisCamposFLAGS.ContainsKey("ESCAN_PRODUC")) _lisCamposFLAGS["ESCAN_PRODUC"]._NewVal = value;
7085  }
7086  }
7087 
7091  public Int32 _Tipo_Max
7092  {
7093  get
7094  {
7095  return _lisCamposFLAGS.ContainsKey("TIPO_MAX") ? Convert.ToInt32(_lisCamposFLAGS["TIPO_MAX"]._NewVal) : 0;
7096  }
7097  set
7098  {
7099  if (_lisCamposFLAGS.ContainsKey("TIPO_MAX")) _lisCamposFLAGS["TIPO_MAX"]._NewVal = value;
7100  }
7101  }
7102 
7106  public String _LetraPorDefecto
7107  {
7108  get
7109  {
7110  return _lisCampos.ContainsKey("LETRA") ? Convert.ToString(_lisCampos["LETRA"]._NewVal) : String.Empty;
7111  }
7112  set
7113  {
7114  if (_lisCampos.ContainsKey("LETRA")) _lisCampos["LETRA"]._NewVal = value;
7115  }
7116  }
7117 
7121  public String _LetraFacturaDirecta
7122  {
7123  get
7124  {
7125  return _lisCampos.ContainsKey("ALBFADI") ? Convert.ToString(_lisCampos["ALBFADI"]._NewVal) : String.Empty;
7126  }
7127  set
7128  {
7129  if (_lisCampos.ContainsKey("ALBFADI")) _lisCampos["ALBFADI"]._NewVal = value;
7130  }
7131  }
7132 
7136  public String _LetraRect
7137  {
7138  get
7139  {
7140  return _lisCampos.ContainsKey("LETRARECT") ? Convert.ToString(_lisCampos["LETRARECT"]._NewVal) : String.Empty;
7141  }
7142  set
7143  {
7144  if (_lisCampos.ContainsKey("LETRARECT")) _lisCampos["LETRARECT"]._NewVal = value;
7145  }
7146  }
7147 
7151  public String _RutaExp
7152  {
7153  get
7154  {
7155  return _lisCamposFACTUCNF.ContainsKey("RUTAEXP") ? Convert.ToString(_lisCamposFACTUCNF["RUTAEXP"]._NewVal) : String.Empty;
7156  }
7157  set
7158  {
7159  if (_lisCamposFACTUCNF.ContainsKey("RUTAEXP")) _lisCamposFACTUCNF["RUTAEXP"]._NewVal = value;
7160  }
7161  }
7162 
7166  public String _PicPorcent
7167  {
7168  get
7169  {
7170  return _lisCampos.ContainsKey("TPC") ? Convert.ToString(_lisCampos["TPC"]._NewVal) : String.Empty;
7171  }
7172  set
7173  {
7174  if (_lisCampos.ContainsKey("TPC")) _lisCampos["TPC"]._NewVal = value;
7175  }
7176  }
7177 
7181  public String _Unidades
7182  {
7183  get
7184  {
7185  return _lisCamposFACTUCNF.ContainsKey("UNIDADES") ? Convert.ToString(_lisCamposFACTUCNF["UNIDADES"]._NewVal) : String.Empty;
7186  }
7187  set
7188  {
7189  if (_lisCamposFACTUCNF.ContainsKey("UNIDADES")) _lisCamposFACTUCNF["UNIDADES"]._NewVal = value;
7190  }
7191  }
7192 
7196  public String _GranUnidades