RetencionRepercutida.cs
1 using sage.ew.db;
2 using sage.ew.global;
3 using sage.ew.listados.Clases;
4 using System;
5 using System.Collections.Generic;
6 using System.Data;
7 using System.Linq;
8 using System.Text;
9 
10 namespace sage.ew.contabilidad
11 {
16  {
17 
18 
19  #region Constructor
20  public RetencionRepercutida()
24  {
25  VerImportes0 = true;
26  }
27  #endregion Constructor
28 
29  # region Métodos públicos override de la clase listados
30 
34  public override string _ReportFile
35  {
36  get
37  {
38  return "retencion_repercutida.report";
39  }
40  }
41 
45  public override List<string> _ReportColumns
46  {
47  get
48  {
49  List<string> ldReportColumns = new List<string>();
50 
51  _dicDefEntidades = new Dictionary<string, ew.interficies.IDefEntidad>
52  {
53  { "numfra", new DefEntidad() { _DB = "COMUNES", _Tabla = "PREVIS", _Campo = "FACTURA", _Relacion = "", _Empresa = true } },
54  { "cuenta", new DefEntidad() { _DB = "GESTION", _Tabla = "PROVEED", _Campo = "CODIGO", _Relacion = "", _Empresa = false } },
55  { "codigo_ret", new DefEntidad() { _DB = "GESTION", _Tabla = "TIPO_RET", _Campo = "CODIGO", _Relacion = "", _Empresa = false } }
56  };
57 
58  ldReportColumns.Add("cuenta");
59  ldReportColumns.Add("nombre");
60  ldReportColumns.Add("cif");
61  ldReportColumns.Add("fecha");
62  ldReportColumns.Add("numfra");
63  ldReportColumns.Add("base_ret");
64  ldReportColumns.Add("tpc_ret");
65  ldReportColumns.Add("total_ret");
66  ldReportColumns.Add("codigo_ret");
67  ldReportColumns.Add("nombre_ret");
68  ldReportColumns.Add("g_contri");
69  ldReportColumns.Add("nombre_g_contri");
70 
71  return ldReportColumns;
72  }
73  }
74 
78  public override void _SetColumnCaptions(Dictionary<string, string> tldTranslate = null)
79  {
80  Dictionary<string, string> ldTranslate = new Dictionary<string, string>();
81 
82  if (tldTranslate != null)
83  {
84  ldTranslate = tldTranslate;
85  }
86 
87  ldTranslate.Add("nombre", "Definición cuenta");
88  ldTranslate.Add("numfra", "Factura");
89  ldTranslate.Add("base_ret", "Base retención");
90  ldTranslate.Add("tpc_ret", "% retención");
91  ldTranslate.Add("total_ret", "Total retención");
92 
93  ldTranslate.Add("codigo_ret", "Tipo retención");
94  ldTranslate.Add("nombre_ret", "Nombre retención");
95  ldTranslate.Add("g_contri", "Grupo de contribuyente");
96  ldTranslate.Add("nombre_g_contri", "Nombre grupo de contribuyente");
97 
98 
99  base._SetColumnCaptions(ldTranslate);
100  }
101 
105  public override void _SetColumnMasks()
106  {
107  if (_Resultados == null)
108  return;
109 
110  foreach (DataColumn ldc in _Resultados.Columns)
111  {
112  switch (ldc.ColumnName.ToString().Trim())
113  {
114  case "base_ret":
115  case "total_ret":
116  ldc.ExtendedProperties.Add("Mascara", _Mascara_Importe);
117  break;
118 
119  case "tpc_ret":
120  ldc.ExtendedProperties.Add("Mascara", _Mascara_TPC);
121  break;
122  }
123  }
124 
125  base._SetColumnMasks();
126  }
127 
131  public override Dictionary<string, string> _NavigateButtonsCheck
132  {
133  get
134  {
135  if (llImprimircertificado)
136  {
137  return new Dictionary<string, string>() { { "certificado", "Imprimir certificado" } };
138  }
139  else
140  {
141  return new Dictionary<string, string>();
142  }
143  }
144  }
145 
151  public override void _NavigateChecks(string tcKeyNavigate, DataRow[] trRowList)
152  {
153  botones.Clases.btImprimir btImprimir = new botones.Clases.btImprimir();
154  switch (tcKeyNavigate)
155  {
156  case "certificado":
157 
158  if (trRowList.Length > 0)
159  {
160 
161  string lcNombreEmpresa = EW_GLOBAL._GetVariable("wc_EmpNombre1").ToString().Trim();
162  string lcCIFEmpresa = EW_GLOBAL._GetVariable("wc_EmpCif").ToString().Trim();
163  string lcDireccionEmpresa = EW_GLOBAL._GetVariable("wc_EmpDireccion").ToString().Trim();
164  string lcCodigoPostalEmpresa = EW_GLOBAL._GetVariable("wc_EmpCodPos").ToString().Trim();
165  string lcPoblacionEmpresa = EW_GLOBAL._GetVariable("wc_EmpPoblacion").ToString().Trim();
166  string lcProvinciaEmpresa = EW_GLOBAL._GetVariable("wc_EmpProvincia").ToString().Trim();
167 
168  DataTable yourEmptyDataTable = new DataTable();
169 
170  if (trRowList.Any())
171  {
172  yourEmptyDataTable = trRowList[0].Table.Clone();
173  }
174 
175  foreach (DataRow row in trRowList)
176  {
177  if (!string.IsNullOrWhiteSpace(Convert.ToString(row[0])))
178  {
179  yourEmptyDataTable.ImportRow(row);
180  }
181  }
182 
183  yourEmptyDataTable.Columns.Add(new DataColumn("direccion", typeof(string)));
184  yourEmptyDataTable.Columns.Add(new DataColumn("poblacion", typeof(string)));
185  yourEmptyDataTable.Columns.Add(new DataColumn("provincia", typeof(string)));
186 
187  foreach (DataRow row in yourEmptyDataTable.Rows)
188  {
189  Dictionary<string, object> loProveedor = DB.SQLREGValor("PROVEED", "CODIGO", row["cuenta"].ToString(), "GESTION");
190 
191  row["direccion"] = loProveedor["direccion"];
192  row["poblacion"] = loProveedor["poblacion"];
193  row["provincia"] = loProveedor["provincia"];
194  }
195 
196 
197  btImprimir._Report = "certificado_retenciones.report";
198 
199  btImprimir._DataTable = yourEmptyDataTable;
200 
201  btImprimir._Title = "Certificado de retenciones Ejercicio " + EW_GLOBAL._GetVariable("wc_any").ToString().Trim();
202 
203  btImprimir._AddFiltros("PrimeraCabecera", lcNombreEmpresa + " con CIF. " + lcCIFEmpresa + " y domicilio en " + lcDireccionEmpresa);
204  btImprimir._AddFiltros("SegundaCabecera", lcCodigoPostalEmpresa + " " + lcPoblacionEmpresa + " (" + lcProvinciaEmpresa + ")");
205 
206  btImprimir._AddFiltros("PieDocumento", lcPoblacionEmpresa + ", " + DateTime.Today.ToString(EW_GLOBAL._CustomFormatDate));
207 
208  btImprimir.PerformClick();
209  btImprimir._Report = string.Empty;
210 
211  }
212 
213  break;
214  }
215 
216  base._NavigateChecks(tcKeyNavigate, trRowList);
217  }
218 
224  public override bool _Valid()
225  {
226  _InicializarPropiedadesFiltros();
227 
228  if (llImprimircertificado && lIncluirnperceptores)
229  {
230  _Error_Message = "La opción 'Incluir nº perceptores' no es compatible con la opción 'Imprimir certificado'.";
231  return false;
232  }
233 
234  if (llImprimircertificado && !lAgruparporcuenta)
235  {
236  _Error_Message = "Para imprimir el certificado, debe seleccionar la opción de 'Agrupar por cuenta'.";
237  return false;
238  }
239 
240  return base._Valid();
241  }
242 
243 
248  public override DataTable _DataTable()
249  {
250  DataTable ldtResult = new DataTable();
251  DataTable ldtModiCuotas = new DataTable(); // Datatable para facturas negativas y rectificativas (utilizaremos en cuadro resumen de IVA)
252 
253  bool llOk = false;
254 
255  _InicializarPropiedadesFiltros();
256 
257  llOk = ConsultarRetencion(ref ldtResult); // Consultamos las registros de retencion
258 
259  if (llOk)
260  {
261  if (lAgruparporcuenta)
262  {
263  _AgruparCuenta(ref ldtResult);
264  }
265 
266  if (!llImprimircertificado)
267  {
268  _TotalizarRetencion(ref ldtResult);
269  }
270  }
271 
272  if (_lNormal && ldtResult.Columns.Contains("empresa"))
273  {
274  ldtResult.Columns.Remove("empresa");
275  }
276 
277  return ldtResult;
278  }
279 
285  protected internal bool ConsultarRetencion(ref DataTable tdtResult)
286  {
287  //Invoco la implementación con las funciones por defecto
288  return ConsultarRetencion_Impl(ref tdtResult, GetDefaultEjercicios, GetDefaultFiltroWhereRetencion);
289  }
290 
298  private bool ConsultarRetencion_Impl(ref DataTable tdtResult, Func<string[]> selectorEjercicios, Func<string> whereClauseGenerator)
299  {
300  string lcSql = string.Empty;
301  bool llOk;
302 
303  string lcWhere = whereClauseGenerator.Invoke();
304  //156116: Es el whereClauseGenerator el que rellena la variable ejercicios que devuelve este selector
305  string[] laEjercicios = selectorEjercicios.Invoke();
306 
307 
308  lcSql = "SELECT retreper.empresa, retreper.cuenta, cuentas.nombre, cuentas.cif, retreper.fecha, retreper.numfra, " +
309  " retreper.codigo_ret, tipo_ret.nombre as nombre_ret, " +
310  " COALESCE(g_contri.codigo,'') as g_contri, COALESCE(g_contri.nombre,'') as nombre_g_contri, " +
311  " retreper.base as base_ret, retreper.tipo_ret as tpc_ret, retreper.retencio as total_ret " +
312  _CamposExtra() + Environment.NewLine +
313  " FROM ([multiples_ejercicios].dbo.retreper " + Environment.NewLine +
314  " LEFT JOIN [multiples_ejercicios].dbo.cuentas ON retreper.cuenta = cuentas.codigo) " + Environment.NewLine +
315  " INNER JOIN [multiples_ejercicios].dbo.asientos ON retreper.asi = asientos.asi " + Environment.NewLine +
316  " INNER JOIN [multiples_ejercicios].dbo.tipo_ret ON retreper.codigo_ret = tipo_ret.codigo " + Environment.NewLine +
317  " LEFT JOIN " + DB.SQLDatabase("COMUNES", "G_CONTRI") + " ON tipo_ret.g_contri = g_contri.codigo " + Environment.NewLine +
318  _JoinsExtra() + Environment.NewLine +
319  lcWhere + Environment.NewLine +
320  " ORDER BY retreper.numfra, retreper.fecha ";
321 
322 
323  llOk = DB.SQLExecEjer(lcSql, ref tdtResult, laEjercicios);
324 
325  return llOk;
326  }
327 
328  private string[] GetDefaultEjercicios()
329  {
330  return _cEjercicios;
331  }
332 
333  private string GetDefaultFiltroWhereRetencion()
334  {
335  return _WhereFiltrosRetencion("retreper", "tipo_ret");
336  }
337 
342  protected internal virtual string _CamposExtra()
343  {
344  return "";
345  }
346 
351  protected internal virtual string _JoinsExtra()
352  {
353  return "";
354  }
355 
356  #endregion
357 
358  #region Métodos protected override de la clase IVA
359 
364  protected override void _InicializarPropiedadesFiltros()
365  {
366  base._InicializarPropiedadesFiltros();
367 
368  llImprimircertificado = _Opcion_Logico("lImprimircertificad");
369 
370  // En compras siempre tenemos el filtro por fecha de asiento
371  _cCampoFecha = "fecha";
372  }
373 
379  protected override string _CampoIVA()
380  {
381  return "reper";
382  }
383 
388  protected override string GetAliasTablaIva()
389  {
390  return "retreper";
391  }
392 
393 
394 
395  # endregion Métodos protected override de la clase IVA
396  }
397 }
override string GetAliasTablaIva()
Obtener el alias de la tabla
override void _InicializarPropiedadesFiltros()
Inicializamos las propiedades de los filtros de fecha, ejercicio partido ...
override void _NavigateChecks(string tcKeyNavigate, DataRow[] trRowList)
Bug 154494: Al clicar el botón de procesar en el listado guardar los cambios en casillas manuales ...
override void _SetColumnCaptions(Dictionary< string, string > tldTranslate=null)
Overrides _SetColumnCaptions
Entidad de relación (Columnas adicionales en listados)
Definition: DefEntidad.cs:14
override void _SetColumnMasks()
Overrides _SetColumnMasks
override string _CampoIVA()
Devuelve el campo "reper" o "sopor" para poder gestionar la fecha Se sobreescribirá en cada libro par...
override DataTable _DataTable()
Método de obtención de los datos específico para el listado
override bool _Valid()
Método que se utiliza para validar que los filtros e opciones son correctas Este método actualizará l...
Clase de negocio para Listado de retención repercutida
Listado base para los listados de retencion Repercutida, Soportada ...