UserDeclaracion.cs
1 #region Usings
2 using System;
3 using System.Collections.Generic;
4 using System.ComponentModel;
5 using System.Drawing;
6 using System.Data;
7 using System.Linq;
8 using System.Text;
9 using System.Windows.Forms;
11 using sage.ew.functions;
12 using sage.ew.contabilidad;
13 using sage.ew.global;
14 #endregion Usings
15 
16 namespace Sage.ES.S50.Modelos.UserControls
17 {
21  public partial class UserDeclaracion : UserControl
22  {
23  #region Propiedades privadas
24  private bool _lReadOnly = false;
25  private bool _lSustitutiva = false;
26  private bool _lComplementaria = false;
27  private bool _lEjercicio_Partido = false;
28  private IModeloFiscal _oModelo = null;
29  #endregion Propiedades privadas
30 
31  #region Propiedades públicas
32  [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
36  public IModeloFiscal _Modelo
37  {
38  get { return _oModelo; }
39  set {
40  _oModelo = value;
41  RefreshModelo();
42  }
43  }
44 
48  [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
49  public string _Periodo
50  {
51  get { return txtPeriodo._Codigo; }
52  set { txtPeriodo._Codigo = value; }
53  }
54 
58  [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
59  public string _Descripcion
60  {
61  get { return ewtextboxDescripcion.Text; }
62  set { ewtextboxDescripcion.Text = value; }
63  }
64 
68  [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
69  public bool _ReadOnly
70  {
71  get { return _lReadOnly; }
72  set {
73  _lReadOnly = value;
74  ReadOnly();
75  }
76  }
77 
81  [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
82  public bool _Sustitutiva
83  {
84  get { return _lSustitutiva; }
85  set { _lSustitutiva = value; }
86  }
87 
91  [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
92  public bool _Complementaria
93  {
94  get { return _lComplementaria; }
95  set { _lComplementaria = value; }
96  }
97 
101  public bool _DeclaracionComplementaria
102  {
103  get { return _lComplementaria; }
104  set { _lComplementaria = value; }
105  }
106 
110  public bool _DeclaracionSustitutiva
111  {
112  get { return _lComplementaria; }
113  set { _lComplementaria = value; }
114  }
115 
119  public string _NumeroJustificante
120  {
121  get { return ewtextboxJustificante.Text.TrimEnd(); }
122  set { ewtextboxJustificante.Text = value; }
123  }
124 
128  public string _NumeroDeclaracionAnterior
129  {
130  get { return ewtextboxDeclaracionAnterior.Text.TrimEnd(); }
131  set { ewtextboxDeclaracionAnterior.Text = value; }
132  }
133  #endregion Propiedades públicas
134 
135  #region Constructor
136  public UserDeclaracion()
140  {
141  InitializeComponent();
142 
143  if (!DesignMode)
144  {
145  _lEjercicio_Partido = Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_Parti"));
146 
147  SubscripcionEventos();
148  }
149  }
150  #endregion Constructor
151 
152  #region Métodos públicos
153  public void _Refresh()
157  {
158  ModeloFiscal loModeloFiscal = ((ModeloFiscal)_oModelo);
159 
160  if (loModeloFiscal._Complementaria)
161  {
162  ewcheckboxComplementaria.Checked = loModeloFiscal._DeclaracionComplementaria;
163  ewtextboxJustificante.Text = loModeloFiscal._NumeroJustificante;
164  }
165 
166  if (loModeloFiscal._Sustitutiva)
167  {
168  ewcheckboxSustitutiva.Checked = loModeloFiscal._DeclaracionSustitutiva;
169  ewtextboxDeclaracionAnterior.Text = loModeloFiscal._NumeroDeclaracionAnterior;
170  }
171  }
172 
177  public bool _Valid()
178  {
179  string lcMensaje = string.Empty;
180 
181  RefreshBusiness();
182 
183  if (ewcheckboxSustitutiva.Checked)
184  {
185  if (string.IsNullOrWhiteSpace(ewtextboxDeclaracionAnterior.Text))
186  lcMensaje = "Es necesario indicar el número declaración anterior de la autotoliquidación sustitutiva.";
187 
188  if (string.IsNullOrWhiteSpace(lcMensaje) && ewtextboxDeclaracionAnterior.Text.Trim().Length < 13)
189  lcMensaje = "La longitud del número de la declaración anterior tiene de ser de 13 caracteres.";
190 
191  if (!string.IsNullOrWhiteSpace(lcMensaje))
192  {
193  FUNCTIONS._MessageBox(lcMensaje, _oModelo._Titulo, MessageBoxButtons.OK, MessageBoxIcon.Stop);
194  ewtextboxDeclaracionAnterior.Focus();
195  return false;
196  }
197  }
198 
199  if (ewcheckboxComplementaria.Checked)
200  {
201  if (string.IsNullOrWhiteSpace(ewtextboxJustificante.Text))
202  lcMensaje = "Es necesario indicar el número de justificante de la autoliquidación complementaria.";
203 
204  if (string.IsNullOrWhiteSpace(lcMensaje) && ewtextboxJustificante.Text.Trim().Length < 13)
205  lcMensaje = "La longitud del número de justificante de la autotoliquidación complementaria tiene de ser de 13 caracteres.";
206 
207  if (!string.IsNullOrWhiteSpace(lcMensaje))
208  {
209  FUNCTIONS._MessageBox(lcMensaje, _oModelo._Titulo, MessageBoxButtons.OK, MessageBoxIcon.Stop);
210  ewtextboxJustificante.Focus();
211  return false;
212  }
213  }
214 
215  return true;
216  }
217  #endregion Métodos públicos
218 
219  #region Métodos privados
220  private void RefreshModelo()
224  {
225  ModeloFiscal loModelo = ((ModeloFiscal)_oModelo);
226 
227  ewtextboxRuta.ReadOnly = true;
228 
229  if (_oModelo._PeriodosRetenciones) // Control de si ha de presentar los periodos de retenciones en lugar de los periodos de IVA
230  txtPeriodo._PeriodosRetenciones = true;
231 
232  if (loModelo._Anual)
233  {
234  ewlabelPeriodoEjercicio.Text = "Ejercicio:";
235  ewpanelPeriodo.Visible = false;
236  txtPeriodo.Visible = false;
237  ewtablelayoutpanelPeriodoEjercicio.ColumnStyles[0].Width = 0;
238  }
239  else
240  txtEjercicio.Visible = false;
241 
242  if (!_oModelo._Sustitutiva)
243  {
244  ewpanelSustitutiva.Visible = false;
245  ewtablelayoutpanelDeclaracion.RowStyles[2].Height = 0;
246  }
247 
248  if (!_oModelo._Complementaria)
249  {
250  ewpanelComplementaria.Visible = false;
251  ewtablelayoutpanelDeclaracion.RowStyles[3].Height = 0;
252  }
253 
254  RefeshPeriodosVisual();
255 
256  ewtextboxRuta.Text = loModelo._PathModelo();
257 
258  if (loModelo._Anual)
259  txtEjercicio.Text = loModelo._Ejercicio;
260  else
261  txtPeriodo._Codigo = loModelo._NumeroPeriodo; // Asignamos la liquidación en formato string, necesario para el tratar el ejercicio partido
262  }
263 
267  private void RefeshPeriodosVisual()
268  {
269  DataTable ldtPeriodosVisual = ((ModeloFiscal)_oModelo)._PeriodosVisual();
270 
271  if (ldtPeriodosVisual != null)
272  txtPeriodo._Periodos(ldtPeriodosVisual);
273  }
274 
278  private void ReadOnly()
279  {
280  txtPeriodo._ReadOnly = _lReadOnly;
281  txtEjercicio.ReadOnly = true;
282  ewtextboxDescripcion.ReadOnly = _lReadOnly;
283 
284  ewcheckboxSustitutiva.Enabled = !_lReadOnly;
285  ewtextboxDeclaracionAnterior.ReadOnly = _lReadOnly || !ewcheckboxSustitutiva.Checked;
286 
287  ewcheckboxComplementaria.Enabled = !_lReadOnly;
288  ewtextboxJustificante.ReadOnly = _lReadOnly || !ewcheckboxComplementaria.Checked;
289  }
290 
298  private void TipoDeclaracion()
299  {
300  if (ewcheckboxComplementaria.Checked)
301  _oModelo._TipoDeclaracion = eTipoDeclaracion.Complementaria;
302  else if (ewcheckboxSustitutiva.Checked)
303  _oModelo._TipoDeclaracion = eTipoDeclaracion.Sustitutiva;
304  else
305  _oModelo._TipoDeclaracion = eTipoDeclaracion.Normal;
306 
307  _oModelo._NumeroDeclaracionAnterior = ewcheckboxComplementaria.Checked ? ewtextboxDeclaracionAnterior.Text : "";
308  _oModelo._NumeroJustificante = ewcheckboxComplementaria.Checked ? ewtextboxJustificante.Text : "";
309  }
310 
314  private void RefreshBusiness()
315  {
316  TipoDeclaracion();
317 
318  ModeloFiscal loModeloFiscal = ((ModeloFiscal)_oModelo);
319 
320  if (!loModeloFiscal._Anual)
321  loModeloFiscal._NumeroPeriodo = txtPeriodo._Codigo;
322 
323  loModeloFiscal._Descripcion = ewtextboxDescripcion.Text;
324 
325  _oModelo._NumeroDeclaracionAnterior = ewtextboxDeclaracionAnterior.Text;
326  _oModelo._NumeroJustificante = ewtextboxJustificante.Text;
327  }
328 
333  private ModeloFiscal ModeloFiscal()
334  {
335  if (_oModelo != null)
336  return (ModeloFiscal)_oModelo;
337  else
338  return null;
339  }
340 
344  private void SubscripcionEventos()
345  {
346  ewcheckboxComplementaria.CheckedChanged += EwcheckboxComplementaria_CheckedChanged;
347  ewcheckboxSustitutiva.CheckedChanged += EwcheckboxSustitutiva_CheckedChanged;
348 
349  if (_lEjercicio_Partido)
350  txtPeriodo._Codigo_Cambiado += TxtPeriodo__Codigo_Cambiado;
351  }
352 
356  private void CancelarSubscripcionEventos()
357  {
358  ewcheckboxComplementaria.CheckedChanged -= EwcheckboxComplementaria_CheckedChanged;
359  ewcheckboxSustitutiva.CheckedChanged -= EwcheckboxSustitutiva_CheckedChanged;
360 
361  if (_lEjercicio_Partido)
362  txtPeriodo._Codigo_Cambiado -= TxtPeriodo__Codigo_Cambiado;
363  }
364 
370  private void EwcheckboxComplementaria_CheckedChanged(object sender, EventArgs e)
371  {
372  ewtextboxJustificante.ReadOnly = !ewcheckboxComplementaria.Checked;
373 
374  if (ewcheckboxComplementaria.Checked)
375  ewtextboxJustificante.Focus();
376  else
377  if (!string.IsNullOrWhiteSpace(ewtextboxJustificante.Text))
378  ewtextboxJustificante.Text = string.Empty;
379  }
380 
386  private void EwcheckboxSustitutiva_CheckedChanged(object sender, EventArgs e)
387  {
388  ewtextboxDeclaracionAnterior.ReadOnly = !ewcheckboxSustitutiva.Checked;
389 
390  if (ewcheckboxSustitutiva.Checked)
391  ewtextboxDeclaracionAnterior.Focus();
392  else
393  if (!string.IsNullOrWhiteSpace(ewtextboxDeclaracionAnterior.Text))
394  ewtextboxDeclaracionAnterior.Text = string.Empty;
395  }
396 
400  private void TxtPeriodo__Codigo_Cambiado()
401  {
402  ModeloFiscal loModeloFiscal = ModeloFiscal();
403 
404  if (loModeloFiscal != null)
405  {
406  RefreshBusiness();
407 
408  ewtextboxRuta.Text = ModeloFiscal()?._PathModelo();
409  }
410  }
411  #endregion Métodos privados
412  }
413 }
string _NumeroJustificante
Número de justificante
eTipoDeclaracion _TipoDeclaracion
Tipo de la declaración
bool _PeriodosRetenciones
Modelo de retenciones que ha de presentar los periodos de retenciones Tenemos el modelo 130 que aun s...
bool _Valid()
Antes de generar validaremos un par de cosas
string _PathModelo()
Devuelve el math del modelo a generar
string _Ejercicio
Ejercicio del modelo
eTipoDeclaracion
Enumeración para los tipos de declaraciones:
bool _PeriodosRetenciones
Modelo de retenciones que ha de presentar los periodos de retenciones Tenemos el modelo 130 que aun s...
string _NumeroPeriodo
Número de periodo en formato string para poder gestionar el ejercicio partido y la consulta de los pe...
ModeloFiscal
Modelos fiscales soportados
Definition: ModeloFiscal.cs:10
string _NumeroDeclaracionAnterior
Número de declaracion anterior de una declaración sustitutiva
bool _Anual
Modelo de presentación anual
Interfaz de los modelos fiscales
string _Titulo
Título del modelo fiscal
bool _Complementaria
Para poder realizar declaraciones complementarias
Control de usuario de la parte de la declaración de los modelos
bool _Sustitutiva
Para poder realizar delacaraciones sustitutivas