UserEnvio.cs
1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Drawing;
5 using System.Data;
6 using System.Linq;
7 using System.Text;
8 using System.Windows.Forms;
9 using sage.ew.objetos;
13 using sage.ew.functions;
14 using Sage.ES.S50.Modelos.Clases;
15 using sage.ew.global;
17 using sage.ew.formul.Forms;
18 using sage.ew.formul;
19 using sage.ew.images.Properties;
20 
21 namespace Sage.ES.S50.Modelos.UserControls
22 {
26  public partial class UserEnvio : UserControl
27  {
28  #region Propiedades privadas
29  IModeloFiscalLibros _oModeloFiscalLibros = null;
30  private frmObserv _ofrmObserva = null;
31  private Form _oForm = null;
32  private bool _lValidarMensajeServicio = true;
33 
37  private bool _lEsModeloSII
38  {
39  get { return _oModeloFiscalLibros._Pantalla == "SII"; }
40  }
41 
42  #endregion Propiedades privadas
43 
44  #region Propiedades públicas
45  public IModeloFiscalLibros _ModeloFiscalLibros
49  {
50  get
51  {
52  return _oModeloFiscalLibros;
53  }
54  set
55  {
56  if (_oModeloFiscalLibros != value && value != null)
57  {
58  _oModeloFiscalLibros = value;
59 
60  ConfigurarGrid();
61  SubscripcionEventos();
62  }
63  }
64  }
65 
66  #endregion Propiedades públicas
67 
68  #region Constructor
69  public UserEnvio()
73  {
74  InitializeComponent();
75 
76  if (!DesignMode)
77  {
78  gridRespuestas._FiltrarPorColumna = true;
79  gridRespuestas.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
80  }
81  }
82  #endregion Constructor
83 
84  #region Métodos privados
85  private void SubscripcionEventos()
89  {
90  gridRespuestas.RowPrePaint += GridRespuestas_RowPrePaint;
91  gridRespuestas.CellDoubleClick += GridRespuestas_CellDoubleClick;
92  gridRespuestas.CellClick += GridRespuestas_CellClick;
93 
94  _oForm = FindForm();
95 
96  if (_oForm != null)
97  _oForm.Activated += Form_Activated;
98  }
99 
103  private void CancelarSubscripcionEventos()
104  {
105  gridRespuestas.RowPrePaint -= GridRespuestas_RowPrePaint;
106  gridRespuestas.CellDoubleClick -= GridRespuestas_CellDoubleClick;
107  gridRespuestas.CellClick -= GridRespuestas_CellClick;
108 
109  if (_oForm != null)
110  _oForm.Activated -= Form_Activated;
111  }
112 
118  private void Form_Activated(object sender, EventArgs e)
119  {
120  if (Disposing || IsDisposed)
121  return;
122 
123  if (_ofrmObserva != null)
124  _ofrmObserva.Focus();
125 
126  if (_lValidarMensajeServicio)
127  ValidarMensajeServicio();
128  }
129 
133  private void ValidarMensajeServicio()
134  {
135  _lValidarMensajeServicio = false;
136 
137  string lcMensajeServicio = ((ModeloFiscalLibrosBase)_oModeloFiscalLibros)._MensajeTiempoEsperaExcedidoServicio;
138 
139  List<IRespuestaFactura> lstRespuestasServicio = _oModeloFiscalLibros._GeneradorXML._Resultado.ToList().AsEnumerable().Where(res => res._Error._Descripcion == lcMensajeServicio).ToList<IRespuestaFactura>();
140 
141  if (lstRespuestasServicio != null && lstRespuestasServicio.Count > 0)
142  FUNCTIONS._MessageBox(lcMensajeServicio, Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
143  }
144 
150  private void GridRespuestas_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
151  {
152  if (sender != null && e.RowIndex >= 0)
153  {
154  ewgrid loGrid = (ewgrid)sender;
155 
156  DataGridViewRow loRow = loGrid.Rows[e.RowIndex];
157 
158  string lcColumnName = loGrid.CurrentCell.OwningColumn.Name;
159 
160  if (lcColumnName == "_DescripcionIncidencia")
161  {
162  IRespuestaFactura loRespuestaFactura = (IRespuestaFactura)loRow.DataBoundItem;
163 
164  if (loRespuestaFactura is RespuestaFacturaBase)
165  {
166  string lcIncidencia = ((RespuestaFacturaBase)loRespuestaFactura)._DescripcionIncidencia;
167 
168  using (frmObserv frmObserva = new frmObserv(true))
169  {
170  frmObserva._ReadOnly = true;
171  frmObserva._Titulo = "Detalle de la incidencia";
172  frmObserva._Text = lcIncidencia;
173  frmObserva._ShowDialog();
174  }
175  }
176  }
177  }
178  }
179 
185  private void GridRespuestas_CellClick(object sender, DataGridViewCellEventArgs e)
186  {
187  if (sender != null && e.RowIndex >= 0)
188  {
189  ewgrid loGrid = (ewgrid)sender;
190 
191  DataGridViewRow loRow = loGrid.Rows[e.RowIndex];
192 
193  string lcColumnName = loGrid.CurrentCell.OwningColumn.Name;
194 
195  if (lcColumnName == "respuesta")
196  {
197  IRespuestaFactura loRespuestaFactura = (IRespuestaFactura)loRow.DataBoundItem;
198 
199  if (loRespuestaFactura is RespuestaFacturaBase)
200  loRespuestaFactura._ShowRespuesta();
201  }
202  }
203  }
204 
210  private void GridRespuestas_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
211  {
212  if (sender != null)
213  {
214  ewgrid loGrid = (ewgrid)sender;
215 
216  DataGridViewRow loRow = loGrid.Rows[e.RowIndex];
217 
218  IRespuestaFactura loRespuestaFactura = (IRespuestaFactura)loRow.DataBoundItem;
219 
220  if (loRespuestaFactura._Estado == EstadoAEATModelos.Rechazada && loGrid.Rows[e.RowIndex].DefaultCellStyle.ForeColor != Color.Red)
221  loGrid.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Red;
222  }
223  }
224 
228  private void Binding()
229  {
230  BindingSource ofilas = new BindingSource();
231 
232  _oModeloFiscalLibros._GeneradorXML._Resultado.ToList().AsEnumerable().Where(res=>res._Libro != null).ToList().ForEach(f => ofilas.Add(f));
233 
234  gridRespuestas.DataSource = ofilas;
235  }
236 
240  private void ConfigurarGrid()
241  {
242  int lnLongCol = Convert.ToInt32(EW_GLOBAL._GetLenCampo(KeyDiccionarioLenCampos.wn_factcompra));
243  int lnWidthFactura = TextRenderer.MeasureText(new String('A', lnLongCol), new System.Drawing.Font("Segoe UI", 9.5F)).Width;
244 
245  gridRespuestas.AutoGenerateColumns = false;
246  gridRespuestas.Columns.Clear();
247 
248  Binding();
249 
251  {
252  ldgtbColLibro.Name = "_Titulo";
253  ldgtbColLibro.DataPropertyName = "_Titulo";
254  ldgtbColLibro.HeaderText = "Libro";
255  ldgtbColLibro.ValueType = typeof(string);
256  ldgtbColLibro.Visible = true;
257  ldgtbColLibro._NoParar = true;
258  ldgtbColLibro.ToolTipText = "Libro";
259  ldgtbColLibro.Width = 150;
260  ldgtbColLibro.ReadOnly = true;
261  gridRespuestas.Columns.Add(ldgtbColLibro);
262  }
263 
264  // Si trabajamos con doble territorio, añadimos la columna con el territorio
265  if (Convert.ToBoolean(_oModeloFiscalLibros?._DobleTerritorio))
266  {
268  {
269  ldgtbColTerritorio.Name = "_Territorio";
270  ldgtbColTerritorio.DataPropertyName = "_Territorio";
271  ldgtbColTerritorio.HeaderText = "Territorio";
272  ldgtbColTerritorio.ValueType = typeof(string);
273  ldgtbColTerritorio.Visible = true;
274  ldgtbColTerritorio._NoParar = true;
275  ldgtbColTerritorio.ToolTipText = "Territorio";
276  ldgtbColTerritorio.Width = 60;
277  ldgtbColTerritorio.ReadOnly = true;
278  gridRespuestas.Columns.Add(ldgtbColTerritorio);
279  }
280  }
281 
283  {
284  ldgtbColFactura.Name = "_Factura";
285  ldgtbColFactura.DataPropertyName = "_Factura";
286  ldgtbColFactura.HeaderText = "Factura";
287  ldgtbColFactura.ValueType = typeof(string);
288  ldgtbColFactura._NoParar = true;
289  ldgtbColFactura.ToolTipText = "Factura";
290  ldgtbColFactura.Width = lnWidthFactura;
291  ldgtbColFactura.ReadOnly = true;
292  gridRespuestas.Columns.Add(ldgtbColFactura);
293  }
294 
296  {
297  ldgtbColFactura.Name = "_FechaExpedicion";
298  ldgtbColFactura.DataPropertyName = "_FechaExpedicion";
299  ldgtbColFactura.HeaderText = "Fecha";
300  ldgtbColFactura.ValueType = typeof(DateTime);
301  ldgtbColFactura._NoParar = true;
302  ldgtbColFactura.ToolTipText = "Fecha";
303  ldgtbColFactura.Width = 80;
304  ldgtbColFactura.ReadOnly = true;
305  gridRespuestas.Columns.Add(ldgtbColFactura);
306  }
307 
309  {
310  ldgtbColTipoEnvio.Name = "_DescripcionEnvio";
311  ldgtbColTipoEnvio.DataPropertyName = "_DescripcionEnvio";
312  ldgtbColTipoEnvio.HeaderText = "Tipo envío";
313  ldgtbColTipoEnvio.ValueType = typeof(string);
314  ldgtbColTipoEnvio.Visible = true;
315  ldgtbColTipoEnvio._NoParar = true;
316  ldgtbColTipoEnvio.ToolTipText = "Tipo envío";
317  ldgtbColTipoEnvio.Width = 80;
318  ldgtbColTipoEnvio.ReadOnly = true;
319  gridRespuestas.Columns.Add(ldgtbColTipoEnvio);
320  }
321 
323  {
324  ldgtbColEstado.Name = "_DescripcionEstado";
325  ldgtbColEstado.DataPropertyName = "_DescripcionEstado";
326  ldgtbColEstado.HeaderText = "Estado";
327  ldgtbColEstado.ValueType = typeof(string);
328  ldgtbColEstado.Visible = true;
329  ldgtbColEstado._NoParar = true;
330  ldgtbColEstado.ToolTipText = "Estado";
331  ldgtbColEstado.Width = 80;
332  ldgtbColEstado.ReadOnly = true;
333  gridRespuestas.Columns.Add(ldgtbColEstado);
334  }
335 
337  {
338  ldgtbColMasInfo.Name = "_MasInformacion";
339  ldgtbColMasInfo.DataPropertyName = "_MasInformacion";
340  ldgtbColMasInfo.HeaderText = "Información adicional";
341  ldgtbColMasInfo.ValueType = typeof(string);
342  ldgtbColMasInfo._NoParar = true;
343  ldgtbColMasInfo.ToolTipText = "Más información";
344  ldgtbColMasInfo.Width = 170;
345  ldgtbColMasInfo.ReadOnly = true;
346  gridRespuestas.Columns.Add(ldgtbColMasInfo);
347  }
348 
350  {
351  ldgtbColIncidencia.Name = "_DescripcionIncidencia";
352  ldgtbColIncidencia.DataPropertyName = "_DescripcionIncidencia";
353  ldgtbColIncidencia.HeaderText = "Incidencia";
354  ldgtbColIncidencia.ValueType = typeof(string);
355  ldgtbColIncidencia._NoParar = true;
356  ldgtbColIncidencia.ToolTipText = "Incidencia";
357  ldgtbColIncidencia.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
358  ldgtbColIncidencia.ReadOnly = true;
359  gridRespuestas.Columns.Add(ldgtbColIncidencia);
360  }
361 
362  if (!_lEsModeloSII)
363  {
365  {
366  ldgtbRespuesta.Name = "respuesta";
367  ldgtbRespuesta.HeaderText = "Respuesta";
368  ldgtbRespuesta.Image = Resources.icon_eye16;
369  ldgtbRespuesta._NoParar = true;
370  ldgtbRespuesta.ToolTipText = "Respuesta";
371  ldgtbRespuesta._Filtrar = false;
372  ldgtbRespuesta.Width = 38;
373  ldgtbRespuesta.ReadOnly = true;
374  ldgtbRespuesta.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
375 
376  gridRespuestas.Columns.Add(ldgtbRespuesta);
377  }
378  }
379  }
380 
384  public DataTable _GetResultado()
385  {
386  DataColumn loDataCol;
387  DataTable loDt = new DataTable();
388 
389  foreach (DataGridViewColumn loColumn in gridRespuestas.Columns)
390  {
391  if (loColumn.Visible)
392  {
393  string lcColumName = $"col{loColumn.Name.ToLower()}";
394 
395  if (loColumn.ValueType == typeof(DateTime))
396  {
397  loDataCol = new DataColumn(lcColumName, typeof(DateTime));
398  loDataCol.ExtendedProperties.Add("Mascara", "dd/MM/yyyy");
399  }
400  else
401  {
402  loDataCol = new DataColumn(lcColumName, typeof(string));
403  }
404 
405  loDataCol.Caption = loColumn.HeaderText;
406  loDt.Columns.Add(loDataCol);
407  }
408  }
409 
410  foreach (DataGridViewRow loGridViewRow in gridRespuestas.Rows)
411  {
412  DataRow loRow = loDt.NewRow();
413 
414  foreach (DataColumn loCol in loDt.Columns)
415  {
416  loRow[loCol.ColumnName] = loGridViewRow.Cells[loCol.ColumnName.Substring(3).ToLower()].Value;
417  }
418 
419  loDt.Rows.Add(loRow);
420  }
421 
422  return loDt;
423  }
424 
425  #endregion Métodos privados
426  }
427 }
EstadoAEATModelos _Estado
Estado : Pendiente, Generado o Enviado
virtual bool _ReadOnly
Informa sobre si el formulario esta en modo de Solo Lectura
Definition: clsFormul.cs:897
string _Pantalla
Pantalla para la gestión de accesos
virtual void _ShowDialog()
PE92638 Fa el ShowDialog però abans comprova l&#39;accès al formulari
Definition: clsFormul.cs:4664
static System.Drawing.Bitmap icon_eye16
Busca un recurso adaptado de tipo System.Drawing.Bitmap.
string _Titulo
Para poder cambiar el título del formulario
Definition: frmObserv.cs:47
Clase de recurso fuertemente tipado, para buscar cadenas traducidas, etc.
KeyDiccionarioLenCampos
Clave del diccionario LenCampos
Definition: Diccionarios.cs:11
DataTable _GetResultado()
Devuelve un Datatable con los datos del grid
Definition: UserEnvio.cs:384
Clase del objeto grid para Sage50
Definition: grid.cs:31
EstadoAEATModelos
Estado modelos
List< IRespuestaFactura > _Resultado
Resultado de la generación
Definition: IGenerarXML.cs:34
Control de usuario para el resumen de envío
Definition: UserEnvio.cs:26
Presenta un datagridview con botones añadir y borrar tipo Mantegrid de Eurowin
Definition: Mantegrid.cs:30