ExtensionDocAlbVenta.cs
3 using sage.ew.docsven;
4 using sage.ew.docventatpv;
5 using sage.ew.ewbase;
6 using sage.ew.ewbase.Clases;
7 using sage.ew.global;
9 using sage.ew.interficies;
10 using System.Collections.Generic;
11 using System.Data;
12 using System.Linq;
13 
14 namespace sage.addons.offline.Negocio.Documentos
15 {
20  {
21  #region Properties
22 
23  private bool bSoloLectura = false;
27  public bool _bSoloLectura
28  {
29  get { return bSoloLectura; }
30  set { bSoloLectura = value; }
31  }
32 
33  private readonly string cEjercicio = string.Empty;
34  private readonly string tablaExtendida = "CTRL_ALBV";
35  private int idTabrel = 0;
36 
37  private List<string> lisEntregas = new List<string>();
38  private List<LineaGiro> lisGiros = new List<LineaGiro>();
39  private List<int> lisRefalbcli = new List<int>();
40  private List<int> lisMovimientosCaja = new List<int>();
41  private string _oldDeleteNetIDMovCaja = string.Empty;
42  private IExtensionDocAlbVentaDA _extensionDocAlbVentaDA;
46  protected internal bool _ControlBorrados = false;
47 
51  protected internal bool _ControlBorradosTablaControl = false;
52 
56  protected internal int _TipoBorrado = 0;
57 
61  protected internal string _DeleteNetID = string.Empty;
62 
67 
68  private IExtensionDocLineaDA _extensionDocVentaLineaDA;
69 
73  IDocumentLinea _LineaDocumento = null;
74  private List<string> lisPropiedades = new List<string>();
75 
76 
77  #endregion Properties
78 
79 
80  #region Constructors
81 
85  public ExtensionDocAlbVenta(IExtensionDocAlbVentaDA extensionDocAlbVentaDA)
86  {
87  cEjercicio = EW_GLOBAL._GetVariable("wc_any").ToString();
88 
89  _ExtensionDocsDocumentoLineaType = typeof(ExtensionDocAlbVentaLinea);
90  _extensionDocAlbVentaDA = extensionDocAlbVentaDA;
91  _extensionDocVentaLineaDA = DependencyInjector.Instance.Retrieve<IExtensionDocLineaDA>();
92  }
93 
94  #endregion Constructors
95 
96 
97  #region Public Methods
98 
106  public override bool _Load(string tcEmpresa, string tcNumero, string tcLetra = "")
107  {
108  bool llOk = base._Load(tcEmpresa, tcNumero, tcLetra);
109 
110  if (llOk)
111  {
112  // De momento no realizamos ninguna acción en modo Before
113  if (_eBeforeAfter == TipoExecute.Before)
114  return true;
115 
116  if (_offlineConfig.RevisarTablaControl(tablaExtendida, tcEmpresa, tcNumero, ref idTabrel, "Letra", tcLetra))
117  {
118  bSoloLectura = _offlineConfig.CondicionPrioridadDocumentos(new List<string> { _offlineConfig.SQLString(idTabrel) });
119  }
120 
121  _ControlBorradosTablaControl = false;
122 
123  lisEntregas = new List<string>();
124  lisGiros = new List<LineaGiro>();
125  lisRefalbcli = new List<int>();
126  lisMovimientosCaja = new List<int>();
127 
128  if (_offlineConfig.CondicionControlDocumentos(new List<string> {_offlineConfig.SQLString(idTabrel)}))
129  {
130  _ControlBorrados = _offlineConfig.RevisarTablaControl(tablaExtendida, tcEmpresa, tcNumero, "Letra", tcLetra);
131  _ControlBorradosTablaControl = true;
132 
133  _DeleteNetID = _offlineConfig.GenerarRandomId();
134 
135  List<IEntregasDoc> lista = ((this as ExtensionDocAlbVenta)._Documento as ewDocVentaTPV)._Entregas.ToList();
136 
137  foreach (EntregaAlbaran item in lista)
138  {
139  lisEntregas.Add(item._Asi);
140  }
141 
142  lisGiros = ((this as ExtensionDocAlbVenta)._Documento as ewDocVentaTPV)._GirosPrc.ToList();
143 
144  List<ILinTRel> lista2 = ((this as ExtensionDocAlbVenta)._Documento as ewDocVentaTPV)._ReferenciasCliente.ToList();
145 
146  foreach (Docsven.ReferenciasCliente.ReferenciaCliente item in lista2)
147  {
148  lisRefalbcli.Add(item._Linia);
149  }
150 
151  //Movimientos de caja
152  lisMovimientosCaja = MovimientosDeCaja().ToList();
153  }
154 
155  }
156 
157  return llOk;
158  }
159 
166  public override bool _Abandonar_Documento(bool tbNoValidarDocumento = false, bool tlSalirDocumento = false)
167  {
168  bSoloLectura = false;
169 
170  // Optimización del recálculo del riesgo
171  if (_eBeforeAfter == TipoExecute.After)
172  {
173  _offlineConfig._RecalcularRiesgoClienteOffline(((this as _ExtensionDocVentaDocumento)._Documento as ewDocVentaTPV)._Empresa, ((this as _ExtensionDocVentaDocumento)._Documento as ewDocVentaTPV)._Cabecera._Cliente);
174  }
175 
176  return base._Abandonar_Documento(tbNoValidarDocumento, tlSalirDocumento);
177  }
178 
183  public override bool _Delete()
184  {
185  _TipoBorrado = 2;
186 
187  bool llOk = base._Delete();
188 
189  if (_eBeforeAfter == TipoExecute.Before)
190  {
191  return true;
192  }
193 
194  if (_ControlBorrados)
195  {
196  string where = " Where empresa = " + _extensionDocAlbVentaDA.SQLString(((this as _ExtensionDocVentaDocumento)._Documento as ewDocVentaTPV)._Empresa) +
197  " and numero = " + _extensionDocAlbVentaDA.SQLString(((this as _ExtensionDocVentaDocumento)._Documento as ewDocVentaTPV)._Numero, 10, tlIzquierda: true) +
198  " and letra = " + _extensionDocAlbVentaDA.SQLString(((this as _ExtensionDocVentaDocumento)._Documento as ewDocVentaTPV)._Letra, 2);
199 
200  if (OFFLINE._VieneDeFacturaDirecta)
201  {
202  _offlineConfig.InsertDeleteNet(_DeleteNetID, "FACTURAS", "GESTION", "C_ALBVEN", _TipoBorrado, cEjercicio, where);
203 
204  if (EW_GLOBAL._ModuloActivo("TPV"))
205  {
206  _offlineConfig.InsertDeleteNet(_DeleteNetID, "TPVSINARQUEO", "GESTION", "C_ALBVEN", _TipoBorrado, cEjercicio, where);
207  _offlineConfig.InsertDeleteNet(_DeleteNetID, "TPVCONARQUEO", "GESTION", "C_ALBVEN", _TipoBorrado, cEjercicio, where);
208  }
209  }
210  else
211  {
212  // En caso de no estar facturado
213  _offlineConfig.InsertDeleteNet(_DeleteNetID, "C_ALBVEN", "GESTION", "C_ALBVEN", _TipoBorrado, cEjercicio, where);
214  }
215  }
216 
217  _TipoBorrado = 0;
218 
219  if (_ControlBorradosTablaControl)
220  {
221  List<OfflineConfig.CamposFiltro> listaCamposFiltros = new List<OfflineConfig.CamposFiltro>
222  {
223  new OfflineConfig.CamposFiltro(){campo = "Empresa", valor = ((this as _ExtensionDocVentaDocumento)._Documento as ewDocVentaTPV)._Empresa},
224  new OfflineConfig.CamposFiltro(){campo = "Ejercicio", valor = cEjercicio},
225  new OfflineConfig.CamposFiltro(){campo = "Numero", valor = ((this as _ExtensionDocVentaDocumento)._Documento as ewDocVentaTPV)._Numero},
226  new OfflineConfig.CamposFiltro(){campo = "Letra", valor = ((this as _ExtensionDocVentaDocumento)._Documento as ewDocVentaTPV)._Letra},
227  };
228  _offlineConfig.DeleteTablaControlManten(tablaExtendida, listaCamposFiltros);
229  }
230 
231  OFFLINE._VieneDeFacturaDirecta = false;
232  _offlineConfig._RecalcularRiesgoClienteOffline(((this as _ExtensionDocVentaDocumento)._Documento as ewDocVentaTPV)._Empresa, ((this as _ExtensionDocVentaDocumento)._Documento as ewDocVentaTPV)._Cabecera._Cliente);
233 
234  return llOk;
235  }
236 
241  public override bool _Delete_Linea(IDocumentLinea toLineaDocumento)
242  {
243  bool llOk = base._Delete_Linea(toLineaDocumento);
244 
245  //Tanto para Before como After
246  _LineaDocumento = toLineaDocumento;
247  if (_ControlBorrados && _LineaDocumento != null)
248  {
249  if ((_LineaDocumento as ewDocVentaLinTPV)._UsaLotes)
250  {
251  GestionarLotes();
252  }
253 
254  if ((_LineaDocumento as ewDocVentaLinTPV)._UsaSeries)
255  {
256  GestionarSeries();
257  }
258  }
259 
260  if (_eBeforeAfter == TipoExecute.Before)
261  {
262  return true;
263  }
264 
265  if (_ControlBorrados)
266  {
267  string where = " Where empresa = " + _extensionDocAlbVentaDA.SQLString(toLineaDocumento._Empresa) +
268  " and numero = " + _extensionDocAlbVentaDA.SQLString(toLineaDocumento._Numero, 10, tlIzquierda: true) +
269  " and letra = " + _extensionDocAlbVentaDA.SQLString(toLineaDocumento._Letra, 2) +
270  " and linia = " + _extensionDocAlbVentaDA.SQLString(toLineaDocumento._Linea);
271 
272  if (OFFLINE._VieneDeFacturaDirecta)
273  {
274  _offlineConfig.InsertDeleteNet(_DeleteNetID, "FACTURAS", "GESTION", "D_ALBVEN", _TipoBorrado, cEjercicio, where);
275 
276  if (EW_GLOBAL._ModuloActivo("TPV"))
277  {
278  _offlineConfig.InsertDeleteNet(_DeleteNetID, "TPVSINARQUEO", "GESTION", "D_ALBVEN", _TipoBorrado, cEjercicio, where);
279  _offlineConfig.InsertDeleteNet(_DeleteNetID, "TPVCONARQUEO", "GESTION", "D_ALBVEN", _TipoBorrado, cEjercicio, where);
280  }
281  }
282  else
283  {
284  // En caso de no estar facturado
285  _offlineConfig.InsertDeleteNet(_DeleteNetID, "C_ALBVEN", "GESTION", "D_ALBVEN", _TipoBorrado, cEjercicio, where);
286  }
287  }
288 
289  return llOk;
290  }
291 
297  public override bool _Save(bool tbForzarGuardarLineas = false)
298  {
299  bool llOk = base._Save(tbForzarGuardarLineas);
300 
301  if (_eBeforeAfter == TipoExecute.Before)
302  return true;
303 
304  if (_ControlBorrados)
305  {
306  // Entregas a cuenta
307  GestionarEntregas();
308 
309  // Giros
310  GestionarGiros();
311 
312  // Referencias albaran cliente
313  GestionarRefAlbCli();
314 
315  //Movimientos de caja
316  GestionarMovimientosCaja();
317  }
318 
319  return llOk;
320  }
321 
326  public override bool _Validar_Solo_Lectura()
327  {
328  if (_eBeforeAfter == TipoExecute.After)
329  {
330  return _bSoloLectura;
331  }
332 
333  return false;
334  }
335 
336  #endregion Public Methods
337 
338 
339  #region Private Methods
340 
341  private void GestionarLotes()
342  {
343  DataTable ldtDades;
344  if (_eBeforeAfter == TipoExecute.Before)
345  {
346  lisPropiedades.Clear();
347 
348  //Executo la consulta
349  ldtDades = _extensionDocVentaLineaDA.GetLotes(cEjercicio,
350  _LineaDocumento._Empresa,
351  _LineaDocumento._Numero,
352  _LineaDocumento._Letra,
353  _LineaDocumento._LineaReal,
354  Documento.AlbaranVenta);
355 
356  foreach (DataRow item in ldtDades.Rows)
357  {
358  lisPropiedades.Add(item["lote"].ToString());
359  }
360  }
361  else
362  {
363  if (lisPropiedades.Count > 0)
364  {
365  string claveTab = "C_ALBVEN";
366  int newORDEN = _offlineConfig.GetNewOrdenDeleteNet(claveTab); //repDeleteNet.NewId(del, "orden", 1, $@"clavetab = {_extensionDocVentaLineaDA.SQLString(claveTab)}");
367  string where = string.Empty;
368 
369  // buscar los guid_id inexistentes
370  foreach (string item in lisPropiedades)
371  {
372 
373  where = " Where empresa = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Empresa) +
374  " and numero = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Numero, 10, tlIzquierda: true) +
375  " and letra = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Letra, 2) +
376  " and linia = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Linea) +
377  " and periodo = " + _extensionDocVentaLineaDA.SQLString(cEjercicio) +
378  " and lote = " + _extensionDocVentaLineaDA.SQLString(item);
379 
380  _offlineConfig.InsertDeleteNet(_DeleteNetID, claveTab, "LOTES", "LTALBVE", _TipoBorrado, newORDEN, cEjercicio, where);
381  newORDEN++;
382  }
383  }
384  }
385  }
386 
387  private void GestionarSeries()
388  {
389  DataTable ldtDades;
390  if (_eBeforeAfter == TipoExecute.Before)
391  {
392  //En el DELETE BEFORE => Aún no se han borrado realmente => hay que guardarlas
393  lisPropiedades.Clear();
394 
395  //Executo la consulta
396  ldtDades = _extensionDocVentaLineaDA.GetSeries(cEjercicio,
397  _LineaDocumento._Empresa,
398  _LineaDocumento._Numero,
399  _LineaDocumento._Letra,
400  _LineaDocumento._LineaReal,
401  Documento.AlbaranVenta);
402 
403  foreach (DataRow item in ldtDades.Rows)
404  {
405  lisPropiedades.Add(item["serie"].ToString());
406  }
407  }
408  else
409  {
410  //En el DELETE AFTER => Ya se han borrado realmente => hay que marcar borrarlas
411  if (lisPropiedades.Count > 0)
412  {
413  string claveTab = "C_ALBVEN";
414  int newORDEN = _offlineConfig.GetNewOrdenDeleteNet(claveTab); //repDeleteNet.NewId(del, "orden", 1, $@"clavetab = {_extensionDocVentaLineaDA.SQLString(claveTab)}");
415  string where = string.Empty;
416 
417  // buscar los guid_id inexistentes
418  foreach (string item in lisPropiedades)
419  {
420  where = " Where empresa = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Empresa) +
421  " and albaran = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Numero, 10, tlIzquierda: true) +
422  " and letra = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Letra, 2) +
423  " and linea = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Linea) +
424  " and serie = " + _extensionDocVentaLineaDA.SQLString(item);
425 
426  _offlineConfig.InsertDeleteNet(_DeleteNetID, claveTab, "GESTION", "VENSER", _TipoBorrado, newORDEN, cEjercicio, where);
427  newORDEN++;
428  }
429 
430  }
431  }
432 
433 
434  }
435 
436  private IList<int> MovimientosDeCaja()
437  {
438  IList<int> listaMovimientos;
439 
440  if (EW_GLOBAL._ModuloActivo("TPV"))
441  {
442  listaMovimientos = _extensionDocAlbVentaDA.GetMovimientosDeCaja(cEjercicio, _Documento._Empresa, _Documento._Numero, _Documento._Letra);
443  }
444  else
445  {
446  listaMovimientos = new List<int>();
447  }
448 
449  return listaMovimientos;
450  }
451 
452  private void GestionarMovimientosCaja()
453  {
454  if (EW_GLOBAL._ModuloActivo("TPV"))
455  {
456  if (!string.IsNullOrWhiteSpace(_oldDeleteNetIDMovCaja) && _oldDeleteNetIDMovCaja.Equals(_DeleteNetID)) //Si el id esta lleno y es el mismo de antes... ignoro
457  return;
458 
459  var lisMovimientosCajaAhora = MovimientosDeCaja();
460  var lisMovimientosQueNoExisten = lisMovimientosCaja.Except(lisMovimientosCajaAhora);
461 
462  if (lisMovimientosQueNoExisten.Any()) //Hay movimientos inexistentes...
463  //...y no he realizado antes la operación o bien lo he hecho para otro ID
464  {
465  //Task 182749
466  var listaClavesTabTPV = new List<string>() { "TPVSINARQUEO", "TPVCONARQUEO" };
467  string where = string.Empty;
468 
469  foreach (var lineaMov in lisMovimientosQueNoExisten)
470  {
471  foreach (var claveTab in listaClavesTabTPV)
472  {
473  string lcEmpresa = _Documento._Empresa;
474  string lcNumero = _Documento._Numero;
475  string lcLetra = _Documento._Letra;
476 
477  where = " Where empresa = " + _extensionDocAlbVentaDA.SQLString(lcEmpresa) +
478  " and numero = " + _extensionDocAlbVentaDA.SQLString(lcNumero, 10, tlIzquierda: true) +
479  " and letra = " + _extensionDocAlbVentaDA.SQLString(lcLetra, 2) +
480  " and ejercicio = " + _extensionDocAlbVentaDA.SQLString(cEjercicio) +
481  " and linea = " + _extensionDocAlbVentaDA.SQLString(lineaMov);
482 
483  _offlineConfig.InsertDeleteNet(_DeleteNetID, claveTab, "TPV", "TIKETS", _TipoBorrado, cEjercicio, where);
484  }
485  }
486  _oldDeleteNetIDMovCaja = _DeleteNetID; //Me guardo el id de la operación que ha generado los inserts
487  }
488  }
489  }
490 
491  private void GestionarEntregas()
492  {
493  List<IEntregasDoc> lista = ((this as ExtensionDocAlbVenta)._Documento as ewDocVentaTPV)._Entregas.ToList();
494  List<string> newlisEntregas = new List<string>();
495 
496  foreach (EntregaAlbaran item in lista)
497  {
498  newlisEntregas.Add(item._Asi);
499  }
500 
501  string claveTab = "C_ALBVEN";
502  int newORDEN = _offlineConfig.GetNewOrdenDeleteNet(claveTab);
503  string where = string.Empty;
504 
505  foreach (string item in lisEntregas)
506  {
507  if (!newlisEntregas.Contains(item))
508  {
509  string lcEmpresa = _Documento._Empresa;
510 
511  where = " Where empresa = " + _extensionDocAlbVentaDA.SQLString(lcEmpresa) +
512  " and asi = " + _extensionDocAlbVentaDA.SQLString(item);
513 
514  _offlineConfig.InsertDeleteNet(_DeleteNetID, claveTab, "GESTION", "ENTREGAS", _TipoBorrado, newORDEN, cEjercicio, where);
515  newORDEN++;
516  }
517  }
518 
519  lisEntregas = newlisEntregas;
520  }
521 
522  private void GestionarGiros()
523  {
524  List<LineaGiro> newlisGiros = ((this as ExtensionDocAlbVenta)._Documento as ewDocVentaTPV)._GirosPrc.ToList();
525 
526  string claveTab = "C_ALBVEN";
527  int newORDEN = _offlineConfig.GetNewOrdenDeleteNet(claveTab); //repDeleteNet.NewId(del, "orden", 1, $@"clavetab = {_extensionDocAlbVentaDA.SQLString(claveTab)}");
528  string where = string.Empty;
529 
530  foreach (LineaGiro item in lisGiros)
531  {
532  if (!newlisGiros.Contains(item))
533  {
534  string lcEmpresa = _Documento._Empresa;
535  string lcNumero = _Documento._Numero;
536  string lcLetra = _Documento._Letra;
537 
538  where = " Where empresa = " + _extensionDocAlbVentaDA.SQLString(lcEmpresa) +
539  " and numero = " + _extensionDocAlbVentaDA.SQLString(lcNumero, 10, tlIzquierda: true) +
540  " and letra = " + _extensionDocAlbVentaDA.SQLString(lcLetra, 2) +
541  " and giro = " + _extensionDocAlbVentaDA.SQLString(item._Giro);
542 
543  _offlineConfig.InsertDeleteNet(_DeleteNetID, claveTab, "GESTION", "ALB_FPAG", _TipoBorrado, newORDEN, cEjercicio, where);
544  newORDEN++;
545  }
546  }
547 
548  lisGiros = newlisGiros;
549  }
550 
551  private void GestionarRefAlbCli()
552  {
553  List<ILinTRel> lista2 = ((this as ExtensionDocAlbVenta)._Documento as ewDocVentaTPV)._ReferenciasCliente.ToList();
554  List<int> newlisRefalbcli = new List<int>();
555 
556  foreach (Docsven.ReferenciasCliente.ReferenciaCliente item in lista2)
557  {
558  newlisRefalbcli.Add(item._Linia);
559  }
560 
561  string claveTab = "C_ALBVEN";
562  int newORDEN = _offlineConfig.GetNewOrdenDeleteNet(claveTab); //repDeleteNet.NewId(del, "orden", 1, $@"clavetab = {_extensionDocAlbVentaDA.SQLString(claveTab)}");
563  string where = string.Empty;
564 
565  foreach (int item in lisRefalbcli)
566  {
567  if (!newlisRefalbcli.Contains(item))
568  {
569  string lcEmpresa = _Documento._Empresa;
570  string lcNumero = _Documento._Numero;
571  string lcLetra = _Documento._Letra;
572 
573  where = " Where empresa = " + _extensionDocAlbVentaDA.SQLString(lcEmpresa) +
574  " and numero = " + _extensionDocAlbVentaDA.SQLString(lcNumero, 10, tlIzquierda: true) +
575  " and letra = " + _extensionDocAlbVentaDA.SQLString(lcLetra, 2) +
576  " and linia = " + _extensionDocAlbVentaDA.SQLString(item);
577 
578  _offlineConfig.InsertDeleteNet(_DeleteNetID, claveTab, "GESTION", "REFALBCLI", _TipoBorrado, newORDEN, cEjercicio, where);
579  newORDEN++;
580  }
581  }
582 
583  lisRefalbcli = newlisRefalbcli;
584  }
585 
586  #endregion Private Methods
587  }
588 
593  {
594  #region Properties
595 
596  private readonly string cEjercicio = string.Empty;
597  private List<string> lisPropiedades = new List<string>();
598  private OfflineConfig _offlineConfig = DependencyInjector.Instance.Retrieve<OfflineConfig>();
599  private IExtensionDocLineaDA _extensionDocVentaLineaDA;
600  #endregion Properties
601 
602 
603  #region Constructors
604 
609  {
610  cEjercicio = EW_GLOBAL._GetVariable("wc_any").ToString();
611 
612  _extensionDocVentaLineaDA = DependencyInjector.Instance.Retrieve<IExtensionDocLineaDA>();
613  }
614 
615  #endregion Constructors
616 
617 
618  #region Public Methods
619 
624  public override bool _Save()
625  {
626  bool llOk = base._Save();
627 
628  if (((ExtensionDocAlbVenta)_Parent)._ControlBorrados)
629  {
630  if ((_LineaDocumento as ewDocVentaLinTPV)._UsaLotes)
631  {
632  GestionarLotes();
633  }
634 
635  if ((_LineaDocumento as ewDocVentaLinTPV)._UsaSeries)
636  {
637  GestionarSeries();
638  }
639  }
640 
641  return llOk;
642  }
643 
644  //public override bool _Delete(bool tlCabecera = true, bool tlUltimo = false, bool tlForzar = false)
645  //{
646  // bool llOk = base._Delete(tlCabecera, tlUltimo, tlForzar);
647 
648  // if (((ExtensionDocAlbVenta)_Parent)._ControlBorrados)
649  // {
650  // if ((_LineaDocumento as ewDocVentaLinTPV)._UsaLotes)
651  // {
652  // //before graba y after borra. Nada de diferencias
653  // GestionarBorradoLotes();
654  // }
655 
656  // if ((_LineaDocumento as ewDocVentaLinTPV)._UsaSeries)
657  // {
658  // //before graba y after borra. Nada de diferencias
659  // GestionarBorradoSeries();
660  // }
661  // }
662 
663  // return llOk;
664  //}
665 
666  #endregion Public Methods
667 
668 
669  #region Private Methods
670 
671  private void GestionarLotes()
672  {
673  DataTable ldtDades;
674  if (_eBeforeAfter == TipoExecute.Before)
675  {
676  if (lisPropiedades.Count > 0)
677  {
678  //Executo la consulta
679  ldtDades = _extensionDocVentaLineaDA.GetLotes(cEjercicio,
680  _LineaDocumento._Empresa,
681  _LineaDocumento._Numero,
682  _LineaDocumento._Letra,
683  _LineaDocumento._LineaReal,
684  Documento.AlbaranVenta);
685 
686 
687  string claveTab = "C_ALBVEN";
688  int newORDEN = _offlineConfig.GetNewOrdenDeleteNet(claveTab); //repDeleteNet.NewId(del, "orden", 1, $@"clavetab = {_extensionDocVentaLineaDA.SQLString(claveTab)}");
689  string where = string.Empty;
690 
691  // buscar los guid_id inexistentes
692  foreach (string item in lisPropiedades)
693  {
694  DataRow[] dataRows = ldtDades.Select("LOTE = '" + item + "'");
695 
696  if (dataRows.Length == 0)
697  {
698  where = " Where empresa = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Empresa) +
699  " and numero = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Numero, 10, tlIzquierda: true) +
700  " and letra = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Letra, 2) +
701  " and linia = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Linea) +
702  " and periodo = " + _extensionDocVentaLineaDA.SQLString(cEjercicio) +
703  " and lote = " + _extensionDocVentaLineaDA.SQLString(item);
704 
705  _offlineConfig.InsertDeleteNet(((ExtensionDocAlbVenta)_Parent)._DeleteNetID, claveTab, "LOTES", "LTALBVE", ((ExtensionDocAlbVenta)_Parent)._TipoBorrado, newORDEN, cEjercicio, where);
706  newORDEN++;
707  }
708  }
709  }
710  }
711  else
712  {
713  lisPropiedades.Clear();
714 
715  //Executo la consulta
716  ldtDades = _extensionDocVentaLineaDA.GetLotes(cEjercicio,
717  _LineaDocumento._Empresa,
718  _LineaDocumento._Numero,
719  _LineaDocumento._Letra,
720  _LineaDocumento._LineaReal,
721  Documento.AlbaranVenta);
722 
723  foreach (DataRow item in ldtDades.Rows)
724  {
725  lisPropiedades.Add(item["lote"].ToString());
726  }
727  }
728  }
729 
730  private void GestionarSeries()
731  {
732  DataTable ldtDades;
733  if (_eBeforeAfter == TipoExecute.Before)
734  {
735  if (lisPropiedades.Count > 0)
736  {
737  //Executo la consulta
738  ldtDades = _extensionDocVentaLineaDA.GetSeries(cEjercicio,
739  _LineaDocumento._Empresa,
740  _LineaDocumento._Numero,
741  _LineaDocumento._Letra,
742  _LineaDocumento._LineaReal,
743  Documento.AlbaranVenta);
744 
745  string claveTab = "C_ALBVEN";
746  int newORDEN = _offlineConfig.GetNewOrdenDeleteNet(claveTab); //repDeleteNet.NewId(del, "orden", 1, $@"clavetab = {_extensionDocVentaLineaDA.SQLString(claveTab)}");
747  string where = string.Empty;
748 
749  // buscar los guid_id inexistentes
750  foreach (string item in lisPropiedades)
751  {
752  DataRow[] dataRows = ldtDades.Select("SERIE = '" + item + "'");
753 
754  if (dataRows.Length == 0)
755  {
756  where = " Where empresa = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Empresa) +
757  " and albaran = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Numero, 10, tlIzquierda: true) +
758  " and letra = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Letra, 2) +
759  " and linea = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Linea) +
760  " and serie = " + _extensionDocVentaLineaDA.SQLString(item);
761 
762  _offlineConfig.InsertDeleteNet(((ExtensionDocAlbVenta)_Parent)._DeleteNetID, claveTab, "GESTION", "VENSER", ((ExtensionDocAlbVenta)_Parent)._TipoBorrado, newORDEN, cEjercicio, where);
763  newORDEN++;
764  }
765  }
766 
767  }
768  }
769  else
770  {
771  lisPropiedades.Clear();
772 
773  //Executo la consulta
774  ldtDades = _extensionDocVentaLineaDA.GetSeries(cEjercicio,
775  _LineaDocumento._Empresa,
776  _LineaDocumento._Numero,
777  _LineaDocumento._Letra,
778  _LineaDocumento._LineaReal,
779  Documento.AlbaranVenta);
780 
781  foreach (DataRow item in ldtDades.Rows)
782  {
783  lisPropiedades.Add(item["serie"].ToString());
784  }
785  }
786  }
787 
788 
789  private void GestionarBorradoLotes()
790  {
791  DataTable ldtDades;
792  if (_eBeforeAfter == TipoExecute.Before)
793  {
794  lisPropiedades.Clear();
795 
796  //Executo la consulta
797  ldtDades = _extensionDocVentaLineaDA.GetLotes(cEjercicio,
798  _LineaDocumento._Empresa,
799  _LineaDocumento._Numero,
800  _LineaDocumento._Letra,
801  _LineaDocumento._LineaReal,
802  Documento.AlbaranVenta);
803 
804  foreach (DataRow item in ldtDades.Rows)
805  {
806  lisPropiedades.Add(item["lote"].ToString());
807  }
808  }
809  else
810  {
811  if (lisPropiedades.Count > 0)
812  {
813  string claveTab = "C_ALBVEN";
814  int newORDEN = _offlineConfig.GetNewOrdenDeleteNet(claveTab); //repDeleteNet.NewId(del, "orden", 1, $@"clavetab = {_extensionDocVentaLineaDA.SQLString(claveTab)}");
815  string where = string.Empty;
816 
817  // buscar los guid_id inexistentes
818  foreach (string item in lisPropiedades)
819  {
820 
821  where = " Where empresa = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Empresa) +
822  " and numero = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Numero, 10, tlIzquierda: true) +
823  " and letra = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Letra, 2) +
824  " and linia = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Linea) +
825  " and periodo = " + _extensionDocVentaLineaDA.SQLString(cEjercicio) +
826  " and lote = " + _extensionDocVentaLineaDA.SQLString(item);
827 
828  _offlineConfig.InsertDeleteNet(((ExtensionDocAlbVenta)_Parent)._DeleteNetID, claveTab, "LOTES", "LTALBVE", ((ExtensionDocAlbVenta)_Parent)._TipoBorrado, newORDEN, cEjercicio, where);
829  newORDEN++;
830  }
831  }
832  }
833  }
834 
835  private void GestionarBorradoSeries()
836  {
837  DataTable ldtDades;
838  if (_eBeforeAfter == TipoExecute.Before)
839  {
840  //En el DELETE BEFORE => Aún no se han borrado realmente => hay que guardarlas
841  lisPropiedades.Clear();
842 
843  //Executo la consulta
844  ldtDades = _extensionDocVentaLineaDA.GetSeries(cEjercicio,
845  _LineaDocumento._Empresa,
846  _LineaDocumento._Numero,
847  _LineaDocumento._Letra,
848  _LineaDocumento._LineaReal,
849  Documento.AlbaranVenta);
850 
851  foreach (DataRow item in ldtDades.Rows)
852  {
853  lisPropiedades.Add(item["serie"].ToString());
854  }
855  }
856  else
857  {
858  //En el DELETE AFTER => Ya se han borrado realmente => hay que marcar borrarlas
859  if (lisPropiedades.Count > 0)
860  {
861  string claveTab = "C_ALBVEN";
862  int newORDEN = _offlineConfig.GetNewOrdenDeleteNet(claveTab); //repDeleteNet.NewId(del, "orden", 1, $@"clavetab = {_extensionDocVentaLineaDA.SQLString(claveTab)}");
863  string where = string.Empty;
864 
865  // buscar los guid_id inexistentes
866  foreach (string item in lisPropiedades)
867  {
868  where = " Where empresa = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Empresa) +
869  " and albaran = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Numero, 10, tlIzquierda: true) +
870  " and letra = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Letra, 2) +
871  " and linea = " + _extensionDocVentaLineaDA.SQLString(_LineaDocumento._Linea) +
872  " and serie = " + _extensionDocVentaLineaDA.SQLString(item);
873 
874  _offlineConfig.InsertDeleteNet(((ExtensionDocAlbVenta)_Parent)._DeleteNetID, claveTab, "GESTION", "VENSER", ((ExtensionDocAlbVenta)_Parent)._TipoBorrado, newORDEN, cEjercicio, where);
875  newORDEN++;
876  }
877 
878  }
879  }
880 
881 
882  }
883 
884  #endregion Private Methods
885  }
886 }
Clase de negocio para visualizar los giros.
Definition: LineaGiro.cs:12
Interfaz de acceso a datos para Extension de documentos deposito Venta
DataAccess.Model.deletenet InsertDeleteNet(string id, string claveTab, string baseDatos, string tabla, int tipo, int orden, string ejercicio, string where)
Inserta un registro en la tabla DeleteNet a través de la creación de un objeto de la clase deletenet ...
Clase que permite extender la funcionalidad en los documentos de venta para PaM y nuevos módulos...
Extensión de documento para albaranes de venta
Extensión de documento para las lineas de depósitos de venta
Acceso a datos para Extension de documentos albaranes venta
string GenerarRandomId()
Generar id aleatorio para la tabla delete net y otras futuras, de 10 caracteres
bool RevisarTablaControl(string tcTabla, string tcEmpresa, string tcNumero, string tcCampo3="", string tcValor3="")
Revisar tabla de control
object Retrieve(Type T)
Resuelve objeto de tipo T
Clase documento de venta TPV
Definition: DocVentaTpv.cs:47
string _Asi
_Asi : Asiento
Definition: DocsVen.cs:30018
ExtensionDocAlbVentaLinea()
Inicializa una nueva instancia de la clase
bool CondicionPrioridadDocumentos(List< string > lisTabrels)
Condición de prioridad de documentos
Es como el tipo de entrada asientos pero por negocio, sin formulario, pq quiero que me haga las propu...
Interficie mínima de las líneas (Mantener lo mas reducida posible)
Definition: IDocument.cs:186
Campos de los que se compone el filtro para filtrar en tabla control (CTRL_). Máximo un campo ...
string SQLString(object codigo)
SqlString
override bool _Abandonar_Documento(bool tbNoValidarDocumento=false, bool tlSalirDocumento=false)
Abandonar documento. Descarga líneas y limpia valores de propiedades...
bool DeleteTablaControlManten(string tabla, string valorCodigo, string campoCodigo="codigo", string ejercicio="", string campo3="", string valor3="")
Método que borra de la tabla extendida CTRL_ el registro eliminado
bool CondicionControlDocumentos(List< string > lisTabrels)
Condición de control de documentos
Clase que permite extender la funcionalidad en los albaranes de venta para PaM y nuevos módulos...
int _Giro
Días de giro
Definition: LineaGiro.cs:24
override bool _Save()
Método que se ejecuta cuando se ha guardado la línea del documento
EntregaAlbaran: Entrega a cuenta de albaranes/tickets de venta
override bool _Delete()
Método que se ejecuta cuando el usuario borra un documento
override bool _Save(bool tbForzarGuardarLineas=false)
Método que se ejecuta cuando el usuario guarda un documento
override bool _Load(string tcEmpresa, string tcNumero, string tcLetra="")
Load de la extensión
ExtensionDocAlbVenta(IExtensionDocAlbVentaDA extensionDocAlbVentaDA)
Inicializa una nueva instancia de la clase
int GetNewOrdenDeleteNet(string claveTab)
Obtiene el siguiente orden del deletenet de la clave clavetab
override bool _Validar_Solo_Lectura()
Validación de sólo lectura
Clase linea de documento de venta TPV
Extensión para las líneas de albaranes de venta
TipoExecute
Tipos de ejecución de los métodos
Definition: IDocModulos.cs:16
Clase de negocio para la configuración del addon de offline
Classe base dels documents.
Definition: DocsVen.cs:684
IList< int > GetMovimientosDeCaja(string ejercicio, string empresa, string numero, string letra)
Obtiene movimientos de caja
void _RecalcularRiesgoClienteOffline(string tcEmpresa, string tcCliente)
Recalcular el riesgo por cliente y empresa
Definir la estructura de las referencias de clientes
Definition: DocsVen.cs:26563
int _LineaReal
Devuelve el campo linia: para todos los documentos sera el mismo valor que la linea pero en el docume...
Definition: IDocument.cs:207
override bool _Delete_Linea(IDocumentLinea toLineaDocumento)
Método que se ejecuta cuando el usuario borra una línea del documento.
Clase Inyector de dependencias para resolver las dependencias
string SQLString(object txValor, int tnLongitud=0, char tcRelleno=' ', bool tlIzquierda=false)
Devuelve string para consulta