PagarePago.cs
1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Linq;
5 using System.Text;
6 using System.Data;
7 using System.Windows.Forms;
8 using sage.ew.ewbase;
9 using sage.ew.functions;
10 using sage.ew.db;
11 using sage.ew.global;
12 using sage.ew.contabilidad;
14 using sage.ew.interficies;
15 using sage.ew.formul.Forms;
16 using sage.ew.reports;
17 using System.IO;
18 using sage.ew.usuario;
20 using sage.ew.netvfp;
21 using sage.ew.empresa;
22 using System.Text.RegularExpressions;
23 using System.Diagnostics;
24 using static sage.ew.contabilidad.Cuenta;
25 
26 namespace sage.ew.docscompra
27 {
32  {
33  #region PROPIEDADES PRIVADAS
34 
35 
39  private string _lcAny = Convert.ToString(EW_GLOBAL._GetVariable("wc_any"));
40 
41 
45  private string _cMonedaEmpresa = Convert.ToString(EW_GLOBAL._GetVariable("wc_moneda"));
46 
47 
51  private string _cEmpresa = Convert.ToString(EW_GLOBAL._GetVariable("wc_empresa"));
52 
53 
57  private bool _lEmpresaNormal = Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_normal"));
58 
59 
63  private bool _lEjerPartido = Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_parti"));
64 
65 
69  private DateTime _dPeriodoIni = Convert.ToDateTime(EW_GLOBAL._GetVariable("wd_periodoini"));
70 
71 
75  private DateTime _dPeriodoFin = Convert.ToDateTime(EW_GLOBAL._GetVariable("wd_periodofin"));
76 
77 
81  private bool _lEfectoPag = Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_efectopag"));
82 
83 
87  private string _cEfecProv = Convert.ToString(EW_GLOBAL._GetVariable("wc_efec_pro"));
88 
89 
93  private string _cEfecAcre = Convert.ToString(EW_GLOBAL._GetVariable("wc_efec_acre"));
94 
95 
99  private string _cProveedor = Convert.ToString(EW_GLOBAL._GetVariable("wc_proveed"));
100 
101 
105  private string _cAcreedor = Convert.ToString(EW_GLOBAL._GetVariable("wc_acreed"));
106 
107 
111  private int _nDigitos = Convert.ToInt32(EW_GLOBAL._GetLenCampo(KeyDiccionarioLenCampos.wn_digitos));
112 
113  #endregion PROPIEDADES PRIVADAS
114 
115 
116  #region PROPIEDADES PUBLICAS
117 
121  [DefaultValue("")]
122  public string _Empresa
123  {
124  get { return Convert.ToString(_Campo("EMPRESA")); }
125  set { _Campo("EMPRESA", value); }
126  }
127 
128 
132  [DefaultValue("")]
133  public string _Banco
134  {
135  get
136  {
137  return Convert.ToString(_Campo("BANCO"));
138  }
139  set
140  {
141 
142  if (string.IsNullOrWhiteSpace(this._Empresa))
143  this._Empresa = this._cEmpresa;
144 
145  _Campo("BANCO", value);
146  }
147  }
148 
149 
153  [DefaultValue("")]
154  public string _Pagare
155  {
156  get {
157  // Añado espacios a la derecha por que lo trae alltrimeado a menudo, y es un campo que está formateado con el valor a la izquierda y
158  // espacios a la derecha.
159  //
160  return Convert.ToString(_Campo("PAGARE")).PadRight(10, ' ');
161  }
162  set {
163 
164  if (string.IsNullOrWhiteSpace(this._Empresa))
165  this._Empresa = this._cEmpresa;
166 
167  _Campo("PAGARE", value);
168  }
169  }
170 
171 
175  [DefaultValue("")]
176  public string _Proveedor
177  {
178  get
179  {
180  return Convert.ToString(_Campo("PROVEEDOR"));
181  }
182  set
183  {
184  _Campo("PROVEEDOR", value);
185 
186  string lcProveedor = "";
187 
188  lcProveedor = FUNCTIONS._Punto_Por_Ceros(value);
189  if (this._oProveedor == null)
190  {
191  this._oProveedor = new Cuenta(lcProveedor);
192  }
193  else if (lcProveedor != this._oProveedor._Codigo)
194  {
195  this._oProveedor._Codigo = lcProveedor;
196  }
197  }
198  }
199 
200 
204  public Cuenta _oProveedor
205  {
206  get
207  {
208  return _oProv;
209  }
210  set
211  {
212  _oProv = value;
213  }
214  }
215  private Cuenta _oProv = null;
216 
217 
221  [DefaultValue(null)]
222  public DateTime? _Fecha_Emision
223  {
224  get
225  {
226  object loFecha = _Campo("FECHA_EXPE");
227  if (loFecha != DBNull.Value && loFecha != null)
228  {
229  _Campo("FECHA_EXPE", ((DateTime)loFecha).Date);
230  return ((DateTime)loFecha).Date;
231  }
232  else
233  return null;
234  }
235  set {
236  if (value != null)
237  _Campo("FECHA_EXPE", ((DateTime)value).Date);
238  else
239  _Campo("FECHA_EXPE", null);
240  }
241  }
242 
243 
247  [DefaultValue(null)]
248  public DateTime? _Fecha_Emision_Origen { get; set; }
249 
250 
254  [DefaultValue(null)]
255  public DateTime? _Fecha_Vencim
256  {
257  get
258  {
259  object loFecha = _Campo("F_VTO");
260  if (loFecha != DBNull.Value && loFecha != null)
261  {
262  _Campo("F_VTO", ((DateTime)loFecha).Date);
263  return ((DateTime)loFecha).Date;
264  }
265  else
266  return null;
267  }
268  set {
269  if (value != null)
270  _Campo("F_VTO", ((DateTime)value).Date);
271  else
272  _Campo("F_VTO", null);
273  }
274  }
275 
276 
280  [DefaultValue(0.0)]
281  public decimal _Importe
282  {
283  get { return Convert.ToDecimal(_Campo("IMPORTE")); }
284  set { _Campo("IMPORTE", value); }
285  }
286 
287 
291  [DefaultValue(0.0)]
292  public decimal _Importe_Origen { get; set; }
293 
294 
298  public bool _Cheque
299  {
300  get { return Convert.ToBoolean(_Campo("CHEQUE")); }
301  set { _Campo("CHEQUE", value); }
302  }
303 
304 
308  [DefaultValue("")]
309  public string _Asiento
310  {
311  get { return Convert.ToString(_Campo("ASIENTO")); }
312  set { _Campo("ASIENTO", value); }
313  }
314 
315 
319  [DefaultValue("")]
320  public string _AsiEfectos
321  {
322  get { return Convert.ToString(_Campo("ASI_EFECTOS")); }
323  set { _Campo("ASI_EFECTOS", value); }
324  }
325 
326 
330  public DataTable _Previsiones { get; set; }
331 
332 
336  public override string _Nombre
337  {
338  get
339  {
340  return String.Format("PAGARE{0}", _Pagare);
341  }
342  set
343  {
344  ;
345  }
346  }
347 
348 
349  #region IDocumentoImprimible
350 
351 
355  public string _ReportBase
356  {
357  get
358  {
359  return "PAGARE";
360  }
361  set
362  {
363  ;
364  }
365  }
366 
367 
371  public String _ReportTitlePreview
372  {
373  get
374  {
375  return "Pagaré de pago";
376  }
377  set
378  {
379  ;
380  }
381  }
382 
383 
387  public IDocPrint _DocPrint
388  {
389  get
390  {
391  if (_oDocPrint == null)
392  {
393  _oDocPrint = (DocPrintPagarePago)Activator.CreateInstance(typeof(DocPrintPagarePago), this);
394  }
395 
396  return (DocPrintPagarePago)_oDocPrint;
397  }
398  set
399  {
400  _oDocPrint = (DocPrintPagarePago)value;
401  }
402  }
403  private DocPrintPagarePago _oDocPrint;
404 
408  public string _Fecha
409  {
410  get
411  {
412  return DateTime.Now.ToShortDateString();
413  }
414  }
415 
416 
417  #endregion IDocumentoImprimible
418 
419 
420  #endregion PROPIEDADES PUBLICAS
421 
422 
423  #region CONSTRUCTORES
424 
425 
429  public PagarePago()
430  {
431  this.establecerParametros();
432 
433  this._Load();
434 
435  return;
436  }
437 
438 
442  public PagarePago(string tcEmpresa = "", string tcBanco = "", string tcPagare = "")
443  {
444  if (string.IsNullOrWhiteSpace(tcEmpresa) || string.IsNullOrWhiteSpace(tcBanco) || string.IsNullOrWhiteSpace(tcPagare))
445  {
446  this._Error_Message = "Parámetros incorrectos.";
447  return;
448  }
449 
450  this.establecerParametros();
451 
452  this._Empresa = tcEmpresa;
453  this._Banco = tcBanco;
454  this._Pagare = tcPagare;
455 
456  this._Load();
457 
458  return;
459  }
460 
461 
465  public PagarePago(DataRow loRow)
466  {
467  string lcEmpresa = Convert.ToString(loRow["empresa"]);
468  string lcBanco = Convert.ToString(loRow["banco"]);
469  string lcPagare = Convert.ToString(loRow["pagare"]);
470 
471  if (string.IsNullOrWhiteSpace(lcEmpresa) || string.IsNullOrWhiteSpace(lcBanco) || string.IsNullOrWhiteSpace(lcPagare))
472  {
473  this._Error_Message = "Parámetros incorrectos.";
474  return;
475  }
476  this.establecerParametros();
477 
478  this._Empresa = lcEmpresa;
479  this._Banco = lcBanco;
480  this._Pagare = lcPagare;
481 
482  this._Load();
483 
484  return;
485  }
486 
487 
488  #endregion CONSTRUCTORES
489 
490 
491  #region METODOS PRIVADOS
492 
493 
498  private bool controlesAsentarPagaresCtaEfectos()
499  {
500  bool llExisteAsientoAsiento = false, llOk = true;
501 
502  if (!string.IsNullOrWhiteSpace(this._AsiEfectos))
503  {
504  Asientos loAsiento = new Asientos(this._AsiEfectos);
505  if (loAsiento._Numero != 0 && loAsiento._Lineas.Count > 0)
506  llExisteAsientoAsiento = true;
507  }
508  if (!llExisteAsientoAsiento)
509  {
510  if (!this._ExisteAsientoEfectosEjerAnt())
511  {
512  llOk = this.generarAsientoEfectos();
513  }
514  }
515  else
516  {
517  if (this._Importe != this._Importe_Origen ||
518  this._Fecha_Emision != this._Fecha_Emision_Origen)
519  {
520  if (!string.IsNullOrWhiteSpace(this._AsiEfectos))
521  {
522  this.borrarAsientoEfectos();
523  }
524  llOk = this.generarAsientoEfectos();
525  }
526  }
527 
528  return llOk;
529  }
530 
531 
535  private bool generarAsientoEfectos()
536  {
537  bool llOk = false;
538 
539  DateTime ldtFechaAsiento = Convert.ToDateTime(this._Fecha_Emision);
540 
541  Asientos loAsiento = new Asientos();
542  loAsiento._New(this._cEmpresa, eTipoOrigenAsiento.Defecto);
543  loAsiento._Fecha = ldtFechaAsiento;
544  loAsiento._Divisa = this._cMonedaEmpresa;
545  loAsiento._Cambio = 1;
546  loAsiento._Tipo_mov = 31;
547 
548  bool llSel = false;
549  string lcFactura = "", lcDefinicion = "";
550  int lnOrden = 0;
551  decimal lnImporte = 0;
552 
553  foreach (DataRow loRow in this._Previsiones.Rows)
554  {
555  llSel = Convert.ToBoolean(loRow["sel"]);
556  if (llSel)
557  {
558  lcFactura = Convert.ToString(loRow["factura"]);
559  lnOrden = Convert.ToInt32(loRow["numereb"]);
560  lnImporte = Convert.ToDecimal(loRow["importe"]);
561 
562  lcDefinicion = "Pago factura " + lcFactura.Trim() + "/" + Convert.ToString(lnOrden) + " en pagaré " + this._Pagare;
563  this.asientoNuevaLinea(loAsiento, this._Proveedor, lcDefinicion, 1, "D", lnImporte);
564  }
565  }
566 
567  // Crea la cuenta de efectos respectiva si no existe.
568  //
569  string lcCtaEfectos = this.cuentaEfectos(this._Proveedor);
570 
571  this.asientoNuevaLinea(loAsiento, lcCtaEfectos, "Pagaré " + this._Pagare, 1, "H", this._Importe);
572 
573  // Grabo el asiento.
574  //
575  llOk = loAsiento._Save();
576 
577  if (!llOk)
578  {
579  this._Error_Message = "No se ha podido generar el asiento del pagaré utilizando cuenta de efectos a pagar." + Environment.NewLine + Environment.NewLine +
580  "Mensaje de error: " + loAsiento._Mensaje_Error;
581  return false;
582  }
583  else
584  {
585  this._AsiEfectos = loAsiento._Lineas[0]._Asi;
586  }
587 
588  return llOk;
589  }
590 
591 
599  private bool borrarAsientoEfectos()
600  {
601  bool llOk = true;
602 
603  if (!string.IsNullOrWhiteSpace(this._AsiEfectos))
604  {
605  Asientos loAsiento = new Asientos(this._AsiEfectos);
606  if (loAsiento._Numero != 0 && loAsiento._Lineas.Count > 0)
607  loAsiento._Delete();
608 
609  loAsiento = null;
610 
611  this._AsiEfectos = "";
612 
613  // No poner aqui un this._Save() en ningún caso, sino al borrar un pagaré no borrará el registro de PAGARE_P por que lo volverá
614  // a insertar
615  }
616 
617  return llOk;
618  }
619 
620 
626  private bool asientoPeriodoCerrado(string tcAsi)
627  {
628  if (string.IsNullOrWhiteSpace(tcAsi))
629  return false;
630 
631  Asientos loAsiento = new Asientos(tcAsi);
632  if (loAsiento._Numero != 0 && loAsiento._Lineas.Count > 0)
633  {
634  DateTime ldtFechaAsiento = loAsiento._Fecha;
635 
636  // Controlar que el mes de la fecha del asiento declarado no esté cerrado.
637  //
638  if (FUNCTIONS._Comprovar_Mes_Cerrado(ldtFechaAsiento))
639  {
640  this._Error_Message = "No se puede desasentar el pagaré, la fecha del asiento (" + ldtFechaAsiento.ToShortDateString() + ") corresponde a un mes cerrado contablemente.";
641  return true;
642  }
643  }
644 
645  return false;
646  }
647 
648 
652  private void establecerParametros()
653  {
654  _Browser_Titulos_Campos = "Banco, Pagaré, Proveedor, Nombre, Importe, F.Emisión, F.Vencimiento, Contabilizado";
655  _Browser_Campos = "p.banco, p.pagare, p.proveedor, " + DB.SQLNvl("c.nombre", "''") + " as nombre, p.importe, p.fecha_expe, p.f_vto, " + DB.SQLIif("p.asiento = ' ' ", DB.SQLFalse(), DB.SQLTrue()) + " as contabilizado ";
656  _Browser_Campos_No_Visibles = "p.empresa";
657 
658  _Browser_Campo_Predet = "pagare ";
659  _Browser_Tabla = "pagare_p p inner join " + CONTABILIDAD._CuentasProveedores("codigo, nombre") + " c on p.proveedor = c.codigo ";
660  _Browser_Clave = "empresa,banco,pagare";
661  _Browser_Condicion = "empresa= " + DB.SQLString(_cEmpresa);
662 
663  _Clave = "empresa,banco,pagare";
664  _DataBase = "GESTION";
665  _Tabla = "PAGARE_P";
666  _TituloMantenimiento = "Emisión de pagarés";
667  _Pregunta_Borrar = "¿Desea eliminar el pagaré?";
668  _FormManteBaseType = typeof(frmPagarePagoMante);
669 
670  Navegacion._Condicion = "empresa=" + DB.SQLString(_cEmpresa);
671 
672  return;
673  }
674 
675 
681  private string cuentaEfectos(string tcCuenta)
682  {
683  string tcCuentaEfecto = "";
684  string lcCuentaProv = Convert.ToString(EW_GLOBAL._GetVariable("wc_proveed"));
685  string lcCuentaAcre = Convert.ToString(EW_GLOBAL._GetVariable("wc_acreed"));
686 
687  if (tcCuenta.Substring(0, 3) == this._cProveedor.Substring(0, 3) && !string.IsNullOrWhiteSpace(this._cEfecProv))
688  tcCuentaEfecto = this._cEfecProv.Substring(0, 3) + tcCuenta.Substring(3, this._nDigitos-3);
689  else
690  {
691  if (tcCuenta.Substring(0, 3) == this._cAcreedor.Substring(0, 3) && !string.IsNullOrWhiteSpace(this._cEfecAcre))
692  tcCuentaEfecto = this._cEfecAcre.Substring(0, 3) + tcCuenta.Substring(3, this._nDigitos - 3);
693  else
694  tcCuentaEfecto = tcCuenta.Substring(0, 2) + "1" + tcCuenta.Substring(3, this._nDigitos - 3);
695  }
696 
697  Cuenta loCuenta = new Cuenta();
698  loCuenta._Codigo = tcCuenta;
699 
700  // Asegurar la existencia de la cuenta.
701  //
702  CONTABILIDAD._CrearCuentaContable(tcCuentaEfecto, loCuenta._Nombre);
703 
704  return tcCuentaEfecto;
705  }
706 
707 
717  private void asientoNuevaLinea(Asientos toAsiento, string tcCuenta, string tcDefinicion, decimal tnCambio, string tcDebeHaber, decimal tnImporte)
718  {
719  AsientosLinea loAsientoLinea = new AsientosLinea(toAsiento);
720  int lnLinia = toAsiento._MaxLinea + 1;
721  loAsientoLinea._Linea = lnLinia;
722 
723  loAsientoLinea._Cuenta = tcCuenta;
724  loAsientoLinea._Definicion = tcDefinicion;
725  loAsientoLinea._Cambio = tnCambio;
726 
727  if (tcDebeHaber == "D")
728  {
729  loAsientoLinea._Debe = tnImporte;
730  loAsientoLinea._Haber = 0;
731  }
732  else
733  {
734  loAsientoLinea._Haber = tnImporte;
735  loAsientoLinea._Debe = 0;
736  }
737 
738  toAsiento._AddLinea(loAsientoLinea);
739 
740  return;
741  }
742 
743 
755  private bool enlacePrevisionPagare(string tcEmpresa, int tnPeriodo, string tcProveedor, string tcFactura, int tnOrden, int tnPendiente, bool tlEnlazar)
756  {
757  bool llOk = true;
758 
759  try
760  {
761  PrevisionPago loPrevision = new PrevisionPago();
762  loPrevision._Empresa = tcEmpresa;
763  loPrevision._Ejercicio = tnPeriodo;
764  loPrevision._Proveedor = tcProveedor;
765  loPrevision._Factura = tcFactura;
766  loPrevision._Numereb = tnOrden;
767  loPrevision._Pendiente = tnPendiente;
768  loPrevision._Load();
769 
770  if (loPrevision._Estado == _EstadosMantenimiento.MostrandoRegistro)
771  {
772  if (tlEnlazar)
773  {
774  loPrevision._Num_Pag = this._Pagare;
775  loPrevision._Imppagare = this._Importe;
776  loPrevision._Fecha_Vencim2 = this._Fecha_Vencim;
777  loPrevision._Banco = this._Banco;
778  loPrevision._Cheque = this._Cheque;
779  }
780  else
781  {
782  loPrevision._Num_Pag = "";
783  loPrevision._Imppagare = 0;
784  loPrevision._Fecha_Vencim2 = null;
785  loPrevision._Cheque = false;
786  }
787 
788  llOk = loPrevision._Save();
789 
790  if (!llOk)
791  this._Error_Message = "No se pudieron actualizar los campos de enlace de la previsión de pago de la Factura " + tcFactura.Trim() + " Orden " + tnOrden.ToString() + " Proveedor " + tcProveedor.Trim() + " con el pagaré.";
792  }
793  }
794  catch (Exception e)
795  {
796  DB.Registrar_Error(e);
797  this._Error_Message = e.Message;
798  llOk = false;
799  }
800 
801  return llOk;
802  }
803 
804 
819  private void nuevaPrevision(int tnPeriodo, string tcProveedor, string tcFactura, int tnOrden, int tnPendiente, decimal tnImporte)
820  {
821  DataTable ldtMaxOrden = new DataTable();
822  int lnNuevoOrden = 0;
823  bool llOk = false;
824 
825  // Averiguo el nº de orden de la nueva previsión a crear a partir de los datos de la previsión recibidos por parámetros.
826  // El campo NUMEREB de esta previsión será el máximo NUMEREB que encuentre + 1.
827  //
828  string lcSql = "select max(numereb) as maxorden from " + DB.SQLDatabase("comunes", "previs") + " " +
829  "where empresa=" + DB.SQLString(this._cEmpresa) + " and " +
830  "periodo=" + DB.SQLString(tnPeriodo) + " and " +
831  "proveedor=" + DB.SQLString(tcProveedor) + " and " +
832  "factura=" + DB.SQLString(tcFactura);
833  DB.SQLExec(lcSql, ref ldtMaxOrden);
834 
835  if (ldtMaxOrden.Rows.Count > 0)
836  lnNuevoOrden = Convert.ToInt32(ldtMaxOrden.Rows[0]["maxorden"]) + 1;
837  else
838  lnNuevoOrden = 1;
839 
840  // Previsión de pago original a partir de la que crearemos la nueva previsión.
841  //
842  PrevisionPago loPrevisionOriginal = new PrevisionPago();
843  loPrevisionOriginal._Empresa = this._cEmpresa;
844  loPrevisionOriginal._Ejercicio = tnPeriodo;
845  loPrevisionOriginal._Proveedor = tcProveedor;
846  loPrevisionOriginal._Factura = tcFactura;
847  loPrevisionOriginal._Numereb = tnOrden;
848  loPrevisionOriginal._Pendiente = tnPendiente;
849  loPrevisionOriginal._Load();
850 
851  // Creo la nueva previsión de pago.
852  //
853  PrevisionPago loPrevisionNueva = new PrevisionPago();
854  loPrevisionNueva._New(loPrevisionOriginal._Proveedor, this._cEmpresa, tcFactura,
855  lnNuevoOrden, 0,
856  tnImporte, Convert.ToDateTime(loPrevisionOriginal._Fecha_Emision),
857  Convert.ToDateTime(loPrevisionOriginal._Fecha_Vencim),
858  this._cMonedaEmpresa, loPrevisionOriginal._Num_Banco,
859  loPrevisionOriginal._Banco,
860  loPrevisionOriginal._Referencia,
861  (loPrevisionOriginal._Fecha_Operacion == null ? loPrevisionOriginal._Fecha_Operacion : Convert.ToDateTime(loPrevisionOriginal._Fecha_Operacion)),
862  loPrevisionOriginal._Forma_Pago,
863  loPrevisionOriginal._Recc, loPrevisionOriginal._Ejercicio, loPrevisionOriginal._Cambio, tnImporte);
864 
865  // Una vez creada la previsión, la cargo para asegurar algunos datos de la misma.
866  //
867  loPrevisionNueva = new PrevisionPago();
868  loPrevisionNueva._Empresa = this._cEmpresa;
869  loPrevisionNueva._Ejercicio = tnPeriodo;
870  loPrevisionNueva._Proveedor = tcProveedor;
871  loPrevisionNueva._Factura = tcFactura;
872  loPrevisionNueva._Numereb = lnNuevoOrden;
873  loPrevisionNueva._Pendiente = 0;
874  loPrevisionNueva._Load();
875 
876  if (loPrevisionNueva._Estado == _EstadosMantenimiento.MostrandoRegistro)
877  {
878  loPrevisionNueva._Concepto = "Generada por emisión pagaré: " + this._Pagare.Trim() + " (diferencia de total pagaré)";
879  loPrevisionNueva._Asiento = false;
880  loPrevisionNueva._Remesa = 0;
881  loPrevisionNueva._Asi = "";
882  loPrevisionNueva._Refundir = "";
883  loPrevisionNueva._Imppagare = 0;
884  loPrevisionNueva._Num_Pag = "";
885  loPrevisionNueva._Pagada = "N";
886  loPrevisionNueva._Fecha_Vencim2 = null;
887  llOk = loPrevisionNueva._Save();
888 
889  if (!llOk)
890  {
891  this._Error_Message = "No se ha podido actualizar la nueva previsión por la diferencia para la Factura " + tcFactura.Trim() + " Orden " + lnNuevoOrden.ToString() + " Proveedor " + tcProveedor;
892  }
893  else
894  {
895  // Actualizo el importe de la previsión original.
896  //
897  decimal lnNuevoImporte = (loPrevisionOriginal._Importe - tnImporte);
898  loPrevisionOriginal._Importe = lnNuevoImporte;
899  loPrevisionOriginal._ImporteDiv = lnNuevoImporte;
900  llOk = loPrevisionOriginal._Save();
901  if (!llOk)
902  this._Error_Message = "No se ha podido actualizar la previsión original para la Factura " + tcFactura.Trim() + " Orden " + tnOrden.ToString() + " Proveedor " + tcProveedor;
903  else
904  {
905  if (this._LinkForm)
906  {
907  Divisa loDivisa = new Divisa(this._cMonedaEmpresa);
908  ewMascara loMascara = loDivisa._MascaraImporte;
909  FUNCTIONS._MessageBox("Se ha generado una nueva previsión para la factura " + tcFactura.Trim() + " proveeedor " + tcProveedor + " con un importe de " + tnImporte.ToString(loMascara._Mascara_Net), "Emisión de pagarés",
910  System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Stop, System.Windows.Forms.MessageBoxDefaultButton.Button1);
911  }
912  }
913  }
914  }
915 
916  return;
917  }
918 
919 
935  private bool actCamposPagoEnPrevis(string tcEmpresa, int tnPeriodo, string tcProveedor, string tcFactura, int tnOrden, int tnPendiente, string tcAsi, DateTime tdFechaAsiento)
936  {
937  bool llOk = true;
938 
939  try
940  {
941  PrevisionPago loPrevision = new PrevisionPago();
942  loPrevision._Empresa = tcEmpresa;
943  loPrevision._Ejercicio = tnPeriodo;
944  loPrevision._Proveedor = tcProveedor;
945  loPrevision._Factura = tcFactura;
946  loPrevision._Numereb = tnOrden;
947  loPrevision._Pendiente = tnPendiente;
948  loPrevision._Load();
949 
950  if (loPrevision._Estado == _EstadosMantenimiento.MostrandoRegistro)
951  {
952  loPrevision._Pagada = "S";
953  loPrevision._Asiento = true;
954  loPrevision._Asi = tcAsi;
955  loPrevision._Fecha_Pago = tdFechaAsiento;
956  llOk = loPrevision._Save();
957 
958  if (!llOk)
959  this._Error_Message = "No se pudieron actualizar los campos de pago en la previsión de pago Proveedor " + tcProveedor + " Factura " + tcFactura.Trim() + " Orden " + tnOrden.ToString() +
960  Environment.NewLine + Environment.NewLine + loPrevision._Error_Message;
961  }
962  }
963  catch (Exception e)
964  {
965  DB.Registrar_Error(e);
966  this._Error_Message = e.Message;
967  llOk = false;
968  }
969 
970  return llOk;
971  }
972 
973 
974  #endregion METODOS PRIVADOS
975 
976 
977  #region MÉTODOS PROTECTED OVERRIDE
978 
979 
983  protected override void _DescargarDatos()
984  {
985  base._DescargarDatos();
986 
987  this._oProv = null;
988  this._Importe_Origen = 0;
989  this._Fecha_Emision_Origen = null;
990 
991  if (this._Previsiones is DataTable && this._Previsiones.Rows.Count > 0)
992  this._Previsiones.Clear();
993 
994  return;
995  }
996 
997 
998  #endregion MÉTODOS PROTECTED OVERRIDE
999 
1000 
1001  #region MÉTODOS PÚBLICOS
1002 
1003 
1008  public bool _Print()
1009  {
1010  DataTable loDt;
1011  DocPrintPagarePago loDocPrint = _DocPrint as DocPrintPagarePago;
1012 
1013  loDocPrint._MaxFechaEmision = Convert.ToDateTime(_Fecha_Vencim);
1014  loDocPrint._FechaEmision = Convert.ToDateTime(_Fecha_Emision);
1015 
1017 
1018  if (loDt.Rows.Count > 0)
1019  {
1020  loDocPrint._CodigoEntidad = Convert.ToString(loDt.Rows[0]["CODIGO"]);
1021  loDocPrint._CodigoBanco = Convert.ToString(loDt.Rows[0]["CODBANCO"]);
1022  loDocPrint._CodigoCarta = Convert.ToString(loDt.Rows[0]["CARTAPAG"]);
1023  }
1024 
1025  if (loDocPrint._Show_Print())
1026  {
1027  return loDocPrint._Print();
1028  }
1029 
1030  return false;
1031  }
1032 
1033 
1040  public DataTable _SeleccionarPrevisiones(DateTime tdFEmisionIni, DateTime tdFEmisionFin)
1041  {
1042  DataTable ldtPrevisionesPendientes = new DataTable();
1043 
1044  // Seleccionamos las previsiones pendientes del proveedor, y las propias que tenga ya incorporadas al pagaré, hacemos un UNION
1045  // de las dos consultas.
1046  //
1047  string lcSql = "select empresa, proveedor, factura, numereb, pendiente, emision, periodo, vencim, importe, banco, " + DB.SQLFalse() + " as sel " +
1048  "from " + DB.SQLDatabase("comunes", "previs") + " " +
1049  "where empresa=" + DB.SQLString(this._cEmpresa) + " and " +
1050  "proveedor=" + DB.SQLString(this._Proveedor) + " and " +
1051  "banco=" + DB.SQLString(this._Banco) + " and " +
1052  "emision>=" + DB.SQLString(tdFEmisionIni) + " and emision <= " + DB.SQLString(tdFEmisionFin) + " and " +
1053  "num_pag=" + DB.SQLString(" ") + " and " +
1054  "asiento=" + DB.SQLFalse() + " and " +
1055  "remesa=0 and " +
1056  "refundir=" + DB.SQLString(" ") + " " +
1057  "union all " +
1058  "select empresa, proveedor, factura, numereb, pendiente, emision, periodo, vencim, importe, banco, " + DB.SQLTrue() + " as sel " +
1059  "from " + DB.SQLDatabase("comunes", "previs") + " " +
1060  "where empresa=" + DB.SQLString(this._cEmpresa) + " and " +
1061  "banco=" + DB.SQLString(this._Banco) + " and " +
1062  "num_pag=" + DB.SQLString(this._Pagare) + " " +
1063  "order by factura, numereb, emision";
1064  bool llOk = DB.SQLExec(lcSql, ref ldtPrevisionesPendientes);
1065 
1066  return ldtPrevisionesPendientes;
1067  }
1068 
1069 
1073  public void _Show_Asiento()
1074  {
1075  if (string.IsNullOrWhiteSpace(this._Asiento))
1076  return;
1077 
1078  Asientos loAsiento = new Asientos(this._Asiento);
1079  loAsiento._Show();
1080 
1081  return;
1082  }
1083 
1084 
1092  public bool _ExistePagare(string tcEmpresa, string tcBanco, string tcPagare)
1093  {
1094  bool llOk = false;
1095 
1096  DataTable ldtPagare = new DataTable();
1097  string lcSql = "Select empresa, banco, pagare " +
1098  "From " + DB.SQLDatabase("gestion", "pagare_p") + " " +
1099  "where empresa =" + DB.SQLString(tcEmpresa) + " and " +
1100  "banco =" + DB.SQLString(tcBanco) + " and " +
1101  "pagare =" + DB.SQLString(tcPagare);
1102  DB.SQLExec(lcSql, ref ldtPagare);
1103 
1104  if (ldtPagare.Rows.Count > 0)
1105  llOk = true;
1106 
1107  return llOk;
1108  }
1109 
1110 
1118  public bool _ExistePagareEjerPost(ref string tcMensaje)
1119  {
1120  bool llExiste = false;
1121 
1122  string lcAsi = "";
1123  DataTable ldtDatosPagare = new DataTable();
1124  tcMensaje = "";
1125 
1126  // Verificar la existencia de ejercicios posteriores al actual.
1127  //
1128  DataTable ldtEjerPost = new DataTable();
1129  string lcSql = "select * from " + DB.SQLDatabase("comunes", "ejercici") + " " +
1130  "where [any]>" + this._lcAny + " " +
1131  "order by [any]";
1132  DB.SQLExec(lcSql, ref ldtEjerPost);
1133 
1134  if (ldtEjerPost.Rows.Count == 0)
1135  return false;
1136 
1137  string lcEjercicio = "", lcBdEjercicio="";
1138 
1139  foreach (DataRow loRow in ldtEjerPost.Rows)
1140  {
1141  // Buscamos el pagaré en el ejercicio que estamos procesando.
1142  //
1143  lcEjercicio = Convert.ToString(loRow["any"]).Trim();
1144  lcBdEjercicio = Convert.ToString(loRow["conexion"]).Trim();
1145 
1146  lcSql = "select empresa, banco, pagare " +
1147  "from " + DB.SQLDatabaseReal(lcBdEjercicio, "pagare_p") + " " +
1148  "where empresa=" + DB.SQLString(this._Empresa) + " and " +
1149  "banco = " + DB.SQLString(this._Banco) + " and " +
1150  "pagare = " + DB.SQLString(this._Pagare);
1151  DB.SQLExec(lcSql, ref ldtDatosPagare);
1152 
1153  if (ldtDatosPagare.Rows.Count > 0)
1154  {
1155  llExiste = true;
1156 
1157  tcMensaje = "Se han encontrado el pagaré en periodos posteriores al actual, debe eliminar el pagaré en el ejercicio " + lcEjercicio + " posterior al actual.";
1158 
1159  lcAsi = Convert.ToString(ldtDatosPagare.Rows[0]["asiento"]);
1160 
1161  if (!string.IsNullOrWhiteSpace(lcAsi))
1162  {
1163  tcMensaje += Environment.NewLine + Environment.NewLine + "El pagaré # " + this._Pagare + " tiene el asiento en el ejercicio " +
1164  lcEjercicio + ". Si quiere eliminarlo deberá hacerlo desde ese ejercicio.";
1165  }
1166  }
1167  }
1168 
1169  return llExiste;
1170  }
1171 
1172 
1178  {
1179  bool llOk = false;
1180 
1181  if (string.IsNullOrWhiteSpace(this._AsiEfectos))
1182  return false;
1183 
1184  // Verificar la existencia del ejercicio anterior al actual.
1185  //
1186  DataTable ldtEjercicios = new DataTable();
1187  DB.SQLExec("select * from " + DB.SQLDatabase("comunes", "ejercici"), ref ldtEjercicios);
1188 
1189  List<string> lstEjercicios = (from loRow in ldtEjercicios.AsEnumerable()
1190  select Convert.ToString(loRow["any"]).Trim()).ToList();
1191 
1192  bool llExisteEjerAnt = lstEjercicios.Contains(Convert.ToString(Convert.ToInt32(this._lcAny) - 1));
1193 
1194  if (llExisteEjerAnt)
1195  {
1196  // Busco el ASI en la tabla de asientos del ejercicio anterior.
1197  //
1198  int lnNumeroAsiento = Convert.ToInt32(DB.SQLValor("asientos", "ASI", this._AsiEfectos, "NUMERO", "GESTION-1"));
1199  if (lnNumeroAsiento != 0)
1200  llOk = true;
1201  }
1202 
1203  return llOk;
1204  }
1205 
1206 
1212  {
1213  bool llOk = false;
1214  int lnNumPagare = 0;
1215  string lcSerie = "";
1216 
1217  // Capto la serie del pagaré.
1218  //
1219  if (this._Pagare.Trim().Length >= 3)
1220  lcSerie = this._Pagare.Trim().Substring(0, 3);
1221 
1222  // Capto el nº de pagaré.
1223  //
1224  if (this._Pagare.Trim().Length >= 4)
1225  {
1226  llOk = Int32.TryParse(this._Pagare.Substring(3), out lnNumPagare); // El número de pagaré es serie + número (3dígitos + 7dígitos)
1227 
1228  if (llOk)
1229  {
1230  string lcCodigoBanco = Convert.ToString(DB.SQLValor("bancos", "cuenta", this._Banco, "codigo"));
1231  if (!string.IsNullOrWhiteSpace(lcCodigoBanco))
1232  {
1233  CuentaBancaria loBanco = new CuentaBancaria(lcCodigoBanco);
1234  bool llRestar = (Convert.ToInt32(loBanco._Numero) == lnNumPagare);
1235  if (llRestar)
1236  {
1237  if (!string.IsNullOrWhiteSpace(loBanco._Serie) && lcSerie != loBanco._Serie)
1238  llRestar = false;
1239  }
1240 
1241  if (llRestar)
1242  {
1243  loBanco._Numero = loBanco._Numero - 1;
1244  loBanco._Save();
1245  return true;
1246  }
1247  }
1248  }
1249  }
1250 
1251  return false;
1252  }
1253 
1254 
1259  public bool _DesAsentarPagare()
1260  {
1261  DataTable ldtPagares = new DataTable();
1262  bool llOk = true, llPeriodoCerrado=false;
1263  DateTime ldtFechaAsiento = DateTime.Today;
1264  Asientos loAsiento = null;
1265  string lcAsiNormal = "";
1266 
1267  try
1268  {
1269  if (!string.IsNullOrWhiteSpace(this._Asiento))
1270  {
1271  llPeriodoCerrado = this.asientoPeriodoCerrado(this._Asiento);
1272  if (llPeriodoCerrado)
1273  return false;
1274  lcAsiNormal = this._Asiento;
1275  }
1276 
1277  this._Asiento = "";
1278 
1279  llOk = this._Save();
1280  if (!llOk)
1281  {
1282  this._Error_Message = "No se ha podido desasentar el pagaré.";
1283  }
1284  else
1285  {
1286  // Desmarco las previsiones de que se compone el pagaré para dejarlas "libres".
1287  //
1288  string lcEmpresa = "", lcProveedor = "", lcFactura = "";
1289  int lnPeriodo = 0, lnOrden = 0, lnPendiente = 0;
1290  bool llSel = false;
1291  foreach (DataRow loRowPrevis in this._Previsiones.Rows)
1292  {
1293  lcEmpresa = Convert.ToString(loRowPrevis["empresa"]);
1294  lnPeriodo = Convert.ToInt32(loRowPrevis["periodo"]);
1295  lcProveedor = Convert.ToString(loRowPrevis["proveedor"]);
1296  lcFactura = Convert.ToString(loRowPrevis["factura"]);
1297  lnOrden = Convert.ToInt32(loRowPrevis["numereb"]);
1298  lnPendiente = Convert.ToInt32(loRowPrevis["pendiente"]);
1299  llSel = Convert.ToBoolean(loRowPrevis["sel"]);
1300 
1301  if (llSel)
1302  {
1303  PrevisionPago loPrevisionPago = new PrevisionPago();
1304  loPrevisionPago._Empresa = lcEmpresa;
1305  loPrevisionPago._Ejercicio = lnPeriodo;
1306  loPrevisionPago._Proveedor = lcProveedor;
1307  loPrevisionPago._Factura = lcFactura;
1308  loPrevisionPago._Numereb = lnOrden;
1309  loPrevisionPago._Pendiente = lnPendiente;
1310  loPrevisionPago._Load();
1311  if (loPrevisionPago._Estado == _EstadosMantenimiento.MostrandoRegistro)
1312  loPrevisionPago._Desasentar(); // Esto borra unicamente los campos ASI, ASIENTO, PAGADA, FECHA_PAGO y hace el _Save() de la previsión.
1313  }
1314  }
1315 
1316  if (!string.IsNullOrWhiteSpace(lcAsiNormal))
1317  {
1318  loAsiento = new Asientos(lcAsiNormal);
1319 
1320  // Elimino el asiento del pagaré.
1321  //
1322  if (loAsiento != null && loAsiento._Numero != 0 && loAsiento._Lineas.Count > 0)
1323  {
1324  llOk = loAsiento._Delete();
1325  if (!llOk)
1326  {
1327  this._Error_Message = "No se ha podido eliminar el asiento del pagaré nº " + Convert.ToString(loAsiento._Numero);
1328  return false;
1329  }
1330  }
1331  }
1332  }
1333  }
1334  catch (Exception e)
1335  {
1336  DB.Registrar_Error(e);
1337  this._Error_Message = e.Message;
1338  llOk = false;
1339  }
1340 
1341  return llOk;
1342  }
1343 
1344 
1350  {
1351  if (!string.IsNullOrWhiteSpace(this._Asiento))
1352  {
1353  if (this._LinkForm)
1354  FUNCTIONS._MessageBox("El pagaré ya está contabilizado." + Environment.NewLine + Environment.NewLine + "Imposible eliminar pagaré.", "Pagarés de pago",
1355  System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Stop, System.Windows.Forms.MessageBoxDefaultButton.Button1);
1356  return false;
1357  }
1358 
1359  return true;
1360  }
1361 
1362 
1368  {
1369  for (int i = this._Previsiones.Rows.Count - 1; i >= 0; i--)
1370  {
1371  DataRow row = this._Previsiones.Rows[i];
1372  if (Convert.ToBoolean(row["sel"]) == false)
1373  this._Previsiones.Rows.Remove(row);
1374  }
1375  this._Previsiones.AcceptChanges();
1376 
1377  return;
1378  }
1379 
1380 
1394  public bool _EnlacePrevisionesPagare(bool tlDesenlazarForzado = false, bool tlCrearNuevaPrevision = false, int tnPeriodo = 0,
1395  string tcProveedor = "", string tcFactura = "", int tnOrden = 0, int tnPendiente = 0,
1396  decimal tnImporte = 0)
1397  {
1398  bool llActuOk = true, llSel = false;
1399  string lcEmpresa = "", lcFactura = "", lcProveedor = "";
1400  int lnPeriodo = 0, lnOrden = 0, lnPendiente = 0;
1401 
1402  try
1403  {
1404  // Aqui se enlaza, y se desenlaza también, pues podría pasar que una previsión que tuvieramos enlazada con un pagaré, ahora
1405  // no quisiesemos que formase parte de él.
1406  //
1407  foreach (DataRow loRowPrevis in this._Previsiones.Rows)
1408  {
1409  lcEmpresa = Convert.ToString(loRowPrevis["empresa"]);
1410  lnPeriodo = Convert.ToInt32(loRowPrevis["periodo"]);
1411  lcProveedor = Convert.ToString(loRowPrevis["proveedor"]);
1412  lcFactura = Convert.ToString(loRowPrevis["factura"]);
1413  lnOrden = Convert.ToInt32(loRowPrevis["numereb"]);
1414  lnPendiente = Convert.ToInt32(loRowPrevis["pendiente"]);
1415 
1416  llSel = tlDesenlazarForzado ? false : Convert.ToBoolean(loRowPrevis["sel"]);
1417 
1418  llActuOk = this.enlacePrevisionPagare(lcEmpresa, lnPeriodo, lcProveedor, lcFactura, lnOrden, lnPendiente, llSel);
1419  if (!llActuOk)
1420  {
1421  // El mensaje de error ya fue rellenado por la llamada anterior.
1422  break;
1423  }
1424  }
1425 
1426  // Si se tiene que crear nueva previsión lo hago.
1427  //
1428  if (tlCrearNuevaPrevision)
1429  this.nuevaPrevision(tnPeriodo, tcProveedor, tcFactura, tnOrden, tnPendiente, tnImporte);
1430  }
1431  catch (Exception e)
1432  {
1433  DB.Registrar_Error(e);
1434  this._Error_Message = e.Message;
1435  llActuOk = false;
1436  }
1437 
1438  return llActuOk;
1439  }
1440 
1452  public void _Clonar(PagarePago toPagare, string tcEmpresa, string tcBanco, string tcPagare)
1453  {
1454  try
1455  {
1456  if (toPagare._oProv != null)
1457  {
1458  this._oProv = new Cuenta(toPagare._oProv._Codigo);
1459  this._oProv._Load();
1460  }
1461 
1462  // Hay que establecer los campos de la clave principal primero.
1463  //
1464  this._Empresa = tcEmpresa;
1465  this._Banco = tcBanco;
1466  this._Pagare = tcPagare;
1467  this._Proveedor = toPagare._Proveedor;
1468  this._Cheque = toPagare._Cheque;
1469  this._Fecha_Emision = toPagare._Fecha_Emision;
1470  this._Fecha_Emision_Origen = toPagare._Fecha_Emision_Origen;
1471  this._Fecha_Vencim = toPagare._Fecha_Vencim;
1472  this._Importe = toPagare._Importe;
1473  this._Importe_Origen = toPagare._Importe_Origen;
1474  this._Guid_Id = Guid.NewGuid().ToString().ToUpper();
1475 
1476  // Recordar que en origen, posteriormente a esta llamada, deberán marcarse las previsiones de pago pendientes que pertenecen
1477  // a este pagaré. No tendría sentido tener un pagaré compuesto de 0 previsiones, no está permitido.
1478  }
1479  catch (Exception loEx)
1480  {
1481  DB.Registrar_Error(loEx);
1482  }
1483 
1484  return;
1485  }
1486 
1487 
1497  public bool _ActualizarCamposPagoEnPrevis(string tcAsi, DateTime tdFechaAsiento)
1498  {
1499  bool llActuOk = true;
1500  string lcEmpresa = "", lcFactura = "", lcProveedor="";
1501  int lnPeriodo, lnOrden = 0, lnPendiente = 0;
1502 
1503  try
1504  {
1505  // Actualizar campos cobro en todas las previsiones del pagaré.
1506  //
1507  foreach (DataRow loRow in this._Previsiones.Select("sel=true"))
1508  {
1509  lcEmpresa = Convert.ToString(loRow["empresa"]);
1510  lnPeriodo = Convert.ToInt32(loRow["periodo"]);
1511  lcProveedor = Convert.ToString(loRow["proveedor"]);
1512  lcFactura = Convert.ToString(loRow["factura"]);
1513  lnOrden = Convert.ToInt32(loRow["numereb"]);
1514  lnPendiente = Convert.ToInt32(loRow["pendiente"]);
1515 
1516  // Actualizar campos de pago en la previsión de pago.
1517  //
1518  llActuOk = this.actCamposPagoEnPrevis(lcEmpresa, lnPeriodo, lcProveedor, lcFactura, lnOrden, lnPendiente, tcAsi, tdFechaAsiento);
1519  if (!llActuOk)
1520  {
1521  // El mensaje de error ya fue rellenado por la llamada anterior.
1522  break;
1523  }
1524  }
1525  }
1526  catch (Exception e)
1527  {
1528  DB.Registrar_Error(e);
1529  this._Error_Message = e.Message;
1530  llActuOk = false;
1531  }
1532 
1533  return llActuOk;
1534  }
1535 
1536 
1537  #region IDocumentoImprimible
1538 
1539 
1545  public bool _Show_Print(int tnAbrirEn = 1)
1546  {
1547  frmReportAction loForm;
1548  DocPrint loDocPrint = (DocPrint)_DocPrint;
1549 
1550  loForm = new frmReportAction();
1551  loForm._UserControlAdicional = loDocPrint._UserControlAdicional;
1552  loForm._ReportBase = _ReportBase;
1553  loForm._Nombre = ((IDocumentoImprimible)this)._Nombre;
1554  loForm._PrinterCopies = Convert.ToInt16(loDocPrint._Numero_Copias);
1555  loForm._MostrarExportacionCSV = false;
1556  loForm._MostrarOpcionColores = false;
1557  loForm._Printer = loDocPrint._Printer;
1558  loForm._ShowEditMode = false;
1559  loForm._ShowVistaPreliminar = Debugger.IsAttached;
1561  loForm._ShowDialog();
1562 
1563  if (loForm.DialogResult == DialogResult.OK)
1564  {
1565  loDocPrint._ErrorMessage = "";
1566  loDocPrint._Vista_Preliminar = loForm._VistaPreliminar;
1567  loDocPrint._Ruta_Fichero = loForm._FilePath;
1568  loDocPrint._Numero_Copias = loForm._PrinterCopies;
1569  loDocPrint._Printer = loForm._Printer;
1570  loDocPrint._Exportar = loForm._Exportar;
1571  loDocPrint._EditMode = loForm._EditMode;
1572  loDocPrint._FieldRandomBackColor = loForm._FieldRandomBackColor;
1573  loDocPrint._Formato_exportacion = loForm._FormatoExportacion;
1574 
1576 
1577  return ((DocPrintPagarePago)loDocPrint).ValidaFicheroCarta();
1578  }
1579  else
1580  {
1581  return false;
1582  }
1583  }
1584 
1590  public Dictionary<string, object> _Obtener_Filtros_SageReports(Dictionary<string, object> tdicParametros = null)
1591  {
1592  DataTable loDt;
1593  Cuenta loCuenta;
1594  Boolean lEsCheque;
1595  CuentaBancaria loBanco;
1596  DateTime? loFechaEmision;
1597  Dictionary<string, object> loDic, loDicProv;
1598  Empresa loEmpresa = new Empresa(_Empresa);
1599  Proveedor loProveedor;
1600 
1601  ewMascara loMascaraImport = new ewMascara(KeyDiccionarioMascara.wc_grantotal);
1602  String lcCodigoBanco, lcImporteLetras, lcDigitoControlPagare, lcDigitoCodigoPagareCMC7, lcCodigoEntidad;
1603  String lcCuentaIban, lcEntitadBancaria, lcOficinaBancaria, lcCuentaBancaria, lcCuentaDigitoControl, lcIban, lcBancoIBANPais, lcBancoIBANDigitoControl;
1604 
1605  lEsCheque = tdicParametros is Dictionary<string, object> && tdicParametros.ContainsKey("EsCheque") ? Convert.ToBoolean(tdicParametros["EsCheque"]) : false;
1606  loFechaEmision = tdicParametros is Dictionary<string, object> && tdicParametros.ContainsKey("FechaEmision") ? Convert.ToDateTime(tdicParametros["FechaEmision"]) : _Fecha_Emision;
1607  lcCodigoBanco = tdicParametros is Dictionary<string, object> && tdicParametros.ContainsKey("CodigoBanco") ? Convert.ToString(tdicParametros["CodigoBanco"]) : "";
1608  lcCodigoEntidad = tdicParametros is Dictionary<string, object> && tdicParametros.ContainsKey("CodigoEntidad") ? Convert.ToString(tdicParametros["CodigoEntidad"]) : "";
1609 
1610  if (!lEsCheque)
1611  {
1612  loDic = loEmpresa._Obtener_Filtros_SageReports(tdicParametros);
1613 
1614  if (FUNCTIONS._Es_Proveedor(_Proveedor))
1615  {
1616  loProveedor = new Proveedor(_Proveedor);
1617  loDicProv = loProveedor._Obtener_Filtros_SageReports(tdicParametros);
1618  loDicProv.Where(f => !loDic.ContainsKey(f.Key)).ToList().ForEach(f => loDic.Add(f.Key, f.Value));
1619  }
1620  else
1621  {
1622  loCuenta = new Cuenta(_Proveedor);
1623 
1624  string lcDomicilio = "", lcPoblacion = "", lcCodPos = "", lcProvincia = "", lcTelefono = "";
1625 
1626  lcTelefono = loCuenta._Telefono;
1627  lcDomicilio = loCuenta._Direccion.Trim();
1628  lcPoblacion = loCuenta._Poblacion.Trim();
1629  lcCodPos = loCuenta._CodPost.Trim();
1630  lcProvincia = loCuenta._Provincia.Trim();
1631 
1632  //Construcción de los filtros
1633  loDic.Add("wc_DireccionProveedor", $"{lcDomicilio}{Environment.NewLine}{lcCodPos} {lcPoblacion}{Environment.NewLine}{lcProvincia}");
1634  loDic.Add("wc_Proveedor", _Codigo);
1635  loDic.Add("wc_ProveedorNIF", loCuenta._GetCif().Trim());
1636  loDic.Add("wc_NombreProveedor2", "");
1637  loDic.Add("wc_NombreProveedor", loCuenta._Nombre);
1638  loDic.Add("wc_TelefonoProveedor", lcTelefono);
1639  loDic.Add("wc_PoblacionProveedor", lcPoblacion);
1640  loDic.Add("wc_ProvinciaProveedor", lcProvincia);
1641  loDic.Add("wc_CPProveedor", lcCodPos);
1642  loDic.Add("wc_DomicilioProveedor", lcDomicilio);
1643 
1644  }
1645 
1646  if (String.IsNullOrEmpty(lcCodigoBanco) && !String.IsNullOrEmpty(_Banco))
1647  {
1649  if (loDt.Rows.Count > 0) lcCodigoBanco = Convert.ToString(loDt.Rows[0]["CODBANCO"]);
1650 
1651  }
1652 
1653  loBanco = new CuentaBancaria(lcCodigoBanco);
1654 
1655  loDic.Add("wc_Pagare", _Pagare);
1656  loDic.Add("wc_FechaVencimiento", _Fecha_Vencim is DateTime ? _Fecha_Vencim?.ToShortDateString() : "");
1657  loDic.Add("wc_FechaExpedicion", loFechaEmision is DateTime ? loFechaEmision?.ToShortDateString() : "");
1658  loDic.Add("wc_Importe", loMascaraImport.StringFormatNet(_Importe));
1659 
1660  lcImporteLetras = FUNCTIONS._Importe_To_Letras(_Importe.ToString(), EW_GLOBAL._Moneda._Codigo);
1661  lcImporteLetras = lcImporteLetras.Replace("#", "");
1662  loDic.Add("wc_ImporteLetras", lcImporteLetras);
1663 
1664  loDic.Add("wc_BancoNombre", loBanco._Nombre);
1665 
1666  lcIban = loBanco._Iban.Trim();
1667  loDic.Add("wc_BancoIBAN", lcIban);
1668 
1669  lcBancoIBANPais = lcBancoIBANDigitoControl = "";
1670 
1671  if (lcIban.Length > 3)
1672  {
1673  lcBancoIBANPais = loBanco._Iban.Substring(0, 2);
1674  lcBancoIBANDigitoControl = loBanco._Iban.Substring(2);
1675  }
1676  loDic.Add("wc_BancoIBANPais", lcBancoIBANPais);
1677  loDic.Add("wc_BancoIBANDigitoControl", lcBancoIBANDigitoControl );
1678  loDic.Add("wc_BancoDireccion", loBanco._Direccion);
1679  loDic.Add("wc_BancoPoblacion", loBanco._Poblacion);
1680  loDic.Add("wc_BancoProvincia", loBanco._Provincia);
1681  loDic.Add("wc_BancoCP", loBanco._CodPost);
1682  loDic.Add("wc_BancoCuentaBanco", loBanco._CuentaBanco);
1683  loDic.Add("wc_BancoCuentaDescontados", loBanco._CuentaDescontados);
1684 
1685  lcEntitadBancaria = lcOficinaBancaria = lcCuentaBancaria = lcCuentaDigitoControl = "";
1686  lcCuentaIban = loBanco._CuentaIban.Trim();
1687 
1688  if (lcCuentaIban.Length > 19)
1689  {
1690  lcEntitadBancaria = lcCuentaIban.Substring(0, 4);
1691  lcOficinaBancaria = lcCuentaIban.Substring(4, 4);
1692  lcCuentaDigitoControl = lcCuentaIban.Substring(8, 2);
1693  lcCuentaBancaria = lcCuentaIban.Substring(10, 10);
1694  }
1695 
1696  loDic.Add("wc_BancoCuentaIBAN", loBanco._CuentaIban);
1697  loDic.Add("wc_BancoCuentaEntidad", lcEntitadBancaria);
1698  loDic.Add("wc_BancoCuentaSucursal", lcOficinaBancaria);
1699  loDic.Add("wc_BancoCuentaBancaria", lcCuentaBancaria);
1700  loDic.Add("wc_BancoCuentaDigitoControl", lcCuentaDigitoControl);
1701 
1702  loDic.Add("wn_NumPrevisiones", _Previsiones is DataTable ? _Previsiones.Rows.Count : 0);
1703 
1704  lcDigitoControlPagare = lcDigitoCodigoPagareCMC7 = "";
1705 
1706  if (!String.IsNullOrEmpty(loBanco._CuentaIban))
1707  {
1708  lcDigitoControlPagare = _GetCodigoControl(_Pagare, loBanco._CuentaIban);
1709  lcDigitoCodigoPagareCMC7 = _GetCodigoPagareCMC7(_Pagare, loBanco._CuentaIban, String.Format("{0:0.00}", _Importe));
1710  }
1711 
1712  loDic.Add("wc_DigitoControlPagare", lcDigitoControlPagare);
1713  loDic.Add("wc_CodigoPagareCMC7", lcDigitoCodigoPagareCMC7);
1714  }
1715  else
1716  {
1717  loDic = new Dictionary<string, object>();
1718  }
1719 
1720  return loDic;
1721  }
1722 
1732  private string _GetCodigoPagareCMC7(String tcPagare, String tcCuentaBancaria, String tcImporte)
1733  {
1734  String lcEntitadBancaria, lcOficinaBancaria, lcCuentaBancaria, lcCodigo = "";
1735 
1736  tcPagare = tcPagare.Trim();
1737  tcPagare = tcPagare.Trim().Length > 7 ? tcPagare.Substring(tcPagare.Length - 7) : tcPagare.PadLeft(7, '0');
1738 
1739  if (tcCuentaBancaria.Length > 19)
1740  {
1741  lcEntitadBancaria = tcCuentaBancaria.Substring(0, 4);
1742  lcOficinaBancaria = tcCuentaBancaria.Substring(4, 4);
1743  lcCuentaBancaria = tcCuentaBancaria.Substring(10, 10);
1744  tcImporte = tcImporte.PadLeft(11);
1745 
1746  lcCodigo = String.Format("C{0}E{1}D {2}E {3}B {4}A {5}C ", tcPagare, lcEntitadBancaria, lcOficinaBancaria, lcCuentaBancaria, lcEntitadBancaria, tcImporte);
1747 
1748  }
1749 
1750  return lcCodigo;
1751  }
1752 
1760  private String _GetCodigoControl(String tcPagare, String tcCuentaBancaria)
1761  {
1762  Int64 lnNum;
1763  String lcCodigo = "";
1764 
1765  tcPagare = tcPagare.Trim();
1766  tcPagare = tcPagare.Trim().Length > 7 ? tcPagare.Substring(tcPagare.Length - 7) : tcPagare;
1767 
1768  tcCuentaBancaria = tcCuentaBancaria.Length > 4 ? tcCuentaBancaria.Substring(0, 4) : tcCuentaBancaria;
1769 
1770  if (Int64.TryParse(String.Format("{0}{1}", tcCuentaBancaria, tcPagare), out lnNum)) lcCodigo = Convert.ToString(lnNum % 7);
1771 
1772  return lcCodigo;
1773  }
1774 
1780  public DataTable _Obtener_Datos_SageReports(Dictionary<string, object> tdicParametros = null)
1781  {
1782  DataRow loRow;
1783  DataTable loDt;
1784  Boolean lEsCheque;
1785  String lcColumnName;
1786  Dictionary<string, object> loColumnsName = new Dictionary<string, object>();
1787  Dictionary<string, object> loDic;
1788 
1789  lEsCheque = tdicParametros.ContainsKey("EsCheque") ? Convert.ToBoolean(tdicParametros["EsCheque"]) : false;
1790 
1791  if (lEsCheque)
1792  {
1793  loDt = new DataTable();
1794 
1795  if (tdicParametros.ContainsKey("EsCheque")) tdicParametros.Remove("EsCheque");
1796  loDic = _Obtener_Filtros_SageReports(tdicParametros);
1797 
1798  foreach (KeyValuePair<string, object> loKeyValue in loDic)
1799  {
1800  lcColumnName = loKeyValue.Key.StartsWith("w") && loKeyValue.Key.Substring(2, 1) == "_" ? loKeyValue.Key.Substring(3) : loKeyValue.Key;
1801 
1802  if (!loColumnsName.ContainsKey(lcColumnName))
1803  {
1804  loColumnsName.Add(lcColumnName, loKeyValue.Value);
1805  loDt.Columns.Add(lcColumnName);
1806  }
1807  }
1808 
1809  loRow = loDt.NewRow();
1810  foreach (KeyValuePair<string, object> loKeyValue in loColumnsName)
1811  {
1812  loRow[loKeyValue.Key] = loKeyValue.Value;
1813  }
1814  loDt.Rows.Add(loRow);
1815  }
1816  else
1817  {
1818  ewMascara loMascaraImport = new ewbase.ewMascara(ew.global.EW_GLOBAL._GetMascara(KeyDiccionarioMascara.wc_total));
1819 
1820  loDt = _Previsiones is DataTable ? _Previsiones : _GetPrevisiones();
1821  if (loDt.Columns.Contains("sel")) loDt.Columns.Remove("sel");
1822  if (loDt.Columns.Contains("importe") && !loDt.Columns["importe"].ExtendedProperties.ContainsKey("Mascara")) loDt.Columns["importe"].ExtendedProperties.Add("Mascara", loMascaraImport._Mascara_Net);
1823 
1824  }
1825 
1826  return loDt;
1827  }
1828 
1829  #endregion IDocumentoImprimible
1830 
1831 
1832  #endregion MÉTODOS PÚBLICOS
1833 
1834 
1835  #region MÉTODOS PÚBLICOS OVERRIDE
1836 
1837 
1841  public override void _Load()
1842  {
1843 
1844  _Pantalla = "EM_PAGAR";
1845 
1846  base._Load();
1847 
1848  if (!string.IsNullOrWhiteSpace(this._Proveedor))
1849  {
1850  if (this._oProv == null)
1851  {
1852  Cuenta loProveedor = new Cuenta(this._Proveedor);
1853  this._oProv = loProveedor;
1854  }
1855  else
1856  {
1857  if (this._oProv._Codigo != this._Proveedor)
1858  this._oProv._Codigo = this._Proveedor;
1859  }
1860  }
1861 
1862  if (!string.IsNullOrWhiteSpace(this._Banco) && !string.IsNullOrWhiteSpace(this._Pagare))
1863  {
1864  // La fecha de recepción y fecha de vencimiento, a pesar de que por tablas permiten null, en la práctica no
1865  // permite dejarlos en blanco la pantalla por tanto, si vienen en blanco, ya les doy el valor por defecto que se les
1866  // da en pantalla.
1867  //
1868  // No ocurre lo mismo con la fecha de ingreso, pues ésta sí que permite no declarla.
1869  //
1870  if (this._Fecha_Emision == null || this._Fecha_Emision == DateTime.MinValue)
1871  this._Fecha_Emision = DateTime.Today;
1872 
1873  if (this._Fecha_Vencim == null || this._Fecha_Vencim == DateTime.MinValue)
1874  this._Fecha_Vencim = DateTime.Today;
1875  }
1876 
1877  // Guardamos estos valores pues se utilizan en algunos casos.
1878  //
1879  this._Fecha_Emision_Origen = this._Fecha_Emision;
1880  this._Importe_Origen = this._Importe;
1881 
1882 
1883  if (!string.IsNullOrWhiteSpace(this._Empresa) && !string.IsNullOrWhiteSpace(this._Banco) && !string.IsNullOrWhiteSpace(this._Pagare))
1884  {
1885  this._Previsiones = _GetPrevisiones();
1886  }
1887 
1888  return;
1889  }
1890 
1891  private DataTable _GetPrevisiones()
1892  {
1893  String lcSql = "";
1894  DataTable ldtPrevisiones = new DataTable();
1895 
1896  // Obtener las previsiones que conforman el pagaré.
1897  lcSql = "select empresa, proveedor, factura, numereb, pendiente, emision, periodo, vencim, importe, banco, " + DB.SQLTrue() + " as sel " +
1898  "from " + DB.SQLDatabase("comunes", "previs") + " " +
1899  "where empresa=" + DB.SQLString(this._cEmpresa) + " and " +
1900  "banco=" + DB.SQLString(this._Banco) + " and " +
1901  "num_pag=" + DB.SQLString(this._Pagare) + " " +
1902  "order by factura, numereb, emision";
1903 
1904  DB.SQLExec(lcSql, ref ldtPrevisiones);
1905 
1906  return ldtPrevisiones;
1907  }
1908 
1913  public override bool _Delete()
1914  {
1915  bool llOK = base._Delete();
1916 
1917  if (llOK)
1918  {
1919  // Borrar asiento generado con cuentas de efectos, si lo hubiera.
1920  //
1921  if (!string.IsNullOrWhiteSpace(this._AsiEfectos))
1922  this.borrarAsientoEfectos();
1923 
1924  // Desenlazar las previsiones de pago del pagaré.
1925  //
1926  this._EnlacePrevisionesPagare(true);
1927 
1928  // Restar nº de pagaré si fuera el caso.
1929  //
1930  this._Restar_Numero_Pagare();
1931  }
1932 
1933  return llOK;
1934  }
1935 
1936 
1937 
1942  public override bool _Save_Before()
1943  {
1944  if (this._Estado != _EstadosMantenimiento.EntrandoNuevo && this._Estado != _EstadosMantenimiento.EditandoRegistro)
1945  return true;
1946 
1947  // Si está activo este opcflag, la fecha de emisión se utiliza precisamente como fecha del asiento que se hace, es por este motivo
1948  // que no puede estar vacía.
1949  //
1950  if (this._lEfectoPag && (this._Fecha_Emision == null || this._Fecha_Emision == DateTime.MinValue))
1951  {
1952  this._Error_Message = "Debe introducir la fecha de emisión del pagaré.";
1953  return false;
1954  }
1955 
1956  if (string.IsNullOrWhiteSpace(this._Proveedor))
1957  {
1958  this._Error_Message = "Debe introducir el proveedor.";
1959  return false;
1960  }
1961 
1962  bool llOk = base._Save_Before();
1963 
1964  if (llOk)
1965  {
1966  if (this._lEfectoPag)
1967  {
1968  llOk = this.controlesAsentarPagaresCtaEfectos();
1969  if (!llOk)
1970  return false;
1971  }
1972  }
1973 
1974  return llOk;
1975  }
1976 
1977 
1978  #endregion MÉTODOS PÚBLICOS OVERRIDE
1979  }
1980 
1984  public class DocPrintPagarePago
1985  : DocPrint
1986  {
1987 
1988  private DataTable _oDtEntidades;
1989 
1993  private Boolean _bShowInfo = true;
1994 
1998  private Boolean _bPrintedByFox = false;
1999 
2000  #region ENUMERACIONES
2001 
2002 
2006  public enum TipoImpresion
2007  {
2011  [Description("Pagaré entidad")]
2012  PagareEntidad= 0,
2016  [Description("Formato pagaré estándar")]
2017  CartaPagareStandar = 1,
2021  [Description("Formato pagaré entidad")]
2022  CartaPagareEntidad = 2
2023  }
2024 
2025 
2026  #endregion ENUMERACIONES
2027 
2028  #region PROPIEDADES PÚBLICAS
2029 
2033  public Boolean _ShowInfoFOX
2034  {
2035  get
2036  {
2037  return _bShowInfo;
2038  }
2039  set
2040  {
2041  _bShowInfo = value;
2042  }
2043  }
2044 
2048  public Boolean _PrintedByFoxEngine
2049  {
2050  get
2051  {
2052  return _bPrintedByFox;
2053  }
2054  }
2055 
2059  public TipoImpresion _TipoImpresion
2060  {
2061  get
2062  {
2063  return _oTipoImpresion;
2064  }
2065  set
2066  {
2067  _oTipoImpresion = value;
2068  }
2069  }
2070  private TipoImpresion _oTipoImpresion = TipoImpresion.PagareEntidad;
2071 
2072 
2076  public string _CodigoCarta
2077  {
2078  get
2079  {
2080  return _cCodigoCarta;
2081  }
2082  set
2083  {
2084  if (_cCodigoCarta != value)
2085  {
2086  _cCodigoCarta = value;
2087  _oCarta = null;
2088  }
2089  }
2090  }
2091  private string _cCodigoCarta = "";
2092 
2093 
2097  public string _CodigoEntidad
2098  {
2099  get
2100  {
2101  return _cCodigoEntidad;
2102  }
2103  set
2104  {
2105  _cCodigoEntidad = value;
2106  }
2107  }
2108  private string _cCodigoEntidad = "";
2109 
2110 
2114  public string _CodigoBanco
2115  {
2116  get
2117  {
2118  return _cCodigoBanco;
2119  }
2120  set
2121  {
2122  _cCodigoBanco = value;
2123  }
2124  }
2125  private string _cCodigoBanco = "";
2126 
2127 
2131  public DateTime _MaxFechaEmision
2132  {
2133  get
2134  {
2135  return _oMaxFechaEmision;
2136  }
2137  set
2138  {
2139  _oMaxFechaEmision = value;
2140  }
2141  }
2142  private DateTime _oMaxFechaEmision = DateTime.MaxValue;
2143 
2144 
2148  public DateTime _FechaEmision
2149  {
2150  get
2151  {
2152  return _oFechaEmision;
2153  }
2154  set
2155  {
2156  _oFechaEmision = value;
2157  }
2158  }
2159  private DateTime _oFechaEmision = DateTime.Now;
2160 
2161  private Mail500 _Carta
2162  {
2163  get
2164  {
2165  if (_oCarta == null) _oCarta = new Mail500(_CodigoCarta);
2166  return _oCarta;
2167  }
2168  }
2169 
2170  private Mail500 _oCarta;
2171 
2172  #endregion PROPIEDADES PÚBLICAS
2173 
2174  #region PROPIEDADES PÚBLICAS OVERRIDE
2175 
2176 
2180  public override UserControl _UserControlAdicional
2181  {
2182  get
2183  {
2184  if(_oUserControlAdicional == null)
2185  {
2186  _oUserControlAdicional = new OpcionesImpresionPagares();
2187  }
2188 
2189  OpcionesImpresionPagares loUserControl = ((OpcionesImpresionPagares)_oUserControlAdicional);
2190 
2191  loUserControl._FechaEmision = _FechaEmision;
2192  loUserControl._CodigoEntidad = _cCodigoEntidad;
2193  loUserControl._CodigoBanco = _cCodigoBanco;
2194  loUserControl._CodigoCarta = _cCodigoCarta;
2195 
2196  return loUserControl;
2197  }
2198  set
2199  {
2200  if(value is OpcionesImpresionPagares) _oUserControlAdicional = (OpcionesImpresionPagares)value;
2201  }
2202  }
2203 
2204 
2205  #endregion PROPIEDADES PÚBLICAS OVERRIDE
2206 
2207  #region PROPIEDADES PRIVADAS
2208 
2209  private DataTable _Entidades
2210  {
2211  get
2212  {
2213  if(_oDtEntidades == null ) _oDtEntidades = CONTABILIDAD._ObtenerDataTableEntidadesBancarias();
2214  return _oDtEntidades;
2215  }
2216  }
2217 
2218  #endregion PROPIEDADES PRIVADAS
2219 
2220  #region CONSTRUCTOR
2221 
2222 
2227  public DocPrintPagarePago(IDocumentoImprimible loDocumentoImprimible)
2228  : base()
2229  {
2230  _Documento = loDocumentoImprimible;
2231  }
2232 
2233 
2234  #endregion CONSTRUCTOR
2235 
2236 
2237  #region MÉTODOS PÚBLICOS OVERRIDE
2238 
2239 
2244  {
2245  OpcionesImpresionPagares loUserControl = ((OpcionesImpresionPagares)_oUserControlAdicional);
2246 
2247  _TipoImpresion = loUserControl._TipoImpresion;
2248  _FechaEmision = loUserControl._FechaEmision;
2249  _CodigoEntidad = loUserControl._CodigoEntidad;
2250  _CodigoBanco = loUserControl._TipoImpresion == TipoImpresion.CartaPagareStandar ? loUserControl._CodigoBanco : "";
2251  _CodigoCarta = loUserControl._TipoImpresion == TipoImpresion.CartaPagareEntidad ? loUserControl._CodigoCarta : "";
2252  _Numero_Copias = loUserControl._Copias;
2253  }
2254 
2255 
2261  public override bool _Show_Print(int tnAbrirEn = 1)
2262  {
2263  return (_Documento is PagarePago) ? _Documento._Show_Print() : false;
2264  }
2265 
2266 
2272  public override DocPrint _Clonar(DocPrint toDocPrint)
2273  {
2274  toDocPrint = base._Clonar(toDocPrint);
2275 
2276  toDocPrint._Numero_Copias = _Numero_Copias;
2277 
2278  if (toDocPrint is DocPrintPagarePago)
2279  {
2280  ((DocPrintPagarePago)toDocPrint)._FechaEmision = _FechaEmision;
2281  ((DocPrintPagarePago)toDocPrint)._CodigoEntidad = _CodigoEntidad;
2282  ((DocPrintPagarePago)toDocPrint)._CodigoBanco = _CodigoBanco;
2283  ((DocPrintPagarePago)toDocPrint)._CodigoCarta = _CodigoCarta;
2284  ((DocPrintPagarePago)toDocPrint)._TipoImpresion = _TipoImpresion;
2285  ((DocPrintPagarePago)toDocPrint)._ShowInfoFOX = _ShowInfoFOX;
2286  }
2287 
2288  return toDocPrint;
2289  }
2290 
2295  public override bool _Print()
2296  {
2297  DataRow loRow;
2298  Boolean lbOk = true;
2299  PagarePago loPagarePago;
2300 
2301  loPagarePago = (PagarePago)this._Documento;
2302 
2303  switch (this._TipoImpresion)
2304  {
2305  case TipoImpresion.PagareEntidad:
2306 
2307  loRow = _GetEntidad(_CodigoEntidad);
2308  lbOk = _PrintPagareEntidad(loPagarePago, Convert.ToBoolean(loRow["TIPO_IMP_PAGARE"]));
2309  break;
2310 
2311  case TipoImpresion.CartaPagareStandar:
2312 
2313  lbOk = _PrintCartaPagareStandar(loPagarePago, Convert.ToBoolean(EW_GLOBAL._Empresa._TipoImpresionPagare));
2314  break;
2315 
2316  case TipoImpresion.CartaPagareEntidad:
2317 
2318 
2319  Report loReport;
2320  loReport = _Report;
2321 
2322  if(_Carta._TipoCarta == Mail500.TipoCarta.SageReports)
2323  {
2324  lbOk = _PrintCartaPagareEntidad(loPagarePago, true);
2325  }
2326  else
2327  {
2328  if (_Carta.IsFOXFile())
2329  {
2330  //lbOk = _PrintCartaPagareEntidad(loPagarePago, false);
2331 
2332  _ErrorMessage = "Revise la configuración de la carta, el fichero indicado no es válido.";
2333  lbOk = false;
2334  }
2335  else if (_Carta.IsFile())
2336  {
2337  if (_Carta.IsValidToDirectPrint())
2338  {
2339  _Carta._DocPrint.Printer = _Printer;
2340  _Carta._DocPrint.NumCopies = (Int16)_Numero_Copias;
2341  lbOk = _Carta._DocPrint.Print();
2342  }
2343  else
2344  {
2345  _ErrorMessage = "Revise la configuración de la carta, el fichero indicado no es válido.";
2346  lbOk = false;
2347  }
2348  }
2349  else
2350  {
2351  lbOk = _PrintCartaPagareStandar(loPagarePago, Convert.ToBoolean(EW_GLOBAL._Empresa._TipoImpresionPagare));
2352  }
2353  }
2354 
2355  break;
2356 
2357  }
2358 
2359  return lbOk;
2360  }
2361 
2366  public override Report _CrearReport()
2367  {
2368  Report loReport;
2369 
2370  loReport = base._CrearReport();
2371  loReport._TableName = this._TipoImpresion == TipoImpresion.PagareEntidad ? "PAGARE" : "PREVISIONES";
2372 
2373  return loReport;
2374  }
2375 
2380  protected override void _Configurar_obtencion_filtros(ref Dictionary<string, object> toDiccionario)
2381  {
2382  toDiccionario.Add("EsCheque", this._TipoImpresion == TipoImpresion.PagareEntidad);
2383  toDiccionario.Add("FechaEmision", _FechaEmision);
2384  toDiccionario.Add("CodigoBanco", _CodigoBanco);
2385  toDiccionario.Add("CodigoEntidad", _CodigoEntidad);
2386  }
2387 
2391  private Boolean _PrintCartaPagareEntidad(PagarePago toPagarePago, Boolean tbImprimirNet = true)
2392  {
2393  return _PrintNET();
2394 
2395  //if (tbImprimirNet)
2396  //{
2397  // return _PrintNET();
2398  //}
2399  //else
2400  //{
2401  // //_ShowInfo();
2402  // //return _PrintCartaPagareEntidadFOX(toPagarePago);
2403  //}
2404  }
2405 
2410  public void _ShowInfo(Boolean tlShow = false)
2411  {
2412  String lcMessage, lcTipo;
2413 
2414  if (_ShowInfoFOX || tlShow)
2415  {
2416  lcTipo = _Exportar ? "exportación" : "impresión";
2417  lcMessage = String.Format("Se ha detectado que la {1} de pagarés está configurada con un formato de impresión antiguo (FRX), que dejará de estar disponible a partir de la versión 50.7720.0 del 24/03/21.{0}{0}Será necesario revisar si los nuevos formatos se adaptan o será necesario algún ajuste adicional.{0}{0}", Environment.NewLine, lcTipo);
2418 
2419  if (_Exportar) lcMessage = String.Format("La exportación no esta disponible con un formato de impresión antiguo (FRX), estos pagarés se imprimirán.{0}{0}", Environment.NewLine);
2420 
2421  switch (_TipoImpresion)
2422  {
2423  case TipoImpresion.CartaPagareEntidad:
2424  lcMessage += "Puede cambiar al nuevo formato de impresión (REPORT) desde la pantalla de “Configuración de Empresa” > opción “Impresión” > pestaña “Contabilidad”.";
2425  break;
2426  default:
2427  lcMessage += "Se recomienda cambiar la configuración al nuevo formato de impresión (REPORT) antes de esa fecha.";
2428  break;
2429  }
2430 
2431  FUNCTIONS._MessageBox(lcMessage, MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, DialogResult.OK);
2432  }
2433  _bPrintedByFox = true;
2434  }
2435 
2439  private Boolean _PrintCartaPagareStandar(PagarePago toPagarePago, Boolean tbImprimirNet = true)
2440  {
2441  return _PrintNET();
2442 
2443  //if (tbImprimirNet)
2444  //{
2445  // return _PrintNET();
2446  //}
2447  //else
2448  //{
2449  // _ShowInfo();
2450  // return _PrintCartaPagareStandarFOX(toPagarePago);
2451  //}
2452  }
2453 
2457  private Boolean _PrintPagareEntidad(PagarePago toPagarePago, Boolean tbImprimirNet = true)
2458  {
2459 
2460  return _PrintNET();
2461 
2462  //if (tbImprimirNet)
2463  //{
2464  // return _PrintNET();
2465  //}
2466  //else
2467  //{
2468  // //_ShowInfo();
2469  // //return _PrintPagareEntidadFOX(toPagarePago);
2470  //}
2471  }
2472 
2473  private bool _PrintCartaPagareEntidadFOX(PagarePago toPagarePago)
2474  {
2475  string lcRetorno = "";
2476  object[] loParametros;
2477 
2478  // Impresión utilizando report de carta pagaré declarado en la entidad del mantenimiento de entidades financieras.
2479  loParametros = new object[7]
2480  {
2481  toPagarePago._Empresa,
2482  toPagarePago._Banco,
2483  toPagarePago._Pagare,
2484  this._FechaEmision,
2485  this._CodigoCarta,
2486  this._Printer,
2487  this._Numero_Copias
2488  };
2489 
2490  lcRetorno = NETVFP._Ejecutar_Funcion_VFP("IMPRIMIR_PAGAREPAGO_REPORT_CARTAENTIDAD_NET", loParametros);
2491 
2492  return true;
2493  }
2494 
2495  private bool _PrintCartaPagareStandarFOX(PagarePago toPagarePago)
2496  {
2497  string lcRetorno = "";
2498  object[] loParametros;
2499 
2500  // Impresión utilizando report de carta standar pagaré declarado en mantenimiento de empresa.
2501  loParametros = new object[7]
2502  {
2503  toPagarePago._Empresa,
2504  toPagarePago._Banco,
2505  toPagarePago._Pagare,
2506  this._FechaEmision,
2507  this._CodigoBanco,
2508  this._Printer,
2509  this._Numero_Copias
2510  };
2511 
2512  lcRetorno = NETVFP._Ejecutar_Funcion_VFP("IMPRIMIR_PAGAREPAGO_REPORT_CARTASTANDAR_NET", loParametros);
2513 
2514  return true;
2515  }
2516 
2517  private bool _PrintPagareEntidadFOX(PagarePago toPagarePago)
2518  {
2519  string lcRetorno = "";
2520  object[] loParametros;
2521 
2522  loParametros = new object[7]
2523  {
2524  toPagarePago._Empresa,
2525  toPagarePago._Banco,
2526  toPagarePago._Pagare,
2527  this._FechaEmision,
2528  this._CodigoEntidad,
2529  this._Printer,
2530  this._Numero_Copias
2531  };
2532 
2533  lcRetorno = NETVFP._Ejecutar_Funcion_VFP("IMPRIMIR_PAGAREPAGO_REPORT_PAGAREENTIDAD_NET", loParametros);
2534 
2535  return true;
2536  }
2537 
2542  protected override String _GetReportName()
2543  {
2544  String lcReportName = "";
2545 
2546  switch (this._TipoImpresion)
2547  {
2548  case TipoImpresion.PagareEntidad:
2549 
2550  DataRow loRow = _GetEntidad(_CodigoEntidad);
2551  lcReportName = loRow is DataRow && Convert.ToBoolean(loRow["TIPO_IMP_PAGARE"]) ? Convert.ToString(loRow["informe"]).Trim() : _ReportBase;
2552  break;
2553 
2554  case TipoImpresion.CartaPagareStandar:
2555 
2556  lcReportName = Convert.ToBoolean(EW_GLOBAL._Empresa._TipoImpresionPagare) ? EW_GLOBAL._Empresa._Pagare?.Trim() : _ReportBase;
2557  break;
2558 
2559  case TipoImpresion.CartaPagareEntidad:
2560 
2561  lcReportName = _Carta._Report;
2562  break;
2563  }
2564 
2565  return String.IsNullOrEmpty(lcReportName.Trim()) ? _ReportBase : lcReportName;
2566  }
2567 
2568  private DataRow _GetEntidad(String tcCodigoEntidad)
2569  {
2570 
2571  DataRow loRow = (from loRowEntidad in _Entidades.AsEnumerable()
2572  where Convert.ToString(loRowEntidad["codigo"]) == tcCodigoEntidad
2573  select loRowEntidad).FirstOrDefault();
2574 
2575  return loRow;
2576  }
2577 
2582  protected override void _ConfigureCustomPath(Report toReport)
2583  {
2584  BaseReportPath loReportPagarePath;
2585 
2586  switch (this._TipoImpresion)
2587  {
2588  case TipoImpresion.PagareEntidad:
2589 
2590  loReportPagarePath = new ReportPagarePath();
2591  break;
2592 
2593  case TipoImpresion.CartaPagareEntidad:
2594  default:
2595 
2596  loReportPagarePath = new ReportPath();
2597  break;
2598  }
2599  toReport._Path = loReportPagarePath;
2600  }
2601 
2606  public Boolean ValidaFicheroCarta()
2607  {
2608  if(_TipoImpresion == TipoImpresion.CartaPagareEntidad && _Carta._TipoCarta == Mail500.TipoCarta.Fichero)
2609  {
2610  if (!File.Exists(_Carta._PathFile))
2611  {
2612  _ErrorMessage = _ErrorMessage = "Revise la configuración de la carta, el fichero indicado no existe.";
2613  return false;
2614  }
2615  else if(_Carta.IsFOXFile())
2616  {
2617  _ErrorMessage = _ErrorMessage = "Revise la configuración de la carta, el fichero indicado no es válido.";
2618  return false;
2619  }
2620  }
2621  return true;
2622  }
2623 
2624  #endregion MÉTODOS PÚBLICOS OVERRIDE
2625  }
2626 }
bool _Desasentar()
Desasentar las previsiones de pago, y gestionar el criterio de Caja
string _CodigoCarta
Codigo de la carta modelo.
Definition: PagarePago.cs:2077
Clase de negocio para las cuentas bancarias (PE-96315)
Boolean _ShowEditMode
PE-103580 Indica si debemos ocultar la edición del report
DocPrint.eFormato_exportacion _FormatoExportacion
DEvuelve el tipo de exportación
String StringFormatNet(decimal tnValue)
Devuelve el valor formateado con la mascara de .Net
Definition: clsEwBase.cs:6311
Clase de negocio base para mantenimientos
Definition: clsEwBase.cs:1643
Clase ReportEtiquetaPath
override void _Load()
Load
bool _Restar_Numero_Pagare()
Resta nº de pagaré de la ficha del banco, si fuera el caso.
Definition: PagarePago.cs:1211
decimal _Numero
Contador de pagarés
Classe empresa basada en sage.ew.ewmante
Definition: clsEmpresa.cs:48
ImpresionNormalMultiple _ImpresionNormalMultiple
Indica el tipo de impresión
string _CodigoEntidad
Código de entidad financiera (mantenimiento de entidades).
Definition: PagarePago.cs:2098
override bool _Print()
Ejecutar la impresión en el formato seleccionado.
Definition: PagarePago.cs:2295
override void _Configurar_obtencion_filtros(ref Dictionary< string, object > toDiccionario)
Configurar parámetros
Definition: PagarePago.cs:2380
int _MaxLinea
Maxima linea asiento. Por defecto el valor siempre es 1
Definition: Asientos.cs:1043
int _Linea
Linea del asiento.
string _Empresa
Código de empresa.
String _CodigoBanco
Codigo del banco (mantenimiento de bancos).
static void _CrearCuentaContable(string tcCodigo, string tcNombre)
Verifica la existencia de la cuenta contable recibida por parámetro y si no existe la crea...
String _Poblacion
Población banco
int _Numero_Copias
Nos indicará el número de copias a imprimir
Definition: DocPrint.cs:650
string _Proveedor
Código de proveedor Contable
override Report _CrearReport()
Override _CrearReport para asignar el nombre del enlace segun el tipo
Definition: PagarePago.cs:2366
virtual DocPrint _Clonar(DocPrint toDocPrint)
Copia la configuración al Docprint pasado
Definition: DocPrint.cs:905
decimal _Haber
Importe en la partida HABER
String _Poblacion
Población del trabajador (465)
DateTime _Fecha_Emision_Origen
Fecha de emisión del pagaré en el momento de la carga del objeto de negocio Pagare ...
Definition: PagarePago.cs:248
ImpresionNormalMultiple _ImpresionNormalMultiple
Indica el tipo de impresión
Definition: DocPrint.cs:497
bool _DesAsentarPagare()
Desasentar pagaré. Borra el asiento del pagaré realizado de forma normal, sin utilizar cuenta efectos...
Definition: PagarePago.cs:1259
ewMascara()
Crea una nueva instancia de la classe ewMascara.
Definition: clsEwBase.cs:6261
static string _CuentasProveedores(string tcSelect="*")
Devuelve la cadena SQL con la consulta sobre PROVEEDORES y/o CUENTAS
int _Numero
Número de asiento.
Definition: Asientos.cs:650
decimal _Cambio
Cotización del asiento. Por defecto el valor siempre es 1
Definition: Asientos.cs:1055
String _Nombre
Nombre del documento
bool _New(eTipoOrigenAsiento teOrigenAsiento=eTipoOrigenAsiento.Defecto)
Nou asiento
Definition: Asientos.cs:1650
void _ShowInfo(Boolean tlShow=false)
Muestra mensaje de información indicando la obselescencia de FOX
Definition: PagarePago.cs:2410
String _CuentaIban
Cuenta bancaria IBAN
PE-96316 Clase utilizada para consultar los datos de mail500
Definition: Mail500.cs:19
override void _ShowDialog()
PE92638 Fa el ShowDialog però abans comprova l&#39;accès al formulari
Clase utilizada para realizar asientos contables.
Definition: Asientos.cs:36
KeyDiccionarioMascara
Clave para diccionario de máscaras
Clase de negocio Proveedor
Definition: Proveedor.cs:33
decimal _Debe
Importe en la partida DEBE
Navegacion
Enumerados para los diferentes tipos de navegación desde el grid
Definition: ArqueoTpv.cs:6046
string _Cuenta
Código de la cuenta
override void _ObtenerConfigurarionOpcionesImpresionMultiple()
REcogemos los valores del UserControl adicional
Definition: PagarePago.cs:2243
PagarePago(string tcEmpresa="", string tcBanco="", string tcPagare="")
Constructor de pagaré de pago para un pagaré concreto.
Definition: PagarePago.cs:442
String _Iban
IBAN (4 dígitos de control de la cuenta IBAN)
Boolean _FieldRandomBackColor
Establece en el modo edición, si pondrá color al fondo de los campos
KeyDiccionarioLenCampos
Clave del diccionario LenCampos
Definition: Diccionarios.cs:11
static DataTable _ObtenerDataTableEntidadesBancarias()
Obtener Datatable con las entidas bancarias
override bool _Save()
Guarda el registro actual
Definition: clsEwBase.cs:4126
Clase abstracta BaseReportPath
_EstadosMantenimiento _Estado
Estado en que se encuentra el registro
Definition: clsEwBase.cs:2968
bool _MostrarExportacionCSV
Indica si muestra la opción de exportar a CSV
bool _ExistePagareEjerPost(ref string tcMensaje)
Verifica si existe el pagaré en un ejercicio posterior al actual.
Definition: PagarePago.cs:1118
DocPrint para pagarés de pago.
Definition: PagarePago.cs:1984
virtual Dictionary< string, object > _Obtener_Filtros_SageReports(Dictionary< string, object > tdicParametros=null)
Implementación del método para contruir informació de filtrado para Sage Reports con infromación la e...
static DataTable _ObtenerDatosEntidadCtaContableBanco(String tcCuentaContableBanco)
A partir de una cuenta contable de banco devuelve los datos de la entidad bancaria.
bool _EnlacePrevisionesPagare(bool tlDesenlazarForzado=false, bool tlCrearNuevaPrevision=false, int tnPeriodo=0, string tcProveedor="", string tcFactura="", int tnOrden=0, int tnPendiente=0, decimal tnImporte=0)
Enlazar/desenlazar las previsiones que hay en el DataTable de previsiones con el pagaré, en función de si está seleccionada la previsión o no.
Definition: PagarePago.cs:1394
bool _FieldRandomBackColor
Propiedad _FieldRandomBackColor
Definition: DocPrint.cs:696
void _Show()
Muestra por pantalla el asiento
Definition: Asientos.cs:2563
eTipoOrigenAsiento
Enumeració per saber d&#39;on ve l&#39;assentament
bool _Print()
Impresión de pagaré de pago.
Definition: PagarePago.cs:1008
override void _Load()
Sobreescritura del método _Load() para pagarés de pago.
Definition: PagarePago.cs:1841
DateTime _MaxFechaEmision
Máxima fecha de emisión.
Definition: PagarePago.cs:2132
string _Divisa
Divisa del asiento.
Definition: Asientos.cs:742
IAsientosLinea _AddLinea()
Add linea
Definition: Asientos.cs:2959
DateTime _FechaEmision
Fecha de emisión
Definition: PagarePago.cs:2149
DataTable _Obtener_Datos_SageReports(Dictionary< string, object > tdicParametros=null)
Obtener los datos del pagare
Definition: PagarePago.cs:1780
Clase para las previsiones de pago de proveedores
String _Serie
Serie para el contador de pagarés
bool _Exportar
Indica si la acción es de exportación
override string _Nombre
Bug 157602
bool _Save()
Método publico para guardar asientos.
Definition: Asientos.cs:1791
ewMascara _MascaraImporte
Máscara de importe
Definition: Divisa.cs:177
override string _Codigo
Campo clave del mantenimiento
string _Proveedor
Código de proveedor
Definition: PagarePago.cs:177
Clase de negocio del mantenimiento de cuentas contables
virtual string _Nombre
Campo nombre del mantenimiento. En este hay que basar los demás campos en las clases heredadas ...
Definition: clsEwBase.cs:2655
Boolean _MostrarOpcionColores
Indica si se debe mostrar la opción para poner colores a las columnas
String _CodigoEntidad
Codigo de entidad bancaria (mantenimiento de entidades, no confundir con mantenimiento de bancos) ...
string _ErrorMessage
Mensajede de error
Definition: DocPrint.cs:339
Boolean _ShowVistaPreliminar
PE-103580 Indica si debemos ocultar la edición del report
decimal _Importe_Origen
Importe del pagaré en el momento de la carga del objeto de negocio Pagare
Definition: PagarePago.cs:292
DataTable _SeleccionarPrevisiones(DateTime tdFEmisionIni, DateTime tdFEmisionFin)
Rellenar el DataTable de previsiones a seleccionar.
Definition: PagarePago.cs:1040
Clase que se utilizará para las lineas de los asientos contables.
String _CodPost
Código Postal del trabajador (465)
void _Show_Asiento()
Nos presenta el asiento de pagaré.
Definition: PagarePago.cs:1073
override bool _Show_Print(int tnAbrirEn=1)
Muestra el formulario de impresión
Definition: PagarePago.cs:2261
DateTime _Fecha_Vencim
Fecha vencimiento del pagaré.
Definition: PagarePago.cs:256
bool _Permite_Delete_Pagare()
Devuelve true si el pagaré que está cargada en el objeto puede ser eliminado.
Definition: PagarePago.cs:1349
override DocPrint _Clonar(DocPrint toDocPrint)
Clonar
Definition: PagarePago.cs:2272
bool _ActualizarCamposPagoEnPrevis(string tcAsi, DateTime tdFechaAsiento)
Actualizar campos de pago en las previsiones de pago que conforman un pagaré. Utilizado desde la actu...
Definition: PagarePago.cs:1497
Dictionary< string, object > _Obtener_Filtros_SageReports(Dictionary< string, object > tdicParametros=null)
Definition: PagarePago.cs:1590
Proporciona características adicionales de las máscaras de Eurowin
Definition: clsEwBase.cs:6212
_EstadosMantenimiento
Declaro un enum para los estados del mantenimiento.
Definition: clsEwBase.cs:1671
String _CuentaBanco
CTABANCO (4 dígitos de la entidad financiera)
Dictionary< string, object > _Obtener_Filtros_SageReports(Dictionary< string, object > tdicParametros=null)
Implementación del método para contruir informació de filtrado para Sage Reports con infromación del ...
Definition: Proveedor.cs:5260
String _Direccion
Dirección banco
Definición de la interfície necesaria para las páginas(tabPage) a utilizar en formularios de tipo For...
Definition: IDocPrint.cs:16
decimal _Cambio
Coeficiente de cambio entre DEBE y DEBEDIV y HABER y HABERDIV
String _TableName
Gets o sets el name de la tabla report
Definition: Report.cs:652
string _GetCif()
Obtener CIF
virtual void _ObtenerConfigurarionOpcionesImpresionMultiple()
Metodo para cargar la configuración del UserControl de multiple impresión
Definition: DocPrint.cs:1879
override bool _Delete()
Borrado de pagaré.
Definition: PagarePago.cs:1913
BaseReportPath _Path
Path base
Definition: Report.cs:436
String _Direccion
Dirección del trabajador (465)
PagarePago()
Constructor de pagaré de pago
Definition: PagarePago.cs:429
string _Factura
Número de factura
DocPrintPagarePago(IDocumentoImprimible loDocumentoImprimible)
Constructor
Definition: PagarePago.cs:2227
Boolean _VistaPreliminar
Indica si la acción es de preview
string _Definicion
Definición de la cuenta.
BindingList< IAsientosLinea > _Lineas
Líneas del asiento
Definition: Asientos.cs:1011
virtual bool _Vista_Preliminar
Nos indicará si se realizará una vista preliminar del documento
Definition: DocPrint.cs:619
decimal _Importe
Importe del pagaré
Definition: PagarePago.cs:282
string _Mascara_Net
Máscara convertida en formato .Net
Definition: clsEwBase.cs:6235
bool _ExisteAsientoEfectosEjerAnt()
Verifica si existe asiento de pagaré utilizando cuentas de efectos en el ejercicio anterior...
Definition: PagarePago.cs:1177
String _Provincia
Provincia del trabajador (465)
String _Telefono
Población del trabajador (465)
Clase de negocio para la DIVISA (Moneda)
Definition: Divisa.cs:76
string _Mensaje_Error
Mensaje de error
Definition: Asientos.cs:881
Clase de negocio para los pagarés de pago (emisión de pagarés de proveedores).
Definition: PagarePago.cs:31
String _CodPost
Código Postal banco
Definición de la interficie que deben cumplir los documentos de cualquier tipo para poder interactuar...
Definition: IDocPrint.cs:376
DateTime _Fecha
Fecha del asiento.
Definition: Asientos.cs:659
String _CuentaDescontados
Cuenta contable para efectos descontados
void _DescartarPrevisionesNoSelec()
Eliminar del DataTable de previsiones del pagaré las que no estén seleccionadas.
Definition: PagarePago.cs:1367
string _Ruta_Fichero
Nos indicará la ruta donde nos guardará el fichero del documento en formato PDF
Definition: DocPrint.cs:665
DocPrintPagarePago.TipoImpresion _TipoImpresion
Nos indica el tipo de recibo
bool _Show_Print(int tnAbrirEn=1)
Definition: PagarePago.cs:1545
TipoCarta
Tipo de carta
Definition: Mail500.cs:26
bool _Delete(bool tlActivarValidaciones)
si se pasa un true al borrar realiza todas la validaciones del borrado como si estuvieras al formular...
Definition: Asientos.cs:2438
DateTime _Fecha_Emision
Fecha de emisión del pagaré.
Definition: PagarePago.cs:223
bool _EditMode
Modo de edición
Definition: DocPrint.cs:681
Boolean ValidaFicheroCarta()
Valida que elfichero exista si el tipo es carta no estandard
Definition: PagarePago.cs:2606
Clase para la impresión de documentos (del tipo que sea)
Definition: DocPrint.cs:33
override void _DescargarDatos()
Descargar datos.
Definition: PagarePago.cs:983
String _Provincia
Provincia banco
override bool _Save_Before()
Evento before antes del _Save()
Definition: PagarePago.cs:1942
UserControl _UserControlAdicional
Control adicional
override void _Load()
Realiza la carga de los datos de la previsión de pago.
virtual String _Printer
C106325 Devuelve la impresora configurada
Definition: DocPrint.cs:530
bool _Exportar
Determina si el documento
Definition: DocPrint.cs:726
void _Clonar(PagarePago toPagare, string tcEmpresa, string tcBanco, string tcPagare)
Ajusta todos los campos internos del pagaré cargado a los valores del objeto Pagarepago recibido como...
Definition: PagarePago.cs:1452
virtual UserControl _UserControlAdicional
Opiones de impresión
Definition: DocPrint.cs:574
eFormato_exportacion _Formato_exportacion
Formato de exportación
Definition: DocPrint.cs:711
PagarePago(DataRow loRow)
Constructor de pagaré de pago a partir de un DataRow con los datos claves de PAGARE_C ...
Definition: PagarePago.cs:465
bool _Cheque
Cheque si/no
Definition: PagarePago.cs:299
bool _ExistePagare(string tcEmpresa, string tcBanco, string tcPagare)
Método para consultar si existe un pagaré concreto en el ejercicio actual.
Definition: PagarePago.cs:1092
string _CodigoBanco
Código de banco (mantenimiento de bancos).
Definition: PagarePago.cs:2115
override void _ConfigureCustomPath(Report toReport)
Definition: PagarePago.cs:2582