Terminal.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Data;
6 using System.IO.Ports;
7 using System.Runtime.InteropServices;
8 using System.ComponentModel;
9 
10 using sage.ew.ewbase;
11 using sage.ew.global;
12 using sage.ew.db;
13 using sage.ew.functions;
14 using sage.ew.interficies;
15 using sage.ew.docventatpv;
16 
17 namespace sage.ew.tpv.Clases
18 {
22  public class Terminal : ewMante
23  {
27  public bool _Enabled = true;
28 
32  public Bascula _Bascula = null;
33 
37  public DisplayTPV _Display = null;
38 
42  public CajonTPV _Cajon = null;
43 
44  private bool _lExiste = false;
45 
49  public bool _ExisteRegistro
50  {
51  get
52  {
53  return _lExiste;
54  }
55  }
56 
60  public Terminal()
61  {
62  // Configuarar el mantenimiento
63  this._Clave = "Codigo";
64  this._DataBase = "Comunes";
65  this._Tabla = "Terminal";
66  this._Pantalla = "Terminal";
67  this._TituloMantenimiento = "Mantenimiento de terminales";
68 
69  // Asignem el codi del terminal i dispararà el refresh on carregarà els perifèrics
70  this._Codigo = Convert.ToString(EW_GLOBAL._GetVariable("wc_terminal"));
71 
72  //Carreguem periferics per defecte ja que en el cas de no tindre registre a COMUNES!TERMINAL pel terminal actual
73  //no carrega ni display ni calaix de la caixa activa.
74  if (_Display == null || _Cajon == null)
75  this._CargarPerifericos();
76 
77  _lExiste = _Existe_Registro();
78 
79  }
80 
81  // 93378
87  public ICash Cash()
88  {
89  DataTable ldtCash = new DataTable();
90  string lcSql = string.Empty;
91  string lcClase = string.Empty;
92  int lnIdnCash = 0;
93  ICash loCash = null;
94 
95 
96  lnIdnCash = Convert.ToInt32(DB.SQLValor("TERMINAL", "CODIGO", this._Codigo, "IDNCASH", "COMUNES"));
97 
98  if (lnIdnCash > 0)
99  {
100  lcSql = " SELECT clase FROM " + DB.SQLDatabase("COMUNES","CASH") + " Where codigo = " + DB.SQLString(lnIdnCash);
101  DB.SQLExec(lcSql, ref ldtCash);
102 
103  if (ldtCash != null && ldtCash.Rows.Count > 0)
104  lcClase = Convert.ToString(ldtCash.Rows[0]["clase"]).Trim();
105 
106  if (!string.IsNullOrEmpty(lcClase))
107  {
108  //Recuperem el tipus de la clase
109  Type elementType = Type.GetType(lcClase);
110  if (elementType != null)
111  {
112  //Creem la instancia del cash
113  loCash = ((ICash)Activator.CreateInstance(elementType));
114  }
115  else
116  {
117  int lnContador = 0;
118  string lcSeparador = ",";
119  // Puede ser una clase de otro Assembly
120  foreach (string lcAssembly in lcClase.Split('.'))
121  {
122  lcClase = lcClase + lcSeparador + lcAssembly;
123 
124  lcSeparador = ".";
125  lnContador++;
126 
127  if (lnContador > 2)
128  {
129  break;
130  }
131  }
132 
133  elementType = Type.GetType(lcClase);
134  if (elementType != null)
135  {
136  //Creem la instancia del cash
137  loCash = ((ICash)Activator.CreateInstance(elementType));
138  }
139  }
140  }
141  }
142 
143 
144  return loCash;
145  }
146  // fi 93378
147 
148  // PE-94362
152  public override void _Refresh()
153  {
154  base._Refresh();
155 
156  _CargarPerifericos();
157  }
158 
159  // PE-94362. Consulta los perifericos del terminal y los configura
160  private void _CargarPerifericos()
161  {
162  string lcNompdisp="";
163  string lcNompcaja = "";
164  dynamic loForm = null;
165 
166  // Descarreguem objectes
167  if (_Display != null && _Display._Form != null)
168  {
169  loForm = _Display._Form;
170  ((formul.FormBase)loForm).Controls.RemoveByKey("txtDisplay");
171  }
172  _Cajon = null;
173  _Display = null;
174 
175  if (!Convert.ToBoolean(this._Campo("HERCONFTPV")))
176  {
177  try
178  {
179  // No heredar de la caixa, agafem els valors directament del terminal
180  lcNompdisp = this._Campo("Nompdisp").ToString();
181  lcNompcaja = this._Campo("Nompcaja").ToString();
182  }
183  catch (Exception loEx)
184  {
185  DB.Registrar_Error(loEx);
186  }
187  }
188  else
189  {
190  try //PE-
191  {
192  // Agafem els valors de la caixa
193  string lcCaja = Convert.ToString(EW_GLOBAL._GetVariable("wc_cajatpv"));
194  if (!String.IsNullOrWhiteSpace(lcCaja)) //Sino hay código de caja no hace falta seguir
195  {
196  Caja loCaja = new Caja(lcCaja);
197  lcNompdisp = loCaja._Campo("Nompdisp").ToString();
198  lcNompcaja = loCaja._Campo("Nompcaja").ToString();
199  }
200  }
201  catch (Exception loEx)
202  {
203  DB.Registrar_Error(loEx);
204  }
205  }
206 
207  // Display
208  if (!string.IsNullOrWhiteSpace(lcNompdisp))
209  {
210  // Si s'ha definit impressora, l'assignem al calaix. A l'assignar la propietat automàticament carregarà el codi d'obrir caixa
211  _Display = new DisplayTPV();
212  _Display._NombreImpresora = lcNompdisp;
213  _Display._Form = loForm;
214  }
215 
216  // Calaix
217  if (!string.IsNullOrWhiteSpace(lcNompcaja))
218  {
219  // Si s'ha definit impressora, l'assignem al calaix. A l'assignar la propietat automàticament carregarà el codi d'obrir caixa
220  _Cajon = new CajonTPV();
221  _Cajon._NombreImpresora = lcNompcaja;
222  }
223  }
224 
230  public void _PrintDisplay(string tccadena)
231  {
232  if (_Display != null)
233  _Display._PrintDisplay(tccadena);
234  }
235 
240  public void _AbrirCaja()
241  {
242  if (_Cajon != null)
243  _Cajon._Abrir_Cajon();
244  }
245  }
246 }
Clase de negocio base para mantenimientos
Definition: clsEwBase.cs:1643
Clase para controlar la apertura del cajón
Definition: CajonTPV.cs:21
void _AbrirCaja()
Abre el cajon de la caja
Definition: Terminal.cs:240
Terminal()
Constructor de la clase
Definition: Terminal.cs:60
void _PrintDisplay(string tcCadena)
Muestra la cadena en el display
Definition: DisplayTPV.cs:282
ICash Cash()
Ens retornarà un objecte de tipus ICash a partir del IDNCASH fent una instancia de la llibreria que h...
Definition: Terminal.cs:87
void _Abrir_Cajon()
Produce la apertura del cajón
Definition: CajonTPV.cs:117
string _NombreImpresora
Nombre de la impresora a la que se enviarán los códigos
Definition: DisplayTPV.cs:172
string _NombreImpresora
Nombre de la impresora a la que se enviarán los códigos
Definition: CajonTPV.cs:30
frmGestionPerfil _Form
PE-86618 Referencia al formulario para poder mostrar _MessageBox
Definition: DisplayTPV.cs:125
Definició de la interficie pels calaixos intel·ligents (cash)
Definition: ICash.cs:14
PE-86618 : Clase Terminal
Definition: Terminal.cs:22
void _PrintDisplay(string tccadena)
muestra un mensaje por el display
Definition: Terminal.cs:230
Clase Bascula: Captura del peso, cargar/guardar configuración en Base de datos, ...
Definition: Basculas.cs:19
override void _Refresh()
Refrescar los periféricos del terminal
Definition: Terminal.cs:152
Clase para mostrar mensajes en el display
Definition: DisplayTPV.cs:23