frmPago.cs
1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Windows.Forms;
9 using sage.ew.ewbase;
10 using sage.ew.global;
11 using sage.ew.docscompra;
14 
15 // using sage.ew.db;
16 
17 namespace sage.ew.formul.Forms
18 {
22  public partial class frmPago : FormDialog
23  {
24 
25  #region PROPIEDADES PUBLICAS
26 
30  [DefaultValue(null)]
31  public DateTime? _Fecha { get; set; }
35  public string _Banco { get; set; }
39  public string _Operario { get; set; }
43  public string _Fpago { get; set; }
47  public decimal _Cambio { get; set; }
51  public string _Proveedor = "";
55  public bool _lAsiento = false;
59  public PrevisionPago prvPago = null;
60 
61  #endregion
62 
63 
64  #region PROPIEDADES PRIVADAS
65 
66 
67  private string _lcCajaTPV = Convert.ToString(EW_GLOBAL._GetVariable("wc_cajatpv")).Trim();
68  private string _lcOperarioTPV = Convert.ToString(EW_GLOBAL._GetVariable("wc_operariotpv")).Trim();
69  private bool _lNoHacerCambio = false;
70  private string _lcMonedaEmpresa = Convert.ToString(EW_GLOBAL._GetVariable("wc_moneda")).Trim();
71  private DateTime? fechaemision = null;
72 
73  #endregion
74 
75 
76 
77  #region CONSTRUCTORES
78 
82  public frmPago()
83  {
84  InitializeComponent();
85 
86  this._MostrarAccesoFavoritos = false;
87  this._MostrarCrearAccesoDirecto = false;
88  this._MostrarGestionAccesos = false;
89 
90  }
91 
101  public frmPago(string tcProveedor = "", bool tlAsiento = false, PrevisionPago prv = null, string tcBanco = "", bool lbUnica = true, DateTime? tdFechaVencim = null)
102  {
103  InitializeComponent();
104 
105  this._MostrarAccesoFavoritos = false;
106  this._MostrarCrearAccesoDirecto = false;
107  this._MostrarGestionAccesos = false;
108 
109  this._Proveedor = tcProveedor;
110  this._lAsiento = tlAsiento;
111  this.txtBanco._Codigo = "";
112  // CCR 153067: La jerarquía del banco a mostrar por defecto en el momento de realizar la acción de Contabilizar pago,
113  // debe ser primero el banco previsión, luego banco del proveedor y por último banco de la empresa
114  this.txtBanco._Codigo = tcBanco;
115  fechaemision = prv._Fecha_Emision;
116  if (prv != null)
117  {
118  prvPago = prv;
119  prvPago._Fecha_Pago = Convert.ToDateTime(txtFecha.Value);
120  this.divisaDocumentos1._Documento = prv;
121  }
122  prv._Fecha_Vencim = tdFechaVencim;
123 
124  this.divisaDocumentos1.Visible = true;
125  this.divisaDocumentos1._ReadOnlyoCmbDivisa = true;
126  if (this.divisaDocumentos1._Divisa == _lcMonedaEmpresa)
127  {
128  this.divisaDocumentos1.Visible = false;
129  this.ewlabel4.Visible = false;
130  }
131 
132  if (!lbUnica)
133  chkFechaVencim.Visible = false;
134 
135  _ActualizarCambio();
136  }
137 
138  #endregion
139 
140 
141  #region METODOS PRIVADOS
142 
147  protected override void OnShown(EventArgs e)
148  {
149  string lcCtaCobroEfect = Convert.ToString(EW_GLOBAL._GetVariable("wc_ctacobroefec"));
150 
151  base.OnShown(e);
152 
153  if (divisaDocumentos1._Divisa == _lcMonedaEmpresa)
154  {
155  ewfCobro.Top = ewOperario.Top;
156  txtFormaCobro.Top = txtOperario1.Top;
157  ewOperario.Top = ewBanco.Top;
158  txtOperario1.Top = txtBanco.Top;
159  ewBanco.Top = divisaDocumentos1.Top + 5;
160  txtBanco.Top = divisaDocumentos1.Top + 5;
161  }
162 
163  // CCR 153067: La jerarquía del banco a mostrar por defecto en el momento de realizar la acción de Contabilizar pago,
164  // debe ser primero el banco previsión, luego banco del proveedor y por último banco de la empresa
165 
166  // Se ejecuta una sola vez y lo unico que hace es dar valor a txtProveedor._Codigo y al cambiar el valor ya se desencadena el evento que carga la grid con datos.
167  if (string.IsNullOrWhiteSpace(this.txtBanco._Codigo))
168  {
169  Proveedor loProveed = new Proveedor(this._Proveedor);
170  this.txtBanco._Codigo = Convert.ToString(loProveed._Campo("Banco"));
171  }
172 
173  // Inicialment al banco le damos el valor por defecto en la configuracion de empresa.
174  if (string.IsNullOrWhiteSpace(this.txtBanco._Codigo))
175  this.txtBanco._Codigo = lcCtaCobroEfect;
176 
177  if (!string.IsNullOrWhiteSpace(this._lcCajaTPV))
178  {
179  // Trabajamos con TPV y caja activa
180 
181  // Estos controles operario y forma cobro aparecen solo si se trabaja con TPV
182  this.ewOperario.Visible = true;
183  this.txtOperario1.Visible = true;
184  this.ewfCobro.Visible = true;
185  this.txtFormaCobro.Visible = true;
186 
187  //T115774
188  String lcDivisa;
189  lcDivisa = divisaDocumentos1._Divisa;
190  if (String.IsNullOrEmpty(lcDivisa)) lcDivisa = _lcMonedaEmpresa;
191 
192  txtFormaCobro._PrimeraVez = true;
194 
195  // Ponemos la cuenta de caja por defecto de la aplicación
196  this.txtBanco._Codigo = Convert.ToString(EW_GLOBAL._GetVariable("wc_ctacajatpv"));
197 
198  // Operario por dfeecto de TPV
199  this.txtOperario1._Codigo = this._lcOperarioTPV;
200 
201  string lcFormaCobroEfectivo = "";
202  string lcCuentaCobroEfectivo = "";
203 
204  // Miramos si la caja activa tiene forma de cobro efectivo y si la encontramos la ponemos en txtFormaPago y su cuenta de cobro respectiva
205  // la ponemos en txtBanco
206  sage.ew.tpv.FormasCobro loFormaCobro = new sage.ew.tpv.FormasCobro();
207  loFormaCobro._Devolver_Datos_FCobro_Efectivo_Caja_Activa(ref lcFormaCobroEfectivo, ref lcCuentaCobroEfectivo, lcDivisa);
208 
209  if (!string.IsNullOrWhiteSpace(lcCuentaCobroEfectivo))
210  this.txtBanco._Codigo = lcCuentaCobroEfectivo;
211 
212  if (!string.IsNullOrWhiteSpace(lcFormaCobroEfectivo))
213  this.txtFormaCobro._Codigo = lcFormaCobroEfectivo;
214  }
215  else
216  {
217  // Si no estamos en una caja de TPV se oculta el contorl de forma de cobro y operario.
218  this.ewOperario.Visible = false;
219  this.txtOperario1.Visible = false;
220  this.ewfCobro.Visible = false;
221  this.txtFormaCobro.Visible = false;
222 
223  this.Height -= 60;
224  }
225 
226  this.divisaDocumentos1._CambioCotizacion += new objetos.UserControls.DivisaDocumentos._CambioCotizacion_Handler(divisaDocumentos1__CambioCotizacion);
227  this.txtFecha.ValueChanged +=new EventHandler(txtFecha_ValueChanged);
228 
229  }
230 
231  private void divisaDocumentos1__CambioCotizacion(object sender, DivisaEventArgs e)
232  {
233  string divisa = e._Divisa;
234 
235  this.divisaDocumentos1._Divisa = divisa;
236  }
237 
238 
242  private void _ActualizarCambio()
243  {
244  Proveedor loProv = new Proveedor(this._Proveedor);
245 
246  if (this.divisaDocumentos1._Divisa != _lcMonedaEmpresa)
247  {
248  //Cambio
249  decimal ldCambio = loProv._CambioPactado(this.divisaDocumentos1._Divisa, Convert.ToDateTime(this.txtFecha.Value));
250  this.divisaDocumentos1._Cambio = ldCambio;
251  eTipoCambio leTipoCambio = eTipoCambio.Indeterminado;
252  decimal lnValCambio = loProv._CambioPactado(this.divisaDocumentos1._Divisa, Convert.ToDateTime(this.txtFecha.Value), out leTipoCambio);
253  this.divisaDocumentos1._TipoCambio = leTipoCambio;
254  this.divisaDocumentos1._Documento._oDivisa._Codigo = this.divisaDocumentos1._Divisa;
255  this.divisaDocumentos1.oNudCotizaValue = divisaDocumentos1._Cambio;
256  }
257  }
258 
259 
263  private void txtBanco__Codigo_Cambiado()
264  {
265  if (!string.IsNullOrWhiteSpace(this._lcCajaTPV))
266  this.Buscar_FormaPago(false, this.txtBanco._Codigo);
267  }
268 
272  private void txtFormaCobro__Codigo_Cambiado()
273  {
274  if (!string.IsNullOrWhiteSpace(this._lcCajaTPV))
275  this.Buscar_FormaPago(true, this.txtFormaCobro._Codigo);
276  }
277 
283  private void Buscar_FormaPago(bool tlDesde, string tcCodigo)
284  {
285  if (string.IsNullOrWhiteSpace(tcCodigo))
286  return;
287 
288  if (this._lNoHacerCambio)
289  return;
290 
291  if (tlDesde)
292  {
293  // A partir de la forma de cobro se tiene que calcular la cuenta
294  sage.ew.tpv.FormasCobro loFCob = new sage.ew.tpv.FormasCobro();
295  loFCob._Codigo = tcCodigo;
296  loFCob._Load();
297  string lcCuenta = Convert.ToString(loFCob._Campo("cuenta"));
298  if (!string.IsNullOrWhiteSpace(lcCuenta) && !string.IsNullOrWhiteSpace(this.txtBanco._Codigo) && lcCuenta != this.txtBanco._Codigo)
299  {
300  DialogResult loResult = this._MessageBox("La cuenta de pago de esta forma de pago es diferente a la introducida.\n¿ Desea cambiarla ?", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, DialogResult.No);
301  if (loResult == DialogResult.Yes)
302  {
303  this._lNoHacerCambio = true;
304  this.txtBanco._Codigo = lcCuenta;
305  this._lNoHacerCambio = false;
306  }
307  }
308  }
309  else
310  {
311  // A partir de la cuenta se tiene que calcular la forma de cobro
312 
313  // Averiguo la primera forma de cobro que encuentre que tenga como cuenta la declarada.
314  sage.ew.tpv.FormasCobro loFCob = new sage.ew.tpv.FormasCobro();
315  string lcFormaCobro = loFCob._Devolver_FCobro_Cuenta(tcCodigo);
316  string lcCuenta = "";
317  if (!string.IsNullOrWhiteSpace(lcFormaCobro))
318  {
319  this._lNoHacerCambio = true;
320  this.txtFormaCobro._Codigo = lcFormaCobro;
321  this._lNoHacerCambio = false;
322  }
323  else
324  {
325  // Si no se encuentra ninguna forma de cobro con la cuenta declarada, ponemos directamente la forma de cobro de efectivo
326  lcFormaCobro = "";
327  lcCuenta = "";
328 
329  String lcDivisa;
330  lcDivisa = divisaDocumentos1._Divisa;
331  if (String.IsNullOrEmpty(lcDivisa)) lcDivisa = _lcMonedaEmpresa;
332 
333  loFCob._Devolver_Datos_FCobro_Efectivo_Caja_Activa(ref lcFormaCobro, ref lcCuenta, lcDivisa);
334  if (!string.IsNullOrWhiteSpace(lcFormaCobro))
335  {
336  this._lNoHacerCambio = true;
337  this.txtFormaCobro._Codigo = lcFormaCobro;
338  this._lNoHacerCambio = false;
339  }
340 
341  }
342 
343  }
344  }
345 
346  private void txtFecha_ValueChanged(object sender, EventArgs e)
347  {
348  if (chkFechaVencim.Checked && txtFecha.Value != prvPago._Fecha_Vencim)
349  {
350  chkFechaVencim.Checked = false;
351  txtFecha.Value = Convert.ToDateTime(txtFecha.Value);
352  }
353 
354  _ActualizarCambio();
355  }
356 
357 
358  private void btDocCancelar1_Click(object sender, EventArgs e)
359  {
360  _Fecha = null;
361  _Banco = "";
362  _Operario = "";
363  _Fpago = "";
364  _Cambio = 0;
365  prvPago._Fecha_Emision = fechaemision;
366  }
367 
368 
369  private void btDocAceptar1_Click(object sender, EventArgs e)
370  {
371  // Comprobamos que todo esté correcto antes de proceder a asentar.
372  if (!this._Comprobaciones_Previas())
373  {
374  this.DialogResult = DialogResult.None;
375  return;
376  }
377 
378  _Fecha = Convert.ToDateTime(this.txtFecha.Text);
379  _Banco = Convert.ToString(this.txtBanco._Codigo);
380  _Operario = Convert.ToString(this.txtOperario1._Codigo);
381  _Fpago = Convert.ToString(this.txtFormaCobro._Codigo);
382  _Cambio = Convert.ToDecimal(this.divisaDocumentos1._Cambio);
383  }
384 
385 
386  private bool _Comprobaciones_Previas()
387  {
388  bool llOk = true;
389  string lcMensaje = "", lcMensaje2 = "";
390 
391  if (!_lAsiento)
392  {
393  if (string.IsNullOrWhiteSpace(lcMensaje))
394  {
395  if (string.IsNullOrWhiteSpace(txtBanco._Codigo))
396  lcMensaje = "Es necesario especificar la cuenta de banco o caja.";
397  }
398 
399  if (string.IsNullOrWhiteSpace(lcMensaje))
400  {
401  if (!string.IsNullOrWhiteSpace(this._lcCajaTPV) && string.IsNullOrWhiteSpace(this.txtOperario1._Codigo))
402  lcMensaje = "No se ha entrado el operario.";
403  }
404 
405  if (string.IsNullOrWhiteSpace(lcMensaje))
406  {
407  if (!string.IsNullOrWhiteSpace(this._lcCajaTPV) && string.IsNullOrWhiteSpace(this.txtFormaCobro._Codigo))
408  lcMensaje = "No se puede generar el pago si no se introduce la forma de pago.";
409  }
410 
411  if (string.IsNullOrWhiteSpace(lcMensaje))
412  {
413  string lcCuentaBanco = Convert.ToString(EW_GLOBAL._GetVariable("wc_banco"));
414  string lcCuentaCaja = Convert.ToString(EW_GLOBAL._GetVariable("wc_caja"));
415  string lcCuentaEfec_dto = EW_GLOBAL._GetVariable("wc_efec_dto").ToString(); // DEUDAS POR EFECTOS DESCONTADOS
416  string lcCtapuente = EW_GLOBAL._GetVariable("wc_ctapuente").ToString(); // CUENTA PUENTE STANDARD
417 
418  if (txtBanco._Codigo.Substring(0, 2) != lcCuentaBanco.Substring(0, 2) && txtBanco._Codigo.Substring(0, 2) != lcCuentaCaja.Substring(0, 2) &&
419  txtBanco._Codigo.Substring(0, 2) != lcCuentaEfec_dto.Substring(0, 2) && txtBanco._Codigo.Substring(0, 2) != lcCtapuente.Substring(0, 2))
420  lcMensaje2 = "Esta cuenta no pertenece a un banco o caja.\n\n¿ Desea continuar con esta cuenta ?";
421  // Preguntaremos si se da por buena o no, es una caso especial
422  }
423  }
424 
425  llOk = string.IsNullOrWhiteSpace(lcMensaje);
426 
427  if (!llOk)
428  this._MessageBox(lcMensaje, MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, DialogResult.None);
429  else
430  {
431  llOk = string.IsNullOrWhiteSpace(lcMensaje2);
432  if (!llOk)
433  {
434  DialogResult loDlgResult = this._MessageBox(lcMensaje2, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2, DialogResult.None);
435  llOk = (loDlgResult == DialogResult.Yes);
436  }
437  }
438 
439  return llOk;
440  }
441 
442 
443 
444  #endregion
445 
446  private void chkFechaVencim_Click(object sender, EventArgs e)
447  {
448  if (chkFechaVencim.Checked)
449  {
450  txtFecha.Value = Convert.ToDateTime(prvPago._Fecha_Vencim);
451  }
452  else
453  {
454  txtFecha.Value = Convert.ToDateTime(DateTime.Now);
455  }
456  divisaDocumentos1._Documento = prvPago;
457  }
458  }
459 }
string _Codigo
Código seleccionado por el usuario
override object _Campo(string tcNombreCampo)
Override del metodo _Campo para los mantenimientos
Definition: clsEwBase.cs:3443
eTipoCambio
Tipos de cambio de la divisa
Definition: Divisa.cs:39
static decimal _CambioPactado(string tcProveedor, string tcDivisa, DateTime tdtFecha)
Devuelve el cambio que se aplica al proveedor, si tiene un cambio fijado y la fecha límite de cambio ...
Definition: Proveedor.cs:9683
Formulario de petición de fecha de contabilización
Definition: frmPago.cs:22
Definición del txtcodlabel para formas de cobro
Clase de negocio Proveedor
Definition: Proveedor.cs:33
frmPago(string tcProveedor="", bool tlAsiento=false, PrevisionPago prv=null, string tcBanco="", bool lbUnica=true, DateTime? tdFechaVencim=null)
constructor del formulario frmPago(string)
Definition: frmPago.cs:101
string _Devolver_FCobro_Cuenta(string tcCuentaCobro)
Devuelve el código de forma de cobro de tipo efectivo y su cuenta de cobro respectiva, que tiene defenida la caja activa para la empresa activa.
Definition: FormasCobro.cs:336
override void OnShown(EventArgs e)
Sobrecarga del OnShown para configurar el grid, enlazar eventos
Definition: frmPago.cs:147
Clase no visual que nos gestiona les formes de cobro
Definition: FormasCobro.cs:22
bool _PrimeraVez
Propiedad que servirá para que sólo se consulten los datos y formen los grids con datos una vez...
DateTime _Fecha_Vencim
Fecha vencimiento de previsión
Clase para las previsiones de pago de proveedores
Definición del txtcodlabel para cuentas contables de bancos (PE-85500)
virtual string _Codigo
Valor del campo clave que
Definition: clsEwBase.cs:2513
Clase FormDialog basada en FormBase
Definition: FormDialog.cs:17
virtual void _Refresh()
Método para forzar el refresco de los datos mostrados teniendo en cuenta los nuevos valores de las pr...
void _Devolver_Datos_FCobro_Efectivo_Caja_Activa(ref string tcFormaCobro, ref string tcCuentaCobro, String tcDivisa="")
Devuelve el código de forma de cobro de tipo efectivo y su cuenta de cobro respectiva, que tiene defenida la caja activa para la empresa activa.
Definition: FormasCobro.cs:311
Definición txtcodlabel para fechas
Definition: txtFecha.cs:16
DateTime _Fecha_Pago
Fecha de pago
DateTime _Fecha_Emision
Fecha emisión de previsión
Clase de argumentos de respuesta para eventos de divisa
frmPago()
constructor del formulario frmPago
Definition: frmPago.cs:82