2 using System.Collections.Generic;
5 using System.ComponentModel;
28 using System.Linq.Expressions;
30 namespace sage.ew.cliente
67 #region PROPIEDADES PRIVADAS 70 private bool _llNumasiref = Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_numasiref"));
75 internal string _lcUsuario = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_usuario")).Trim().ToUpper() +
"#" + Environment.MachineName.Trim().ToUpper() +
"#" + Environment.UserName.Trim();
81 internal string _lcEmpresa = EW_GLOBAL._GetVariable(
"wc_empresa").ToString().Trim();
87 internal string _lcMonedaEmpresa = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_moneda"));
93 internal string _lcAny = EW_GLOBAL._GetVariable(
"wc_any").ToString().Trim();
99 internal string _lcGrupo = EW_GLOBAL._GetVariable(
"wc_Grupo").ToString().Trim();
111 private bool _llDivisaVentas = Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_divisaventa"));
117 Divisa _loDivMonedaEmpresa = null;
123 private string _cBanco = EW_GLOBAL._GetVariable(
"wc_banco").ToString();
128 private string _cEfec_dto = EW_GLOBAL._GetVariable(
"wc_efec_dto").ToString();
134 private string _cEntrega = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_CtaEnt").ToString());
140 internal string _cBancoIni =
string.Empty;
146 internal string _cBancoFin =
string.Empty;
158 private bool _lSel =
false;
164 private string _cNombre =
"NOMBRE";
170 private string _cObservacion =
"";
176 private string _cOldAsi = String.Empty;
182 private bool _lCobroParcial =
false;
188 internal DateTime? _dFechaIni = null;
194 internal DateTime? _dFechaFin = null;
222 return _Fecha.ToString(EW_GLOBAL._CustomFormatDate);
231 protected internal string lcCampoMoneda =
string.Empty;
238 protected internal string lcCamposMoneda =
string.Empty;
245 protected internal string lcEstado =
string.Empty;
252 protected internal string lcDevuelta =
string.Empty;
259 protected internal string lcAgrupacion =
string.Empty;
266 protected internal string lcRemesa =
string.Empty;
269 #endregion PROPIEDADES PRIVADAS 272 #region PROPIEDADES PUBLICAS 280 public bool _Mostrar_Mensajes =
false;
286 public bool _GenerarDiferenciasCobro
288 get {
return _lForzarDiferenciasCobro; }
289 set { _lForzarDiferenciasCobro = value; }
291 private bool _lForzarDiferenciasCobro =
false;
297 public bool _Linkado =
false;
304 public string _Usuario
306 get {
return Convert.ToString(_Campo(
"USUARIO")); }
307 set { _Campo(
"USUARIO", value); }
315 public string _Empresa
317 get {
return Convert.ToString(_Campo(
"EMPRESA")); }
318 set { _Campo(
"EMPRESA", value); }
326 public string _Factura
330 return Convert.ToString(_Campo(
"FACTURA"));
334 _Campo(
"FACTURA", value);
335 _Campo(
"EMPRESA", _lcEmpresa);
360 public string _Cliente
364 return Convert.ToString(_Campo(
"CLIENTE"));
368 _Campo(
"CLIENTE", value);
370 string lcCliente =
"";
372 lcCliente = FUNCTIONS._Punto_Por_Ceros(value);
373 if (this._oCliente == null)
375 this._oCliente =
new Cliente(lcCliente);
377 else if (lcCliente != this._oCliente._Codigo)
379 this._oCliente._Codigo = lcCliente;
389 public string _ClienteERP
394 if ((this._oCliente == null || this._oCliente._Codigo != _Cliente))
396 this._oCliente =
new Cliente(_Cliente);
399 return Convert.ToString(this._oCliente._ClienteERP);
410 get {
return Convert.ToString(_Campo(
"BANCO")); }
411 set { _Campo(
"BANCO", value); }
419 public string _BancoPrevisto
421 get {
return Convert.ToString(_Campo(
"BANCO_PREV")); }
422 set { _Campo(
"BANCO_PREV", value); }
430 public string _Forma_Pago
432 get {
return Convert.ToString(_Campo(
"F_PAGO")); }
433 set { _Campo(
"F_PAGO", value); }
441 public string _Pagare
443 get {
return Convert.ToString(_Campo(
"PAGARE")); }
444 set { _Campo(
"PAGARE", value); }
452 public string _Concepto
454 get {
return Convert.ToString(_Campo(
"CONCEPTO")); }
455 set { _Campo(
"CONCEPTO", value); }
463 public string _Refundir
465 get {
return Convert.ToString(_Campo(
"REFUNDIR")); }
466 set { _Campo(
"REFUNDIR", value); }
474 public string _Divisa
478 return Convert.ToString(_Campo(
"DIVISA"));
482 if (
string.IsNullOrWhiteSpace(value))
485 _Campo(
"DIVISA", value);
486 _loDivisa._Codigo = value;
493 decimal lnCambio = _oCli.
_CambioPactado(_Divisa, (_Fecha_Emision.HasValue ? _Fecha_Emision.Value : DateTime.Today), out leTipoCambio);
494 _TipoCambio = leTipoCambio;
495 this._Cambio = lnCambio;
506 public string _Vendedor
508 get {
return Convert.ToString(_Campo(
"VENDEDOR")); }
509 set { _Campo(
"VENDEDOR", value); }
517 public string _Cobrador
519 get {
return Convert.ToString(_Campo(
"COBRADOR")); }
520 set { _Campo(
"COBRADOR", value); }
530 get {
return Convert.ToString(_Campo(
"ASI")); }
531 set { _Campo(
"ASI", value); }
539 public string _Mandato
541 get {
return Convert.ToString(_Campo(
"MANDATO")); }
542 set { _Campo(
"MANDATO", value); }
550 public string _Tipade19
552 get {
return Convert.ToString(_Campo(
"TIPADE19")); }
553 set { _Campo(
"TIPADE19", value); }
561 public string _Impreso
563 get {
return Convert.ToString(_Campo(
"IMPRESO")); }
564 set { _Campo(
"IMPRESO", value); }
572 public string _Impago
574 get {
return Convert.ToString(_Campo(
"IMPAGO")); }
575 set { _Campo(
"IMPAGO", value); }
582 [DefaultValue(
false)]
585 get {
return _Impago.ToUpper() ==
"S" ? true :
false; }
594 public new int _Ejercicio
596 get {
return Convert.ToInt32(_Campo(
"PERIODO")); }
597 set { _Campo(
"PERIODO", value); }
605 public int _TipoGasto
607 get {
return Convert.ToInt32(_Campo(
"TIPOGASTO")); }
608 set { _Campo(
"TIPOGASTO", value); }
618 get {
return Convert.ToInt32(_Campo(
"ORDEN")); }
619 set { _Campo(
"ORDEN", value); }
629 get {
return Convert.ToInt32(_Campo(
"IMPAGADO")); }
630 set { _Campo(
"IMPAGADO", value); }
638 public int _Pendiente
640 get {
return Convert.ToInt32(_Campo(
"PENDIENTE")); }
641 set { _Campo(
"PENDIENTE", value); }
651 get {
return Convert.ToInt32(_Campo(
"REMESA")); }
652 set { _Campo(
"REMESA", value); }
660 public int _Num_Banco
662 get {
return Convert.ToInt32(_Campo(
"NUM_BANCO")); }
663 set { _Campo(
"NUM_BANCO", value); }
688 public decimal _Cambio
690 get {
return Convert.ToDecimal(_Campo(
"CAMBIO")); }
691 set { _Campo(
"CAMBIO", value); }
701 get {
return leTipoCambio; }
702 set { leTipoCambio = value; }
711 public decimal _Imppagare
713 get {
return Convert.ToDecimal(_Campo(
"IMPPAGARE")); }
714 set { _Campo(
"IMPPAGARE", value); }
722 public decimal _Importe
724 get {
return Convert.ToDecimal(_Campo(
"IMPORTE")); }
727 if (this._llDivisaVentas ==
false ||
string.IsNullOrWhiteSpace(this._Divisa) || this._Divisa == this._lcMonedaEmpresa)
730 _Campo(
"IMPORTE", value);
731 _Campo(
"IMPORTEDIV", value);
740 if (value != Convert.ToDecimal(_Campo(
"IMPORTE")))
742 this._Error_Message =
"La previsión se generó en moneda diferente a la de la empresa, imposible modificar el importe en moneda de la empresa directamente, debe modificar el importe en divisa.";
743 _Campo(
"IMPORTE", value);
754 public decimal _ImporteDiv
756 get {
return Convert.ToDecimal(_Campo(
"IMPORTEDIV")); }
759 if (this._llDivisaVentas ==
false ||
string.IsNullOrWhiteSpace(this._Divisa) || this._Divisa == this._lcMonedaEmpresa)
762 _Campo(
"IMPORTEDIV", value);
763 _Campo(
"IMPORTE", value);
768 _Campo(
"IMPORTEDIV", value);
771 _Campo(
"IMPORTE", lnImporteMonEmpresa);
781 public DateTime _Fecha
785 return (_Fecha_Emision != null ? _Fecha_Emision.Value : DateTime.Today);
789 _Fecha_Emision = value;
798 public decimal _Entrega
809 decimal _nEntrega = 0;
816 public decimal _EntregaDiv
820 if (_Divisa == EW_GLOBAL._Empresa._Moneda) _nEntregaDiv = _nEntrega;
825 _nEntregaDiv = value;
826 if (_Divisa == EW_GLOBAL._Empresa._Moneda) _nEntrega = value;
829 private decimal _nEntregaDiv = 0;
836 public string _Mensaje_Info_Cambio
838 get {
return _cMensaje_Info_Cambio; }
839 set { _cMensaje_Info_Cambio = value; }
841 private string _cMensaje_Info_Cambio = String.Empty;
847 [DefaultValue(
false)]
850 get {
return Convert.ToBoolean(_Campo(
"ASIENTO")); }
851 set { _Campo(
"ASIENTO", value); }
858 [DefaultValue(
false)]
861 get {
return Convert.ToBoolean(_Campo(
"RECC")); }
862 set { _Campo(
"RECC", value); }
869 [DefaultValue(
false)]
872 get {
return Convert.ToBoolean(_Campo(
"CHEQUE")); }
873 set { _Campo(
"CHEQUE", value); }
880 [DefaultValue(
false)]
881 public bool _CobroAgrup
883 get {
return Convert.ToBoolean(_Campo(
"COBROAGRUP")); }
884 set { _Campo(
"COBROAGRUP", value); }
891 [DefaultValue(
false)]
894 get {
return _lSel; }
895 set { _lSel = value; }
903 public DateTime? _Fecha_Emision
907 object loFecha = _Campo(
"EMISION");
908 if (loFecha != DBNull.Value && loFecha != null)
910 _Campo(
"EMISION", ((DateTime)loFecha).Date);
911 return ((DateTime)loFecha).Date;
916 set { _Campo(
"EMISION", value); }
924 public DateTime? _Fecha_Vencim
928 object loFecha = _Campo(
"VENCIM");
929 if (loFecha != DBNull.Value && loFecha != null)
931 _Campo(
"VENCIM", ((DateTime)loFecha).Date);
932 return ((DateTime)loFecha).Date;
937 set { _Campo(
"VENCIM", value); }
945 public DateTime? _Fecha_Remesa
949 object loFecha = _Campo(
"FECREME");
950 if (loFecha != DBNull.Value && loFecha != null)
952 _Campo(
"FECREME", ((DateTime)loFecha).Date);
953 return ((DateTime)loFecha).Date;
958 set { _Campo(
"FECREME", value); }
966 public DateTime? _Fecha_Operacion
970 object loFecha = _Campo(
"FEC_OPER");
971 if (loFecha != DBNull.Value && loFecha != null)
973 _Campo(
"FEC_OPER", ((DateTime)loFecha).Date);
974 return ((DateTime)loFecha).Date;
979 set { _Campo(
"FEC_OPER", value); }
987 public DateTime? _Fecha_Vencim2
991 object loFecha = _Campo(
"VENCIM2");
992 if (loFecha != DBNull.Value && loFecha != null)
994 _Campo(
"VENCIM2", ((DateTime)loFecha).Date);
995 return ((DateTime)loFecha).Date;
1000 set { _Campo(
"VENCIM2", value); }
1007 [DefaultValue(null)]
1008 public DateTime? _Fecha_Descuento
1012 object loFecha = _Campo(
"FECHADES");
1013 if (loFecha != DBNull.Value && loFecha != null)
1015 _Campo(
"FECHADES", ((DateTime)loFecha).Date);
1016 return ((DateTime)loFecha).Date;
1021 set { _Campo(
"FECHADES", value); }
1028 [DefaultValue(null)]
1029 public DateTime? _Fecha_Cobro
1033 object loFecha = _Campo(
"COBRO");
1034 if (loFecha != DBNull.Value && loFecha != null)
1036 _Campo(
"COBRO", ((DateTime)loFecha).Date);
1037 return ((DateTime)loFecha).Date;
1042 set { _Campo(
"COBRO", value); }
1046 #region PROPIEDADES_IMPAGO 1052 [DefaultValue(
false)]
1053 public bool _ImpagoGastosBancariosContabilizar
1055 get {
return Convert.ToBoolean(_Campo(
"CONTGASTOS")); }
1056 set { _Campo(
"CONTGASTOS", value); }
1063 [DefaultValue(null)]
1064 public DateTime? _ImpagoGastosBancariosFecha
1068 object loFecha = _Campo(
"FEC_GAS");
1069 if (loFecha != DBNull.Value && loFecha != null)
1072 return ((DateTime)loFecha).Date;
1077 set { _Campo(
"FEC_GAS", value); }
1084 [DefaultValue(
"Text")]
1085 public string _ImpagoGastosBancariosDivisa
1089 return Convert.ToString(_Campo(
"DIV_GAS"));
1093 _Campo(
"DIV_GAS", value);
1102 public decimal _ImpagoGastosBancariosCambio
1104 get {
return Convert.ToDecimal(_Campo(
"CAMBIO_GAS")); }
1105 set { _Campo(
"CAMBIO_GAS", value); }
1113 public decimal _ImpagoGastosBancariosImporte
1115 get {
return Convert.ToDecimal(_Campo(
"GASTOS")); }
1116 set { _Campo(
"GASTOS", value); }
1124 public string _ImpagoGastosBancariosCuenta
1126 get {
return Convert.ToString(_Campo(
"CTA_IMPAGO")); }
1127 set { _Campo(
"CTA_IMPAGO", value); }
1134 [DefaultValue(
false)]
1135 public bool _ImpagoNuevaFacturaGenerar
1137 get {
return Convert.ToBoolean(_Campo(
"GENFACTURA")); }
1138 set { _Campo(
"GENFACTURA", value); }
1146 public string _ImpagoNuevaFacturaNumero
1148 get {
return Convert.ToString(_Campo(
"FACGASTOS")); }
1149 set { _Campo(
"FACGASTOS", value); }
1157 public string _ImpagoNuevaFacturaCuenta
1159 get {
return Convert.ToString(_Campo(
"CTAFACTURA")); }
1160 set { _Campo(
"CTAFACTURA", value); }
1168 public string _ImpagoNuevaFacturaTipoIva
1170 get {
return Convert.ToString(_Campo(
"IVAFACTURA")); }
1171 set { _Campo(
"IVAFACTURA", value); }
1178 [DefaultValue(
false)]
1179 public bool _ImpagoNuevaFacturaContabilizar
1181 get {
return Convert.ToBoolean(_Campo(
"CONT_FACT")); }
1182 set { _Campo(
"CONT_FACT", value); }
1189 [DefaultValue(
false)]
1190 public bool _ImpagoRepercutirGastos
1192 get {
return Convert.ToBoolean(_Campo(
"REPGASTOS")); }
1193 set { _Campo(
"REPGASTOS", value); }
1201 public decimal _ImpagoRepercutirImporte
1203 get {
return Convert.ToDecimal(_Campo(
"REPIMPORTE")); }
1204 set { _Campo(
"REPIMPORTE", value); }
1211 [DefaultValue(
false)]
1212 public bool _ImpagoRepercutirFacturaGenerar
1214 get {
return Convert.ToBoolean(_Campo(
"GENREPFACT")); }
1215 set { _Campo(
"GENREPFACT", value); }
1223 public string _ImpagoRepercutirTipoIva
1225 get {
return Convert.ToString(_Campo(
"IVAREPFACT")); }
1226 set { _Campo(
"IVAREPFACT", value); }
1234 public string _ImpagoRepercutirCuenta
1236 get {
return Convert.ToString(_Campo(
"CTAREPFACT")); }
1237 set { _Campo(
"CTAREPFACT", value); }
1241 #endregion PROPIEDADES_IMPAGO 1248 public string _Observacion
1250 get {
return _cObservacion; }
1251 set { _cObservacion = value; }
1258 public bool _Cobrada
1262 return _Banco !=
"";
1270 public decimal _CambioDivisaCobro
1274 decimal lnCambio = 0M;
1280 if (loAsiento != null)
1300 if (_oDocPrint == null)
1303 _oDocPrint.
_Numero_Copias = Convert.ToInt32(EW_GLOBAL._diccionarioCfgFact.GetValue(
"recibos"));
1312 _oDocPrint.
_Numero_Copias = Convert.ToInt32(EW_GLOBAL._diccionarioCfgFact.GetValue(
"recibos"));
1321 public string _ReportBase
1337 public string _ReportTitlePreview
1353 public object _Numereb {
get;
private set; }
1360 public string _Referencia
1362 get {
return Convert.ToString(_Campo(
"REFERENCIA")); }
1363 set { _Campo(
"REFERENCIA", value); }
1371 public string _SIIFraMod
1373 get {
return Convert.ToString(_Campo(
"SIIFRAMOD")); }
1374 set { _Campo(
"SIIFRAMOD", value); }
1378 #endregion PROPIEDADES PUBLICAS 1381 #region PROPIEDADES PUBLIC OVERRIDE 1387 public override string _Nombre
1389 get {
return this._cNombre; }
1392 this._cNombre = value;
1397 #endregion PROPIEDADES PUBLIC OVERRIDE 1400 #region CONSTRUCTORES 1409 if (EW_GLOBAL._Moneda != null)
1410 this._loDivMonedaEmpresa = EW_GLOBAL.
_Moneda;
1412 this._loDivMonedaEmpresa =
new Divisa(Convert.ToString(EW_GLOBAL._GetVariable(
"wc_moneda")));
1418 this._Browser_Titulos_Campos =
"Ejercicio, Factura, Orden, Emisión, Importe, Importe divisa, Divisa, Remesa, Pagaré, Cliente, Nombre";
1422 this._Browser_Titulos_Campos =
"Ejercicio, Estado, Devuelta, Factura, Orden, F.Emisión, F.Vencimiento, F.Cobro, Importe, Importe divisa, Divisa, Cliente, Nombre, Remesa, Pagaré, Agrupación, F.Pago, Nombre F.Pago, Banco previsto, Banco cobro, Concepto, Referencia, Nº Fra. Expedición";
1425 lcCampoMoneda =
"RTRIM(LTRIM(m.nombre)) + (case when m.SIMBOLO <> '' then ' (' + RTRIM(LTRIM(m.SIMBOLO)) + ')' else (case when m.ABREV <> '' then ' (' + RTRIM(LTRIM(m.ABREV)) + ')' else '' end) end) as DIVISA";
1426 lcCamposMoneda =
" p.IMPORTEDIV, " + lcCampoMoneda;
1437 lcEstado = DB.SQLIif(
"p.refundir != ''",
1439 DB.SQLIif(
"p.cobro IS NULL AND p.banco = '' AND p.refundir = ''",
1441 DB.SQLIif(
"((p.cobro IS NOT NULL AND p.impagado = 0 AND p.banco != '' AND p.refundir = '') OR " +
1442 "(p.cobro IS NULL AND p.impagado = 0 AND p.banco != '' AND p.refundir = ''))",
1448 lcDevuelta = DB.SQLIif(
"p.impagado = '0' AND p.impago = 'S'",
"'Sí'",
"''") +
" as devuelta, ";
1452 lcAgrupacion = DB.SQLNvl(
"p.refundir",
"''") +
" as agrupacion, ";
1455 string lcColumnaEsquema = DB.SQLIif(
"max(c.tiporemesa)=0",
"'Ninguno'", DB.SQLIif(
"max(c.tiporemesa)=1",
"'Core'", DB.SQLIif(
"max(c.tiporemesa)=2",
"'B2b'",
"'Cor1'"))) +
" as esquema, ";
1457 lcRemesa = DB.SQLIif(
"p.REMESA= 0",
"CAST('' AS nvarchar)",
"CAST(" +
"p.remesa" +
" AS nvarchar)") +
" as remesa, ";
1462 _Browser_Campos =
"p.PERIODO,p.FACTURA,p.ORDEN,p.EMISION,p.IMPORTE, " + lcCamposMoneda + lcRemesa +
" ,p.PAGARE, c.CLIENTEERP," + DB.SQLNvl(
"c.nombre",
"''") +
" as nombre , p.CLIENTE";
1463 _Browser_Campos_No_Visibles =
"EMPRESA,IMPAGADO,PENDIENTE,CLIENTE,m.codigo as ___divisa_codigo, m.grantotal as ___divisa_mascara ";
1467 _Browser_Campos =
"p.PERIODO, " + lcEstado + lcDevuelta +
"p.FACTURA,p.ORDEN, CAST(p.EMISION as date) as emision, CAST(p.vencim as date) as vencim, CAST(p.cobro as date) as cobro, p.IMPORTE, " + lcCamposMoneda +
", p.CLIENTE," + DB.SQLNvl(
"c.nombre",
"''") +
" as nombre, " + lcRemesa +
"p.PAGARE, " + lcAgrupacion +
" p.f_pago," + DB.SQLNvl(
"f.nombre",
"''") +
" as nomfpag, p.banco_prev, p.banco, p.concepto, p.referencia, p.siiframod";
1468 _Browser_Campos_No_Visibles =
"EMPRESA,IMPAGADO,PENDIENTE,m.codigo as ___divisa_codigo, m.grantotal as ___divisa_mascara ";
1470 _Browser_Campo_Predet =
"FACTURA";
1471 _Browser_Tabla =
"previ_cl p left join " + DB.SQLDatabase(
"gestion",
"clientes") +
" c on p.cliente = c.codigo " +
"LEFT JOIN " + DB.SQLDatabase(
"gestion",
"moneda") +
" m ON p.divisa=m.codigo " +
" LEFT JOIN " + DB.SQLDatabase(
"GESTION",
"FPAG") +
" f ON p.f_pago = f.codigo ";
1472 _Browser_Clave =
"EMPRESA,PERIODO,FACTURA,ORDEN,IMPAGADO,PENDIENTE";
1473 _Browser_Condicion =
"EMPRESA = '" + Convert.ToString(_lcEmpresa) +
"' AND IMPAGADO = 0 ";
1484 public PrevisionCobro(
string tcEmpresa =
"",
int tnEjercicio = 0,
string tcFactura =
"",
int tnOrden = 0,
int tnImpagado = 0,
int tnPendiente = 0)
1486 if (
string.IsNullOrWhiteSpace(tcEmpresa) || tnEjercicio == 0 ||
string.IsNullOrWhiteSpace(tcFactura))
1488 this.Gestionar_Mensaje(
"Parámetros incorrectos.",
"Constructor");
1493 if (EW_GLOBAL._Moneda != null)
1494 this._loDivMonedaEmpresa = EW_GLOBAL.
_Moneda;
1496 this._loDivMonedaEmpresa =
new Divisa(Convert.ToString(EW_GLOBAL._GetVariable(
"wc_moneda")));
1498 this.Establecer_Clave();
1502 this._Impagado = tnImpagado;
1503 this._Pendiente = tnPendiente;
1506 this._Empresa = tcEmpresa;
1507 this._Ejercicio = tnEjercicio;
1508 this._Orden = tnOrden;
1513 this._Factura = tcFactura;
1524 string lcEmpresa = Convert.ToString(loRow[
"empresa"]);
1525 string lcFactura = Convert.ToString(loRow[
"factura"]);
1526 int lnEjercicio = Convert.ToInt32(loRow[
"periodo"]);
1527 int lnOrden = Convert.ToInt32(loRow[
"orden"]);
1528 int lnImpagado = Convert.ToInt32(loRow[
"impagado"]);
1529 int lnPendiente = Convert.ToInt32(loRow[
"pendiente"]);
1531 if (
string.IsNullOrWhiteSpace(lcEmpresa) || lnEjercicio == 0 ||
string.IsNullOrWhiteSpace(lcFactura))
1533 this.Gestionar_Mensaje(
"Parámetros incorrectos.",
"Constructor");
1539 if (EW_GLOBAL._Moneda != null)
1540 this._loDivMonedaEmpresa = EW_GLOBAL.
_Moneda;
1542 this._loDivMonedaEmpresa =
new Divisa(Convert.ToString(EW_GLOBAL._GetVariable(
"wc_moneda")));
1545 this.Establecer_Clave();
1549 this._Impagado = lnImpagado;
1550 this._Pendiente = lnPendiente;
1553 this._Empresa = lcEmpresa;
1554 this._Ejercicio = lnEjercicio;
1555 this._Orden = lnOrden;
1560 this._Factura = lcFactura;
1566 #endregion CONSTRUCTORES 1569 #region MÉTODOS PROTECTED OVERRIDE 1582 #endregion MÉTODOS PROTECTED OVERRIDE 1585 #region METODOS PUBLICOS 1594 return _SetImpreso(
"S");
1604 return _SetImpreso(
"N");
1611 public void _Print(Boolean tlPresentarPantalla =
false)
1614 if (_Show_Print()) _DocPrint._Print();
1648 if (loForm.DialogResult == DialogResult.OK)
1667 FUNCTIONS._MessageBox(
"No se ha establecido el fichero del Report", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, DialogResult.OK);
1684 return new Dictionary<string, object>();
1707 bool llRetorno =
true;
1708 string lcEmpresa = _lcEmpresa;
1709 string lcRemeEmitida =
"";
1711 DataTable ldtResul =
new DataTable();
1713 this._Addons_Permite_Delete_Prevision(
TipoExecute.Before);
1718 string[] laCampos =
new string[2] {
"empresa",
"numero" };
1719 object[] laValores =
new object[2] { lcEmpresa, _Remesa };
1721 lcRemeEmitida = Convert.ToString(DB.SQLValor(
"remesa", laCampos, laValores,
"emesa",
"gestion"));
1723 if (lcRemeEmitida ==
"S")
1725 _Mostrar_Mensajes =
true;
1726 Gestionar_Mensaje(
"La previsión seleccionada esta incluida en la remesa " + Convert.ToString(_Remesa).Trim() +
" que ya está cerrada y no puede borrarse.",
"_Permite_Delete_Prevision");
1727 _Mostrar_Mensajes =
false;
1732 _Mostrar_Mensajes =
true;
1733 Gestionar_Mensaje(
"La previsión seleccionada esta incluida en la remesa " + Convert.ToString(_Remesa).Trim() +
" y no puede borrarse.",
"_Permite_Delete_Prevision");
1734 _Mostrar_Mensajes =
false;
1742 if (!
string.IsNullOrWhiteSpace(_Pagare))
1744 _Mostrar_Mensajes =
true;
1745 Gestionar_Mensaje(
"La previsión seleccionada esta incluida en el pagaré " + _Pagare.Trim() +
" y no puede borrarse.",
"_Permite_Delete_Prevision");
1746 _Mostrar_Mensajes =
false;
1756 _Mostrar_Mensajes =
true;
1757 Gestionar_Mensaje(
"Esta previsión procede de una factura acogida al Régimen Especial de Criterio de Caja y no se podrá eliminar.",
"_Permite_Delete_Prevision");
1758 _Mostrar_Mensajes =
false;
1766 if (_Refundir !=
"")
1768 _Mostrar_Mensajes =
true;
1769 Gestionar_Mensaje(
"La previsión que intenta borrar está incluida de una agrupación de previsiones. Para eliminarla, debe ir a la pantalla de agrupación manual de previsiones, " +
1770 "seleccionarla, y anular la agrupación.",
"_Permite_Delete_Prevision");
1771 _Mostrar_Mensajes =
false;
1775 bool llAgrup =
false;
1776 string lcConcepto = _Concepto.Trim();
1777 if (!
string.IsNullOrWhiteSpace(lcConcepto))
1778 llAgrup = lcConcepto.IndexOf(
"FRAS") >= 0;
1782 bool llSerfact = Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_serfact"));
1785 if (_Factura.Substring(0, 2) ==
"A0")
1790 if (_Factura.ToString().Trim().Substring(0, 1) ==
"A")
1796 if (_Factura.Trim().Substring(0, 1) ==
"A" && llAgrup)
1798 string lcSql =
"select factura " +
1799 "from " + DB.SQLDatabase(
"comunes",
"previ_cl") +
" " +
1800 "where empresa = " + DB.SQLString(lcEmpresa) +
" " +
1801 "and refundir = " + DB.SQLString(_Factura);
1802 llOk = DB.SQLExec(lcSql, ref ldtResul);
1804 if (llOk && ldtResul.Rows.Count > 0)
1806 _Mostrar_Mensajes =
true;
1807 Gestionar_Mensaje(
"La previsión que intenta borrar es una agrupación de previsiones. Para eliminarla, debe ir a la pantalla de agrupación manual de previsiones, " +
1808 "seleccionarla y anular la agrupación.",
"_Permite_Delete_Prevision");
1809 _Mostrar_Mensajes =
false;
1819 if (_Asiento && !
string.IsNullOrWhiteSpace(_Asi))
1823 string lcSql =
"select numero " +
1824 "from " + DB.SQLDatabase(
"gestion",
"asientos") +
" " +
1825 "where empresa = " + DB.SQLString(lcEmpresa) +
" " +
1826 "and asi = " + DB.SQLString(_Asi);
1827 llOk = DB.SQLExec(lcSql, ref ldtResul);
1829 if (llOk && ldtResul.Rows.Count > 0)
1831 _Mostrar_Mensajes =
true;
1832 Gestionar_Mensaje(
"La previsión que intenta borrar está contabilizada en el asiento " + ldtResul.Rows[0][
"numero"].ToString().Trim(),
"_Permite_Delete_Prevision");
1833 _Mostrar_Mensajes =
false;
1844 if (_Impagado ==
'S')
1846 _Mostrar_Mensajes =
true;
1847 Gestionar_Mensaje(
"No se puede borrar la previsión por que está cobrada e impagada.",
"_Permite_Delete_Prevision");
1848 _Mostrar_Mensajes =
false;
1852 if (llRetorno && _Fecha_Cobro != null && Convert.ToDateTime(_Fecha_Cobro).Year != Convert.ToInt16(_lcAny))
1854 _Mostrar_Mensajes =
true;
1855 Gestionar_Mensaje(
"No se puede borrar la previsión por que está cobrada y pertenece a otro ejercicio.",
"_Permite_Delete_Prevision");
1856 _Mostrar_Mensajes =
false;
1862 FUNCTIONS._DisposeDatatable(ldtResul);
1864 this._Addons_Permite_Delete_Prevision(
TipoExecute.After);
1885 if ((cmb._Codigo != tcValorCandidato) && (cmb._Codigo == EW_GLOBAL._Moneda._Codigo) && (tcValorCandidato != EW_GLOBAL._Moneda._Codigo) && (!String.IsNullOrWhiteSpace(_Mandato.ToString())))
1887 tcMensaje =
"Para modificar la divisa de la previsión se debe desasignar el mandato asignado";
1907 public void _Clonar(
PrevisionCobro toPrevision,
string tcEmpresa,
int tnEjercicio,
string tcFactura,
int tnOrden,
int tnImpagado = 0,
int tnPendiente = 0)
1911 this._Addons_Clonar(
TipoExecute.Before, toPrevision, tcEmpresa, tnEjercicio, tcFactura, tnOrden, tnImpagado, tnPendiente);
1913 if (toPrevision._oCli != null)
1914 this._oCli = toPrevision._oCli.
_Clonar();
1917 this._Impagado = tnImpagado;
1918 this._Pendiente = tnPendiente;
1919 this._Empresa = tcEmpresa;
1920 this._Factura = tcFactura;
1921 this._Orden = tnOrden;
1922 this._Ejercicio = tnEjercicio;
1924 this._Cliente = toPrevision.
_Cliente;
1925 this._Banco = toPrevision.
_Banco;
1928 this._Pagare = toPrevision.
_Pagare;
1930 this._Divisa = toPrevision.
_Divisa;
1936 this._Asi = toPrevision.
_Asi;
1937 this._Mandato = toPrevision.
_Mandato;
1938 this._Impreso = toPrevision.
_Impreso;
1939 this._Impago = toPrevision.
_Impago;
1942 this._Remesa = toPrevision.
_Remesa;
1944 this._Asiento = toPrevision.
_Asiento;
1945 this._Recc = toPrevision.
_Recc;
1946 this._Sel = toPrevision.
_Sel;
1956 this._Cambio = toPrevision.
_Cambio;
1958 this._Importe = toPrevision.
_Importe;
1960 this._Usuario = toPrevision.
_Usuario;
1962 this._Guid_Id = Guid.NewGuid().ToString().ToUpper();
1984 this._Addons_Clonar(
TipoExecute.After, toPrevision, tcEmpresa, tnEjercicio, tcFactura, tnOrden, tnImpagado, tnPendiente);
1986 catch (Exception loEx)
1988 DB.Registrar_Error(loEx);
2003 public bool _Contabilizar(Dictionary<string, decimal> tdicCobros, DateTime tdFecha, decimal tnCambio,
Asientos toAsiento = null)
2005 this._Addons_Contabilizar(
TipoExecute.Before, tdicCobros, tdFecha, tnCambio, toAsiento);
2007 Dictionary<string, Tuple<decimal, List<Tuple<decimal, string, string>>>> lDicCobrosComisiones =
new Dictionary<string, Tuple<decimal, List<Tuple<decimal, string, string>>>>();
2009 foreach (KeyValuePair<string, decimal> loItem
in tdicCobros)
2011 var loListComisiones =
new List<Tuple<decimal, string, string>>();
2012 var loTupleValor =
new Tuple<decimal, List<Tuple<decimal, string, string>>>(loItem.Value, loListComisiones);
2013 lDicCobrosComisiones.Add(loItem.Key, loTupleValor);
2016 bool llOk = _Contabilizar(lDicCobrosComisiones, tdFecha, tnCambio, toAsiento);
2018 this._Addons_Contabilizar(
TipoExecute.After, tdicCobros, tdFecha, tnCambio, toAsiento);
2032 public bool _Contabilizar(Dictionary<
string, Tuple<decimal, List<Tuple<decimal, string, string>>>> tdicCobros, DateTime tdFecha, decimal tnCambio,
Asientos toAsiento = null)
2036 decimal lnImporteEntrega = 0;
2038 this._Addons_Contabilizar(
TipoExecute.Before, tdicCobros, tdFecha, tnCambio, toAsiento);
2040 foreach (KeyValuePair<
string, Tuple<decimal, List<Tuple<decimal, string, string>>>> loItem
in tdicCobros)
2042 lnImporteEntrega = lnImporteEntrega + loItem.Value.Item1;
2045 llOk = Contabilizar_Comprobacion(tdFecha, lnImporteEntrega);
2050 if (toAsiento == null)
2061 loAsiento = toAsiento;
2080 if (loAsiento._Lineas.Count <= 0)
2082 loLineaAsiento1 = loAsiento._AddLinea();
2084 loLineaAsiento1.
_Cuenta = _Cliente;
2085 loLineaAsiento1.
_Definicion =
"Cobro FRA. " + _Factura.Trim() +
"/" + _Orden.ToString().Trim();
2087 if (!
string.IsNullOrWhiteSpace(this._Referencia))
2092 loLineaAsiento1 = loAsiento._Lineas.First();
2095 if (loAsiento._Divisa == EW_GLOBAL._Empresa._Moneda)
2098 loLineaAsiento1.
_Haber += lnImporteEntrega;
2102 loLineaAsiento1.
_HaberDiv += lnImporteEntrega;
2105 foreach (KeyValuePair<
string, Tuple<decimal, List<Tuple<decimal, string, string>>>> loItem
in tdicCobros)
2107 decimal lnImporteCuenta = loItem.Value.Item1;
2109 if (loItem.Value.Item2 != null && loItem.Value.Item2.Count > 0)
2111 foreach (Tuple<decimal, string, string> loComision
in loItem.Value.Item2)
2115 loLineaAsientoComis.
_Cuenta = loComision.Item3;
2116 loLineaAsientoComis.
_Definicion =
"COMISIONES " + loComision.Item3;
2117 if (loAsiento._Divisa == EW_GLOBAL._Empresa._Moneda)
2119 loLineaAsientoComis.
_Debe = loComision.Item1;
2120 loLineaAsientoComis.
_Cambio = 1;
2125 loLineaAsientoComis.
_Cambio = _Cambio;
2127 lnImporteCuenta = lnImporteCuenta - loComision.Item1;
2129 if (!
string.IsNullOrWhiteSpace(this._Referencia))
2130 loLineaAsientoComis.
_Referencia = this._Referencia;
2134 if (
string.IsNullOrWhiteSpace(_Banco)) _Banco = loItem.Key;
2138 loLineaAsiento2.
_Cuenta = loItem.Key;
2139 loLineaAsiento2.
_Definicion =
"Cobro FRA. " + _Factura.Trim() +
"/" + _Orden.ToString().Trim();
2141 if (loAsiento._Divisa == EW_GLOBAL._Empresa._Moneda)
2143 loLineaAsiento2.
_Debe = lnImporteCuenta;
2150 loLineaAsiento2.
_Cambio = _Cambio;
2152 loLineaAsiento2.
_DebeDiv = lnImporteCuenta;
2153 loLineaAsiento2.
_Cambio = _Cambio;
2155 if (!
string.IsNullOrWhiteSpace(this._Referencia))
2160 if (toAsiento == null)
2162 if (!loAsiento._Save())
2164 string lcMensaje = loAsiento._Mensaje_Error.Substring(loAsiento._Mensaje_Error.Trim().Length - 1, 1) ==
"." ?
"" :
".";
2165 lcMensaje = loAsiento._Mensaje_Error + lcMensaje;
2168 FUNCTIONS._MessageBox(
"No se ha contabilizado la previsión. " + Environment.NewLine + lcMensaje, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, DialogResult.OK);
2170 _Error_Message =
"No se ha contabilizado la previsión. " + lcMensaje;
2176 _GeneraDiferenciasCambio(tdFecha, lnImporteEntrega, tnCambio, _GenerarDiferenciasCobro);
2184 _Fecha_Cobro = tdFecha;
2185 _Asi = loAsiento._Lineas[0]._Asi.Trim();
2188 llOk = Contabilizar_Duplicar_Prevision(lnImporteEntrega);
2190 this._Addons_Contabilizar(
TipoExecute.After, tdicCobros, tdFecha, tnCambio, toAsiento);
2205 if (tnCambio != _Cambio && (tlForzar || DialogResult.Yes == Gestionar_Pregunta(
string.Format(
"Se han detectado diferencias de cambio.{0}¿Desea contabilizar dichas diferencias?", Environment.NewLine), MessageBoxButtons.YesNo, DialogResult.No)))
2212 List<IAsientosPrevisionesGeneradorLinea> loList =
new List<IAsientosPrevisionesGeneradorLinea>();
2217 _CuentaBancaria = _Banco,
2218 _DefinicionAsiento =
"DIFERENCIAS DE CAMBIO COBRO FRA. " + _Factura.Trim() +
"/" + _Orden.ToString(),
2220 _Factura = _Factura,
2221 _Orden_Numereb = _Orden,
2222 _Entrega = lnImporteEntrega,
2224 _Importe = _Importe,
2225 _Emision = _Fecha_Emision,
2227 _Periodo = _Ejercicio,
2228 _Pendiente = _Pendiente,
2229 _Vencimiento = _Fecha_Vencim,
2231 _CambioPrevision = _Cambio,
2232 _Referencia = _Referencia
2238 loAsientoDif.
_Fecha = tdFecha;
2239 loAsientoDif.
_Save();
2256 if (tnCambio != _Cambio && (tlForzar || DialogResult.Yes == Gestionar_Pregunta(
string.Format(
"Se han detectado diferencias de cambio.{0}¿Desea contabilizar dichas diferencias?", Environment.NewLine), MessageBoxButtons.YesNo, DialogResult.No)))
2261 loLin.
_DefinicionAsiento =
"DIFERENCIAS DE CAMBIO COBRO FRA. " + _Factura.Trim() +
"/" + _Orden.ToString();
2288 string CuentaCliente =
string.Empty;
2290 CuentaCliente = Convert.ToString(DB.SQLValor(
"CUENTAS",
"CODIGO",
Cliente,
"CODIGO"));
2292 if (
string.IsNullOrWhiteSpace(CuentaCliente))
2294 _Error_Message =
"No se ha contabilizado la previsión porque no existe la cuenta contable: " +
Cliente.ToString();
2311 this._Addons_Contabilizar(
TipoExecute.Before, tcBanco, tdFecha, tnImporteEntrega, toAsiento);
2313 bool llOk = _Contabilizar(tcBanco, tdFecha, tnImporteEntrega, _Cambio, toAsiento);
2315 this._Addons_Contabilizar(
TipoExecute.After, tcBanco, tdFecha, tnImporteEntrega, toAsiento);
2334 public bool _Contabilizar(
string tcBanco, DateTime tdFecha, decimal tnImporteEntrega, decimal tnCambio,
Asientos toAsiento = null,
bool tlGroup =
false,
bool tlIdenticoClien =
false)
2337 string lcSql =
string.Empty;
2340 this._Addons_Contabilizar(
TipoExecute.Before, tcBanco, tdFecha, tnImporteEntrega, tnCambio, toAsiento, tlGroup);
2342 llOk = Contabilizar_Comprobacion(tdFecha, tnImporteEntrega);
2347 string lcNomCliente =
string.Empty;
2348 if (_oCliente == null)
2349 lcNomCliente = Convert.ToString(DB.SQLValor(
"CLIENTES",
"CODIGO", _Cliente,
"NOMBRE"));
2351 lcNomCliente = Convert.ToString(_oCliente._Campo(
"nombre"));
2353 if (toAsiento == null)
2362 loAsiento = toAsiento;
2370 if (loAsiento.
_Lineas.Count <= 0)
2372 loLineaAsiento1 = loAsiento.
_AddLinea();
2374 loLineaAsiento1.
_Cuenta = tcBanco;
2376 loLineaAsiento1.
_Definicion =
"Cobro FRA. " + _Factura.Trim() +
"/" + _Orden.ToString().Trim() +
" " + lcNomCliente;
2378 loLineaAsiento1.
_Definicion = (tlIdenticoClien ?
"COBROS DE " + lcNomCliente :
"COBROS DEL DIA");
2380 loLineaAsiento1.
_Cambio = tnCambio;
2381 loLineaAsiento1.
_Haber = decimal.Zero;
2382 loLineaAsiento1.
_HaberDiv = decimal.Zero;
2384 if (tlIdenticoClien)
2390 if (!
string.IsNullOrWhiteSpace(_Referencia))
2395 loLineaAsiento1 = loAsiento.
_Lineas.First();
2398 if (loAsiento.
_Divisa == EW_GLOBAL._Empresa._Moneda)
2400 loLineaAsiento1.
_Debe += tnImporteEntrega;
2404 loLineaAsiento1.
_DebeDiv += tnImporteEntrega;
2414 loLineaAsiento2.
_Cuenta = _Cliente;
2415 loLineaAsiento2.
_Definicion =
"Cobro FRA. " + _Factura.Trim() +
"/" + _Orden.ToString().Trim();
2416 loLineaAsiento2.
_Cambio = tnCambio;
2417 loLineaAsiento2.
_Debe = decimal.Zero;
2418 loLineaAsiento2.
_DebeDiv = decimal.Zero;
2420 if (loAsiento.
_Divisa == EW_GLOBAL._Empresa._Moneda)
2422 loLineaAsiento2.
_Haber = tnImporteEntrega;
2426 loLineaAsiento2.
_HaberDiv = tnImporteEntrega;
2432 if (!
string.IsNullOrWhiteSpace(_Referencia))
2437 if (toAsiento == null)
2439 if (!loAsiento.
_Save())
2445 FUNCTIONS._MessageBox(
"No se ha contabilizado la previsión. " + Environment.NewLine + lcMensaje, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, DialogResult.OK);
2447 _Error_Message =
"No se ha contabilizado la previsión. " + lcMensaje;
2452 _GeneraDiferenciasCambio(tdFecha, tnImporteEntrega, tnCambio, _GenerarDiferenciasCobro);
2457 _Fecha_Cobro = tdFecha;
2458 _Asi = loAsiento.
_Lineas.First()._Asi.Trim();
2460 llOk = Contabilizar_Duplicar_Prevision(tnImporteEntrega);
2462 _Addons_Contabilizar(
TipoExecute.After, tcBanco, tdFecha, tnImporteEntrega, tnCambio, toAsiento, tlGroup);
2480 _Fecha_Cobro = tdFecha;
2497 public bool _Contabilizar(
string tcBanco, DateTime tdFecha, decimal tnImporteEntrega,
string tcAsi)
2499 if (!Contabilizar_Comprobacion(tdFecha, tnImporteEntrega))
2502 this._Addons_Contabilizar(
TipoExecute.Before, tcBanco, tdFecha, tnImporteEntrega, tcAsi);
2507 _Fecha_Cobro = tdFecha;
2512 bool llOk = Contabilizar_Duplicar_Prevision(tnImporteEntrega);
2514 this._Addons_Contabilizar(
TipoExecute.After, tcBanco, tdFecha, tnImporteEntrega, tcAsi);
2526 DataTable ldtHistorico =
new DataTable();
2527 DataTable ldtHistorico1 =
new DataTable();
2528 DataTable ldtHistorico2 =
new DataTable();
2529 DataTable ldtHistorico3 =
new DataTable();
2531 string lcSql =
string.Empty;
2532 string lcCondicion =
string.Empty;
2533 bool llTrobat =
false;
2534 string lcGuid_Id =
string.Empty;
2536 lcSql =
" SELECT guid_idori as GUID_ID, tipo, 2 as origen FROM " + DB.SQLDatabase(
"COMUNES",
"IMPAGOS");
2537 lcSql +=
" WHERE guid_iddes = " + DB.SQLString(_Guid_Id) +
" ";
2538 DB.SQLExec(lcSql, ref ldtHistorico);
2540 lcGuid_Id = _Guid_Id;
2541 if (ldtHistorico != null && ldtHistorico.Rows.Count == 1)
2543 lcGuid_Id = Convert.ToString(ldtHistorico.Rows[0][
"guid_id"]);
2547 lcSql =
" SELECT guid_iddes as GUID_ID, tipo, 1 as origen FROM " + DB.SQLDatabase(
"COMUNES",
"IMPAGOS");
2548 lcSql +=
" WHERE guid_idori = " + DB.SQLString(lcGuid_Id) +
" ";
2549 DB.SQLExec(lcSql, ref ldtHistorico);
2552 if (ldtHistorico != null)
2554 lcCondicion =
" p.guid_id = " + DB.SQLString(lcGuid_Id) +
" ";
2556 foreach (DataRow ldrItem
in ldtHistorico.Rows)
2558 lcCondicion +=
" OR " +
" p.guid_id = " + DB.SQLString(ldrItem[
"GUID_ID"].ToString().Trim()) +
" ";
2564 lcSql =
"SELECT p.Empresa,p.periodo,p.cliente as cuenta,c.nombre as nombre_cuenta,p.factura,p.orden,p.divisa,p.emision,p.vencim,'PC' as tipo,p.guid_id, " +
2565 "p.impagado as num_impago,p.pendiente,p.importe,p.ImporteDiv, " +
Divisa.
_ObtenerSqlDivisa(
"MONEDA",
"divisa") +
", " +
2566 "p.asi,p.concepto,(CASE WHEN impago='S' THEN cast(1 as bit) ELSE cast(0 as bit) END) AS impagado,(CASE WHEN banco<>'' THEN cast(1 as bit) ELSE cast(0 as bit) END) AS cobrada " +
2567 "FROM " + DB.SQLDatabase(
"COMUNES",
"PREVI_CL") +
" p " +
2568 "LEFT JOIN " + DB.SQLDatabase(
"GESTION",
"CLIENTES") +
" c ON p.cliente=c.codigo " +
2569 "LEFT JOIN " + DB.SQLDatabase(
"gestion",
"moneda") +
" MONEDA ON p.divisa=MONEDA.codigo ";
2572 if (!
string.IsNullOrWhiteSpace(lcCondicion) && llTrobat)
2573 lcSql +=
" WHERE ( " + lcCondicion +
" )" +
" And " +
"p.EMPRESA = " + DB.SQLString(Convert.ToString(EW_GLOBAL._GetVariable(
"wc_empresa")));
2575 lcSql +=
" WHERE 1=2 " +
" And " +
"p.EMPRESA = " + DB.SQLString(Convert.ToString(EW_GLOBAL._GetVariable(
"wc_empresa")));
2579 DB.SQLExec(lcSql, ref ldtHistorico1);
2584 lcSql =
"SELECT p.Empresa,p.periodo,p.proveedor as cuenta,c.nombre as nombre_cuenta,p.factura,p.numereb as orden,p.divisa,p.emision,p.vencim,'PP' as tipo,p.guid_id, " +
2585 "0 AS num_impago,p.pendiente,p.importe,p.ImporteDiv, " +
Divisa.
_ObtenerSqlDivisa(
"MONEDA",
"divisa") +
", " +
2586 "p.asi,p.concepto," + DB.SQLFalse() +
" as impagado,(CASE WHEN pagada='S' THEN cast(1 as bit) ELSE cast(0 as bit) END) as cobrada " +
2587 "FROM " + DB.SQLDatabase(
"COMUNES",
"PREVIS") +
" p " +
2588 "LEFT JOIN " + DB.SQLDatabase(
"GESTION",
"PROVEED") +
" c ON p.proveedor=c.codigo " +
2589 "LEFT JOIN " + DB.SQLDatabase(
"gestion",
"moneda") +
" MONEDA ON p.divisa=MONEDA.codigo ";
2592 if (!
string.IsNullOrWhiteSpace(lcCondicion) && llTrobat)
2593 lcSql +=
" WHERE ( " + lcCondicion +
" ) " +
" And " +
"p.EMPRESA = " + DB.SQLString(Convert.ToString(EW_GLOBAL._GetVariable(
"wc_empresa")));
2595 lcSql +=
" WHERE 1=2 " +
" And " +
"p.EMPRESA = " + DB.SQLString(Convert.ToString(EW_GLOBAL._GetVariable(
"wc_empresa")));
2597 DB.SQLExec(lcSql, ref ldtHistorico2);
2599 ldtHistorico = ldtHistorico1;
2600 if (ldtHistorico2 != null && ldtHistorico2.Rows.Count > 0)
2601 DBfunctions.SQLUnionDatatable(ref ldtHistorico, ldtHistorico2);
2604 return ldtHistorico;
2617 this._Addons_Impagar(
TipoExecute.Before, tdFechaAsientoImpago);
2620 if (
string.IsNullOrWhiteSpace(_Factura) ||
string.IsNullOrWhiteSpace(_Empresa))
2622 Gestionar_Mensaje(
"El objeto PrevisionCobro no está cargado.",
"_Impagar");
2629 Gestionar_Mensaje(
"La previsión de cobro " + _Factura.Trim() +
"/" + _Orden.ToString().Trim() +
" ya es un impagado.",
"_Impagar");
2636 Gestionar_Mensaje(
"La previsión de cobro " + _Factura.Trim() +
"/" + _Orden.ToString().Trim() +
" no ha sido contabilizada.",
"_Impagar");
2640 int lnOtroImp = _Obtener_Numero_Impagos() + 1;
2642 Revisar_Tpv_Tikets(lnOtroImp);
2648 PrevisionCobro loPrevisionNueva = Generar_Prevision_Impago(lnOtroImp);
2654 llOk = Impago_Cargo_Empresa(loPrevisionNueva, tdFechaAsientoImpago);
2658 llOk = Impago_Gastos_Nueva_Factura(loPrevisionNueva, tdFechaAsientoImpago);
2665 llOk = Repercutir_Gastos_Cliente(loPrevisionNueva, tdFechaAsientoImpago);
2669 llOk = Repercutir_Gastos_Nueva_Factura(loPrevisionNueva, tdFechaAsientoImpago);
2674 this._Addons_Impagar(
TipoExecute.After, tdFechaAsientoImpago);
2687 ArrayList ret =
new ArrayList();
2688 DataTable dt =
new DataTable();
2689 string lcSql =
"SELECT PERIODOINI, PERIODOFIN FROM " + DB.SQLDatabase(
"COMUNES",
"EJERCICI") +
" WHERE [ANY]=" + DB.SQLString(ejercicio);
2690 DB.SQLExec(lcSql, ref dt);
2691 if (dt != null && dt.Rows.Count > 0)
2693 ret.Add(dt.Rows[0][
"PERIODOINI"]);
2694 ret.Add(dt.Rows[0][
"PERIODOFIN"]);
2706 string lcMsg =
string.Empty;
2713 Gestionar_Mensaje(
"La previsión ya está cobrada.",
"_Perdonar");
2719 Gestionar_Mensaje(
"Esta previsión corresponde a una factura acogida a RECC. No es posible marcarla como cobrada sin contabilizarla.",
"_Perdonar");
2725 if (Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_Contaplus")))
2727 if (!
string.IsNullOrWhiteSpace(_Pagare))
2729 lcMsg =
"La previsión está incluida en el pagaré nº " + _Pagare.Trim() +
2730 Environment.NewLine + Environment.NewLine +
2731 "¿ Desea dar como cobrada esta previsión ?";
2736 if (!
string.IsNullOrWhiteSpace(_Pagare))
2738 lcMsg =
"La previsión está incluida en el pagaré nº " + _Pagare.Trim() +
2739 Environment.NewLine + Environment.NewLine +
2740 "IMPORTANTE: la previsión no se contabilizará. " + Environment.NewLine +
2741 "Por tanto no se tendrá registro de esta previsión " + Environment.NewLine +
2742 "en asientos ni en el extracto para este cliente " + Environment.NewLine + Environment.NewLine +
2743 "¿ Desea dar como cobrada esta previsión ?";
2748 if (
string.IsNullOrWhiteSpace(lcMsg))
2750 lcMsg =
"IMPORTANTE: La previsión no se contabilizará. " + Environment.NewLine +
2751 "Por tanto no se tendrá registro de esta previsión en asientos ni en el extracto para este cliente. " + Environment.NewLine +
2752 "¿ Desea dar como cobrada esta previsión ? ";
2758 if (
string.IsNullOrWhiteSpace(lcMsg) || DialogResult.Yes == FUNCTIONS._MessageBox(lcMsg, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, DialogResult.No))
2761 string cBancoTemp =
string.Empty;
2765 cBancoTemp = _oCliente._BancoPrevisto;
2767 if (
string.IsNullOrWhiteSpace(cBancoTemp))
2770 cBancoTemp = _BancoPrevisto;
2773 if (
string.IsNullOrWhiteSpace(cBancoTemp))
2776 cBancoTemp = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_banco"));
2779 frmCobros lofrmCobros =
new frmCobros(_Cliente,
false,
this, cBancoTemp,
true, _Fecha_Vencim);
2781 lofrmCobros.ShowDialog();
2783 if (lofrmCobros.DialogResult == DialogResult.OK)
2786 _Banco = lofrmCobros.
_Banco;
2804 String lcError =
"";
2808 string _cCuentaPuenteCobro =
string.Empty;
2809 string _cCuentaPuentePago =
string.Empty;
2810 string _cCuentaPuenteReposicion =
string.Empty;
2811 string _cCuentaPuenteRetirada =
string.Empty;
2812 string _cCuentaPuente =
string.Empty;
2814 string lcCajaActiva = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_cajatpv"));
2815 string lcCuenta = tcCuenta.ToString().Substring(0, 2);
2817 if (!
string.IsNullOrWhiteSpace(lcCajaActiva))
2819 _cCuentaPuenteCobro = Convert.ToString(DB.SQLValor(
"CAJAS",
"CODIGO", lcCajaActiva,
"COBRO",
"TPV"));
2820 if (!
string.IsNullOrWhiteSpace(_cCuentaPuenteCobro))
2822 _cCuentaPuenteCobro = _cCuentaPuenteCobro.ToString().Substring(0, 2);
2823 if (lcCuenta.Contains(_cCuentaPuenteCobro))
2827 _cCuentaPuentePago = Convert.ToString(DB.SQLValor(
"CAJAS",
"CODIGO", lcCajaActiva,
"PAGO",
"TPV"));
2828 if (!
string.IsNullOrWhiteSpace(_cCuentaPuentePago))
2830 _cCuentaPuentePago = _cCuentaPuentePago.ToString().Substring(0, 2);
2831 if (lcCuenta.Contains(_cCuentaPuentePago))
2835 _cCuentaPuenteReposicion = Convert.ToString(DB.SQLValor(
"CAJAS",
"CODIGO", lcCajaActiva,
"COBRO",
"TPV"));
2836 if (!
string.IsNullOrWhiteSpace(_cCuentaPuenteReposicion))
2838 _cCuentaPuenteReposicion = _cCuentaPuenteReposicion.ToString().Substring(0, 2);
2839 if (lcCuenta.Contains(_cCuentaPuenteReposicion))
2844 _cCuentaPuenteRetirada = Convert.ToString(DB.SQLValor(
"CAJAS",
"CODIGO", lcCajaActiva,
"PAGO",
"TPV"));
2845 if (!
string.IsNullOrWhiteSpace(_cCuentaPuenteRetirada))
2847 _cCuentaPuenteRetirada = _cCuentaPuenteRetirada.ToString().Substring(0, 2);
2848 if (lcCuenta.Contains(_cCuentaPuenteRetirada))
2855 if (!
string.IsNullOrWhiteSpace(_cEntrega))
2857 _cEntrega = _cEntrega.ToString().Substring(0, 3);
2858 if (tcCuenta.ToString().Substring(0, 3).Contains(_cEntrega))
2862 if (!
string.IsNullOrWhiteSpace(_cBanco))
2864 _cBanco = _cBanco.ToString().Substring(0, 2);
2865 if (lcCuenta.Contains(_cBanco))
2869 if (!
string.IsNullOrWhiteSpace(_cEfec_dto))
2871 _cEfec_dto = _cEfec_dto.ToString().Substring(0, 2);
2872 if (lcCuenta.Contains(_cEfec_dto))
2879 DataTable ldtCodCom =
new DataTable();
2881 lcSql = String.Format(
"SELECT * FROM {0}", DB.SQLDatabase(
"COMUNES",
"CODCOM"));
2882 DB.SQLExec(lcSql, ref ldtCodCom);
2884 _cCuentaPuente = ldtCodCom.Rows.Count > 0 ? Convert.ToString(ldtCodCom.Rows[0][
"ctapuente"]) :
"";
2885 if (!
string.IsNullOrWhiteSpace(_cCuentaPuente))
2887 _cCuentaPuente = _cCuentaPuente.ToString().Substring(0, 2);
2888 if (lcCuenta.Contains(_cCuentaPuente))
2893 lcError =
"La cuenta no existe ";
2913 [Obsolete(
"Método obsoleto a partir de 1 de Octubre 2023, a raiz de las adaptaciones realizadas para poder aplicar % de reparto del importe de la factura entre los diferentes giros, permitiendo aplicar una distribución no proporcional entre los diferentes giros contrariamente a como hacía hasta ahora. Utilice la sobrecarga de este mismo método que utiliza como parámetro para recibir los giros una List<LineaGiro>.",
false)]
2925 return this.generarVencimientos(lstGirosPrc, tlPrevRetNoFisc);
2943 public List<PrevisionCobro>
Generar_Vencimientos(List<LineaGiro> tlisGiros,
bool tlPrevRetNoFisc =
false,
bool? tlMesesCompletos=null)
2945 return this.generarVencimientos(tlisGiros, tlPrevRetNoFisc, tlMesesCompletos);
2963 private List<PrevisionCobro> generarVencimientos(List<LineaGiro> tlisGiros,
bool tlPrevRetNoFisc =
false,
bool? tlMesesCompletos = null)
2973 List<PrevisionCobro> loLstPrevCob =
new List<PrevisionCobro>();
2977 bool llDiasVencim = Convert.ToBoolean(EW_GLOBAL._GetVariable(
"WL_DIAVENCIM"));
2979 decimal lnTotalImportePrevisiones = 0, lnDiferenciaImporte = 0, lnImporteGiro = 0;
2980 int lnDiasIntento = 0;
2981 DateTime ldVencimiento = DateTime.Today, ldVencimientoAnterior = DateTime.Today, ldFechaIniVacaciones = DateTime.Today, ldFechaFinVacaciones = DateTime.Today;
2982 string lcFpag = this._Forma_Pago;
3004 bool llPreviEnMonedaEmpresa = this._llDivisaVentas ==
false ||
string.IsNullOrWhiteSpace(this._Divisa) || this._Divisa == this._lcMonedaEmpresa;
3009 int lnDiaPago1 = 0, lnDiaPago2 = 0;
3013 Cliente loCliente = this._oCliente;
3017 if (
string.IsNullOrWhiteSpace(lcFpag))
3020 tlMesesCompletos = tlMesesCompletos == null ? loCliente.
_GirosMesesCompletos : tlMesesCompletos;
3026 decimal lnTotalImportePrevGenerar = llPreviEnMonedaEmpresa ? this._Importe : this._ImporteDiv;
3028 for (
int lnReg = 0; lnReg < tlisGiros.Count; lnReg++)
3033 if (!tlPrevRetNoFisc)
3034 ldVencimiento =
CONTABILIDAD.
Obtener_Fecha_Vencimiento(lnDiaPago1, lnDiaPago2, tlisGiros.Select(x => x._Giro).ToList(), lnReg, ref lnDiasIntento, this._oCliente, (DateTime)this._Fecha_Vencim, Convert.ToBoolean(tlMesesCompletos));
3037 ldVencimiento = (DateTime)this._Fecha_Emision;
3039 if (lnReg < (tlisGiros.Count - 1))
3048 lnImporteGiro = this._oDivisa._MascaraImporte.Redondeo(lnTotalImportePrevGenerar * tlisGiros[lnReg]._Porcentaje / 100);
3057 lnImporteGiro = lnTotalImportePrevGenerar - lnTotalImportePrevisiones;
3060 loPrevisionNueva =
new PrevisionCobro();
3062 loPrevisionNueva._oCli = this._oCli;
3064 decimal lnImporteGiroDiv = 0, lnImporteGiroMonEmp = 0;
3065 if (llPreviEnMonedaEmpresa)
3067 lnImporteGiroDiv = lnImporteGiro;
3068 lnImporteGiroMonEmp = lnImporteGiro;
3072 lnImporteGiroDiv = lnImporteGiro;
3078 loPrevisionNueva.
_New(this._Cliente, this._Empresa, this._Factura,
3079 (tlPrevRetNoFisc ? 0 : lnReg + 1), this._Impagado, this._Pendiente, lnImporteGiroMonEmp,
3080 Convert.ToDateTime(
this._Fecha_Emision), ldVencimiento, this._Divisa, this._Num_Banco,
3081 this._Referencia, this._SIIFraMod,
3082 this._Fecha_Operacion, this._Vendedor, lcFpag, this._Mandato, this._Recc, this._Ejercicio,
3083 this._Vendedor, this._Cambio, lnImporteGiroDiv, this._Impreso, this._Impago, this._Concepto);
3085 loLstPrevCob.Add(loPrevisionNueva);
3087 loPrevisionNueva = null;
3089 lnTotalImportePrevisiones = lnTotalImportePrevisiones + (llPreviEnMonedaEmpresa ? lnImporteGiroMonEmp : lnImporteGiroDiv);
3095 if (llPreviEnMonedaEmpresa ==
false)
3106 decimal lnTotGirosMonEmpresa = loLstPrevCob.Sum(x => x._Importe);
3107 lnDiferenciaImporte = lnTotalImpPrevGenMonEmpresa - lnTotGirosMonEmpresa;
3108 if (lnDiferenciaImporte != 0 && loLstPrevCob.Count > 0)
3110 decimal lnNuevoImporte = loLstPrevCob[loLstPrevCob.Count - 1]._Importe + lnDiferenciaImporte;
3111 loLstPrevCob[loLstPrevCob.Count - 1]._Importe = lnNuevoImporte;
3115 loLstPrevCob[loLstPrevCob.Count - 1]._Save();
3119 return loLstPrevCob;
3130 DataTable ldtResul =
new DataTable();
3133 string lcSql =
"select max(orden) as orden " +
3134 "from " + DB.SQLDatabase(
"comunes",
"previ_cl") +
" " +
3135 "where empresa = " + DB.SQLString(this._Empresa) +
" " +
3136 "and periodo = " + DB.SQLString(this._Ejercicio) +
" " +
3137 "and factura = " + DB.SQLString(this._Factura);
3139 DB.SQLExec(lcSql, ref ldtResul);
3142 if (ldtResul != null && ldtResul.Rows.Count > 0)
3143 lnOrden = Convert.ToInt32(ldtResul.Rows[0][
"orden"]);
3156 DataTable ldtResul =
new DataTable();
3159 string lcSql =
"select max(impagado) as impagado " +
3160 "from " + DB.SQLDatabase(
"comunes",
"previ_cl") +
" " +
3161 "where empresa = " + DB.SQLString(_Empresa) +
" " +
3162 "and periodo = " + DB.SQLString(_Ejercicio) +
" " +
3163 "and factura = " + DB.SQLString(_Factura) +
" " +
3164 "and orden = " + DB.SQLString(_Orden);
3166 DB.SQLExec(lcSql, ref ldtResul);
3169 if (ldtResul != null && ldtResul.Rows.Count > 0)
3170 lnImpagado = Convert.ToInt32(ldtResul.Rows[0][
"impagado"]);
3182 public List<PrevisionCobro>
_Dividir(DataTable tdtVencimientos)
3184 bool llOk =
false, llPrimera =
true;
3186 List<PrevisionCobro> loListPrevCob =
new List<PrevisionCobro>();
3188 this._Addons_Dividir(
TipoExecute.Before, tdtVencimientos);
3190 llOk = (tdtVencimientos != null && tdtVencimientos.Rows.Count > 1);
3195 lnOrden = this._Obtener_Orden_Maximo() + 1;
3198 foreach (DataRow loPrev
in tdtVencimientos.Rows)
3203 this._Fecha_Vencim = Convert.ToDateTime(loPrev[
"vencim"]);
3204 this._Importe = Convert.ToDecimal(loPrev[
"importe"]);
3205 this._ImporteDiv = Convert.ToDecimal(loPrev[
"importediv"]);
3209 loListPrevCob.Add(
this);
3215 loPrevisionNueva.
_Clonar(
this, _Empresa, _Ejercicio, _Factura, lnOrden, _Impagado, _Pendiente);
3218 loPrevisionNueva.
_Fecha_Vencim = Convert.ToDateTime(loPrev[
"vencim"]);
3219 loPrevisionNueva.
_Importe = Convert.ToDecimal(loPrev[
"importe"]);
3220 loPrevisionNueva.
_ImporteDiv = Convert.ToDecimal(loPrev[
"importediv"]);
3223 loPrevisionNueva.
_Save();
3226 loListPrevCob.Add(loPrevisionNueva);
3230 this._Addons_Dividir(
TipoExecute.After, tdtVencimientos);
3232 return loListPrevCob;
3242 public List<PrevisionCobro>
_Dividir(List<int> tlisDias)
3244 List<PrevisionCobro> loLstPrevCob =
new List<PrevisionCobro>();
3245 decimal lnImporte = 0.0M, lnSumaImporte = 0.0M, lnDiferencia = 0.0M;
3246 int lnNumeroPrevisiones = 0, ln_i = 0;
3247 int lnDecimalesMoneda = 2;
3249 DataTable ldtResul =
new DataTable();
3250 string lcEmpresa = _lcEmpresa;
3252 this._Addons_Dividir(
TipoExecute.Before, tlisDias);
3255 if (
string.IsNullOrWhiteSpace(this._Factura) ||
string.IsNullOrWhiteSpace(this._Empresa))
3257 this.Gestionar_Mensaje(
"El objeto PrevisionCobro no está cargado.",
"_Dividir");
3258 return loLstPrevCob;
3261 lnDecimalesMoneda = Convert.ToInt32(DB.SQLValor(
"moneda",
"codigo",
this._Divisa,
"decimales",
"gestion"));
3264 if (tlisDias.Count <= 1)
3266 loLstPrevCob.Add(
this);
3267 return loLstPrevCob;
3270 string lcSql =
"select max(pendiente) as pendiente " +
3271 "from " + DB.SQLDatabase(
"comunes",
"previ_cl") +
" " +
3272 "where empresa = " + DB.SQLString(this._Empresa) +
" " +
3273 "and periodo = " + DB.SQLString(this._Ejercicio) +
" " +
3274 "and factura = " + DB.SQLString(this._Factura) +
" " +
3275 "and orden = " + DB.SQLString(this._Orden) +
" " +
3276 "and impagado = " + DB.SQLString(this._Impagado);
3278 llOk = DB.SQLExec(lcSql, ref ldtResul);
3281 if (ldtResul.Rows.Count > 0)
3282 lnOtroPend = Convert.ToInt32(ldtResul.Rows[0][
"pendiente"]) + 1;
3284 lnNumeroPrevisiones = tlisDias.Count;
3286 if (this._llDivisaVentas ==
false ||
string.IsNullOrWhiteSpace(this._Divisa) || this._Divisa == this._lcMonedaEmpresa)
3288 lnImporte = FUNCTIONS._Round(this._Importe / lnNumeroPrevisiones, lnDecimalesMoneda);
3291 lnImporte = FUNCTIONS._Round(this._ImporteDiv / lnNumeroPrevisiones, lnDecimalesMoneda);
3293 lnSumaImporte = 0.0M;
3296 for (ln_i = 1; ln_i <= lnNumeroPrevisiones; ln_i++)
3302 int lnOrden = this._Obtener_Orden_Maximo() + 1;
3303 loPrevisionNueva.
_Clonar(
this, _Empresa, _Ejercicio, _Factura, lnOrden, 0, lnOtroPend);
3305 if (this._llDivisaVentas ==
false ||
string.IsNullOrWhiteSpace(this._Divisa) || this._Divisa == this._lcMonedaEmpresa)
3306 loPrevisionNueva.
_Importe = lnImporte;
3312 lnSumaImporte += lnImporte;
3315 loLstPrevCob.Add(loPrevisionNueva);
3318 lnDiferencia = (this._llDivisaVentas ==
false ||
string.IsNullOrWhiteSpace(this._Divisa) || this._Divisa == this._lcMonedaEmpresa ? this._Importe : this._ImporteDiv) - lnSumaImporte;
3321 if (this._llDivisaVentas ==
false ||
string.IsNullOrWhiteSpace(this._Divisa) || this._Divisa == this._lcMonedaEmpresa)
3322 loLstPrevCob[loLstPrevCob.Count - 1]._Importe += lnDiferencia;
3324 loLstPrevCob[loLstPrevCob.Count - 1]._ImporteDiv += lnDiferencia;
3326 this._Addons_Dividir(
TipoExecute.After, tlisDias);
3328 return loLstPrevCob;
3339 string lcMsg =
string.Empty;
3342 string lcSql =
string.Empty;
3345 this._Addons_Descontabilizar(
TipoExecute.Before, tlForzarDesmarcarPrevision);
3348 if (
string.IsNullOrWhiteSpace(_Factura) ||
string.IsNullOrWhiteSpace(_Empresa))
3350 _Mostrar_Mensajes =
true;
3351 Gestionar_Mensaje(
"El objeto PrevisionCobro no está cargado.",
"_Descontabilizar");
3352 _Mostrar_Mensajes =
false;
3359 _Mostrar_Mensajes =
true;
3360 Gestionar_Mensaje($
"La previsión de cobro {_Factura.Trim()}/{_Orden} está en la remesa número: {_Remesa}, no se puede anular el cobro.",
"_Descontabilizar");
3361 _Mostrar_Mensajes =
false;
3366 if (!
string.IsNullOrWhiteSpace(_Pagare))
3368 _Mostrar_Mensajes =
true;
3369 Gestionar_Mensaje($
"La previsión de cobro {_Factura.Trim()}/{_Orden} está incluida en el pagaré: {_Pagare.Trim()}, no se puede anular el cobro.",
"_Descontabilizar");
3370 _Mostrar_Mensajes =
false;
3376 if (!
string.IsNullOrWhiteSpace(_Asi))
3379 int lnNumero_Asiento = FUNCTIONS._Numero_Asiento(_Asi);
3381 if (lnNumero_Asiento == 0)
3383 if (_Asi ==
"FACTURAPLUS")
3385 lcMsg =
"¿ Desea anular el cobro de la previsión ?";
3389 if (_Cobrada && _Fecha_Cobro != null && Convert.ToDateTime(_Fecha_Cobro.ToString()).Year != Convert.ToInt32(DB.Ejercicio_EW))
3391 _Mostrar_Mensajes =
true;
3392 Gestionar_Mensaje(
"No se ha detectado el asiento de cobro de la previsión del cliente " + _Cliente +
", factura núm. " + _Factura.Trim() +
"/" + _Orden.ToString().Trim() +
3393 Environment.NewLine +
3394 " El asiento corresponde a otro ejercicio. ",
"_Descontabilizar");
3395 _Mostrar_Mensajes =
false;
3399 lcMsg =
"La previsión de cobro del cliente " + _Cliente +
", factura núm. " + _Factura.Trim() +
"/" + _Orden.ToString().Trim() +
" no está contabilizada." +
3400 Environment.NewLine +
3401 "¿ Desea anular el cobro de la previsión ?";
3404 if (DialogResult.Yes == FUNCTIONS._MessageBox(lcMsg, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, DialogResult.No))
3408 this._Addons_Descontabilizar(
TipoExecute.After, tlForzarDesmarcarPrevision);
3415 lcMsg =
"Si anula el cobro se descontabilizará el cobro de la previsión. " + Environment.NewLine +
"¿ Desea anular el cobro de la previsión ?";
3417 if (DialogResult.Yes == FUNCTIONS._MessageBox(lcMsg, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, DialogResult.No))
3422 if (loAsiento.
_Lineas.Count > 0)
3424 decimal lnSumaDebe = 0.0M, lnSumaHaber = 0.0M;
3425 bool llDiferencias =
true;
3429 lnSumaDebe += loLineaAsiento.
_DebeDiv;
3430 lnSumaHaber += loLineaAsiento.
_HaberDiv;
3431 llDiferencias &= _Cambio == loLineaAsiento.
_Cambio;
3434 if (_Divisa != EW_GLOBAL._Empresa._Moneda && !llDiferencias)
3436 lcMsg =
"Se han detectado diferencias de cambio, si se generó un asiento para contabilizar dichas diferencias deberá eliminarlo manualmente. ";
3437 FUNCTIONS._MessageBox(lcMsg,
"Anular cobro", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
3440 bool llDesmarcarPrevision =
false;
3443 if (lnSumaDebe == lnSumaHaber && lnSumaDebe == _ImporteDiv)
3448 llDesmarcarPrevision =
true;
3451 llDesmarcarPrevision = tlForzarDesmarcarPrevision;
3454 _Mostrar_Mensajes =
true;
3455 Gestionar_Mensaje(
"No se pudo borrar el asiento de cobro de la previsión " + _Factura.Trim() +
"/" + _Orden.ToString().Trim() +
".",
"_Descontabilizar");
3456 _Mostrar_Mensajes =
false;
3461 _Mostrar_Mensajes =
true;
3462 Gestionar_Mensaje(
"El asiento de cobro de la previsión " + _Factura.Trim() +
"/" + _Orden.ToString().Trim() +
" contiene más de un cobro." +
3463 "No se puede eliminar el asiento.",
"_Descontabilizar");
3464 _Mostrar_Mensajes =
false;
3467 llDesmarcarPrevision = tlForzarDesmarcarPrevision;
3470 if (llDesmarcarPrevision)
3478 _Mostrar_Mensajes =
true;
3479 Gestionar_Mensaje(
"El asiento de la previsión de cobro " + _Factura.Trim() +
"/" + _Orden.ToString().Trim() +
" no existe.",
"_Descontabilizar");
3480 _Mostrar_Mensajes =
false;
3488 lcMsg =
"La previsión de cobro del cliente " + _Cliente +
", factura núm. " + _Factura.Trim() +
"/" + _Orden.ToString().Trim() +
" no está contabilizada." +
3489 Environment.NewLine +
3490 "¿ Desea anular el cobro de la previsión ?";
3492 if (DialogResult.Yes == FUNCTIONS._MessageBox(lcMsg, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, DialogResult.No))
3496 this._Addons_Descontabilizar(
TipoExecute.After, tlForzarDesmarcarPrevision);
3504 this._Addons_Descontabilizar(
TipoExecute.After, tlForzarDesmarcarPrevision);
3516 string lcOldAsi = _Asi;
3524 _Fecha_Cobro = null;
3540 DataTable ldtPrevisiones =
new DataTable();
3541 List<PrevisionCobro> loLstPrevCob =
new List<PrevisionCobro>();
3543 if (this.Consultar_Previsiones(tcEstadoPrevision, ref ldtPrevisiones))
3545 foreach (DataRow loRow
in ldtPrevisiones.Rows)
3547 string lcEmpresa = Convert.ToString(loRow[
"empresa"]);
3548 int lnPeriodo = Convert.ToInt32(loRow[
"periodo"]);
3549 string lcFactura = Convert.ToString(loRow[
"factura"]);
3550 int lnOrden = Convert.ToInt32(loRow[
"orden"]);
3551 int lnImpagado = Convert.ToInt32(loRow[
"impagado"]);
3552 int lnPendiente = Convert.ToInt32(loRow[
"pendiente"]);
3555 loLstPrevCob.Add(loPrevision);
3559 return loLstPrevCob;
3571 lcSql = String.Format(
"INSERT INTO {0} ( TIPO, EMPRESA , PERIODO , FACTURA , ORDEN, IMPAGADO, PENDIENTE , DIVISA, PROVECLIEN, CAMBIO, IMPORTE) VALUES (0, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10}); ", DB.SQLDatabase(
"GESTION",
"PREVI_CIERRE"), DB.SQLString(this._Empresa) , this._Ejercicio, DB.SQLString(this._Factura), DB.SQLString(this._Orden), DB.SQLString(this._Impagado) , DB.SQLString(this._Pendiente), DB.SQLString(this._Divisa) , DB.SQLString(this._Cliente), DB.SQLString(_Cambio), DB.SQLString(_Importe));
3572 return DB.SQLExec(lcSql);
3584 lcSql = String.Format(
"DELETE FROM {0} WHERE TIPO = 0 AND PERIODO = {1} AND EMPRESA = {2} AND FACTURA = {3} AND ORDEN = {4} AND IMPAGADO = {5} AND PENDIENTE ={6}", DB.SQLDatabase(
"GESTION",
"PREVI_CIERRE"), _Ejercicio, DB.SQLString(_Empresa), DB.SQLString(_Factura), DB.SQLString(_Orden), DB.SQLString(this._Impagado), DB.SQLString(this._Pendiente));
3585 return DB.SQLExec(lcSql);
3615 public void _New(
string tcCliente,
string tcEmpresa,
string tcFactura,
int tnOrden,
int tnImpagado,
int tnPendiente, decimal tnImporte, DateTime tdEmision,
3616 DateTime tdVencim,
string tcMoneda,
int tnNum_Banco, DateTime? tdFecha_Oper,
string tcVendedor =
"",
string tcFpago =
"",
3617 string tcMandato =
"",
bool tlRecc =
false,
int tnPeriodo = 0,
string tcCobrador =
"", decimal tnCambio = 1, decimal tnImporteDiv = 0,
3618 string tcImpreso =
"N",
string tcImpago =
"N",
string tcConcepto =
"")
3622 this.newPrev(tcCliente, tcEmpresa, tcFactura, tnOrden, tnImpagado, tnPendiente, tnImporte, tdEmision,
3623 tdVencim, tcMoneda, tnNum_Banco, tdFecha_Oper, tcVendedor, tcFpago,
3624 tcMandato, tlRecc, tnPeriodo, tcCobrador, tnCambio, tnImporteDiv,
3625 tcImpreso, tcImpago, tcConcepto,
"",
"");
3664 public void _New(
string tcCliente,
string tcEmpresa,
string tcFactura,
int tnOrden,
int tnImpagado,
int tnPendiente, decimal tnImporte, DateTime tdEmision,
3665 DateTime tdVencim,
string tcMoneda,
int tnNum_Banco,
string tcReferencia,
string tcSIIFraMod, DateTime? tdFecha_Oper,
3666 string tcVendedor =
"",
string tcFpago =
"",
string tcMandato =
"",
bool tlRecc =
false,
int tnPeriodo = 0,
3667 string tcCobrador =
"", decimal tnCambio = 1, decimal tnImporteDiv = 0,
string tcImpreso =
"N",
string tcImpago =
"N",
3668 string tcConcepto =
"")
3671 this.newPrev(tcCliente, tcEmpresa, tcFactura, tnOrden, tnImpagado, tnPendiente, tnImporte, tdEmision,
3672 tdVencim, tcMoneda, tnNum_Banco, tdFecha_Oper, tcVendedor, tcFpago,
3673 tcMandato, tlRecc, tnPeriodo, tcCobrador, tnCambio, tnImporteDiv,
3674 tcImpreso, tcImpago, tcConcepto, tcReferencia, tcSIIFraMod);
3705 private void newPrev(
string tcCliente,
string tcEmpresa,
string tcFactura,
int tnOrden,
int tnImpagado,
int tnPendiente, decimal tnImporte, DateTime tdEmision,
3706 DateTime tdVencim,
string tcMoneda,
int tnNum_Banco, DateTime? tdFecha_Oper,
string tcVendedor =
"",
string tcFpago =
"",
3707 string tcMandato =
"",
bool tlRecc =
false,
int tnPeriodo = 0,
string tcCobrador =
"", decimal tnCambio = 1, decimal tnImporteDiv = 0,
3708 string tcImpreso =
"N",
string tcImpago =
"N",
string tcConcepto =
"",
string tcReferencia=
"",
string tcSIIFraMod=
"")
3710 bool llRetorno =
false;
3711 DataTable ldt_Cursor =
new DataTable();
3713 this._Addons_New(
TipoExecute.Before, tcCliente, tcEmpresa, tcFactura, tnOrden, tnImpagado, tnPendiente, tnImporte, tdEmision,
3714 tdVencim, tcMoneda, tnNum_Banco, tdFecha_Oper, tcVendedor, tcFpago,
3715 tcMandato, tlRecc, tnPeriodo, tcCobrador, tnCambio, tnImporteDiv,
3716 tcImpreso, tcImpago, tcConcepto);
3718 int lnPeriodo = tnPeriodo == 0 ? Convert.ToInt16(EW_GLOBAL._GetVariable(
"wc_any")) : tnPeriodo;
3720 string lcBanco_Prev =
"";
3724 if (_oCli != null && _oCli.
_Codigo == tcCliente)
3727 lcBanco_Prev = DB.SQLValor(
"CLIENTES",
"CODIGO", tcCliente,
"BANCO_PREV",
"GESTION").ToString();
3732 llRetorno = DB.SQLExec(
"select empresa,periodo,factura from " + DB.SQLDatabase(
"comunes",
"previ_cl") +
" " +
3733 "where empresa=" + DB.SQLString(tcEmpresa) +
" " +
3734 "and periodo=" + DB.SQLString(lnPeriodo) +
" " +
3735 "and factura=" + DB.SQLString(tcFactura) +
" " +
3736 "and orden=" + DB.SQLString(tnOrden) +
" " +
3737 "and impagado=" + DB.SQLString(tnImpagado) +
" " +
3738 "and pendiente=" + DB.SQLString(tnPendiente), ref ldt_Cursor);
3743 if (ldt_Cursor.Rows.Count == 0)
3747 DataTable dtOrigen =
new DataTable();
3748 DB.SQLExec(
"select empresa,periodo,factura,concepto from " + DB.SQLDatabase(
"comunes",
"previ_cl") +
" " +
3749 "where empresa=" + DB.SQLString(tcEmpresa) +
" " +
3750 "and periodo=" + DB.SQLString(lnPeriodo) +
" " +
3751 "and factura=" + DB.SQLString(tcFactura) +
" " +
3752 "and orden=" + DB.SQLString(1) +
" " +
3753 "and impagado=" + DB.SQLString(tnImpagado) +
" " +
3754 "and pendiente=" + DB.SQLString(tnPendiente), ref dtOrigen);
3757 if (dtOrigen != null && dtOrigen.Rows.Count > 0)
3759 if (!
string.IsNullOrWhiteSpace(dtOrigen.Rows[0][
"Concepto"].ToString()))
3760 tcConcepto = dtOrigen.Rows[0][
"Concepto"].ToString().Trim();
3765 llRetorno = DB.SQLExec(
"insert into " + DB.SQLDatabase(
"comunes",
"previ_cl") +
" " +
3766 "(usuario,empresa,periodo,factura,orden,impagado,pendiente,cliente,f_pago,divisa,cambio,vendedor,cobrador, " +
3767 "impreso,impago,num_banco, importe,importediv,emision,vencim,fec_oper,mandato,banco_prev,recc, concepto, "+
3768 "referencia, siiframod)" +
3770 DB.SQLString(_lcUsuario) +
", " +
3771 DB.SQLString(tcEmpresa) +
", " +
3772 DB.SQLString(lnPeriodo) +
", " +
3773 DB.SQLString(tcFactura) +
", " +
3774 DB.SQLString(tnOrden) +
", " +
3775 DB.SQLString(tnImpagado) +
", " +
3776 DB.SQLString(tnPendiente) +
", " +
3777 DB.SQLString(tcCliente) +
"," +
3778 DB.SQLString(tcFpago) +
"," +
3779 DB.SQLString(tcMoneda) +
"," +
3780 DB.SQLString(tnCambio) +
"," +
3781 DB.SQLString(tcVendedor) +
"," +
3782 DB.SQLString(tcCobrador) +
"," +
3783 DB.SQLString(tcImpreso) +
"," +
3784 DB.SQLString(tcImpago) +
"," +
3785 DB.SQLString(tnNum_Banco) +
"," +
3786 DB.SQLString(tnImporte) +
"," +
3787 DB.SQLString(tnImporteDiv) +
"," +
3788 DB.SQLString(tdEmision) +
"," +
3789 DB.SQLString(tdVencim) +
"," +
3790 (tdFecha_Oper != null ? DB.SQLString(tdFecha_Oper) :
"null") +
"," +
3791 DB.SQLString(tcMandato) +
"," +
3792 DB.SQLString(lcBanco_Prev) +
"," +
3793 DB.SQLString(tlRecc) +
"," +
3794 DB.SQLString(tcConcepto) +
"," +
3795 DB.SQLString(tcReferencia) +
"," +
3796 DB.SQLString(tcSIIFraMod) +
")");
3799 Gestionar_Mensaje(
"Error en la consulta INSERT para actualizar registro PREVI_CL.",
"_New");
3803 Gestionar_Mensaje(
"Error en la consulta SELECT para comprobar la existencia registro PREVI_CL.",
"_New");
3813 _Codigo = tcEmpresa +
"|" + lnPeriodo.ToString().Trim() +
"|"+ tcFactura +
"|"+tnOrden.ToString().Trim()+
"|"+ tnImpagado.ToString().Trim() +
"|"+tnPendiente.ToString().Trim();
3816 if (
string.IsNullOrWhiteSpace(_Cliente))
3820 this._Addons_New(
TipoExecute.After, tcCliente, tcEmpresa, tcFactura, tnOrden, tnImpagado, tnPendiente, tnImporte, tdEmision,
3821 tdVencim, tcMoneda, tnNum_Banco, tdFecha_Oper, tcVendedor, tcFpago,
3822 tcMandato, tlRecc, tnPeriodo, tcCobrador, tnCambio, tnImporteDiv,
3823 tcImpreso, tcImpago, tcConcepto);
3836 DataTable ldtDatosFactura =
new DataTable();
3837 DataTable ldtUpdate =
new DataTable();
3839 string[] lcArray =
new string[1];
3841 string lcNumero =
string.Empty;
3842 string lcLetra =
string.Empty;
3843 DateTime ldExportar =
new DateTime(1899, 1, 1);
3846 string lcSql =
"select letra, numero, exportar " +
3847 "from " + DB.SQLDatabase(
"",
"c_albven") +
" " +
3848 "where empresa = " + DB.SQLString(this._Empresa) +
" " +
3849 "and factura = " + DB.SQLString(this._Factura);
3851 lcArray[0] = Convert.ToString(this._Ejercicio).Trim();
3853 if (DB.SQLExecEjer(lcSql, ref ldtDatosFactura, lcArray))
3855 foreach (DataRow ldrItem
in ldtDatosFactura.Rows)
3857 if (ldrItem[
"exportar"] != DBNull.Value)
3859 lcNumero = Convert.ToString(ldrItem[
"numero"]);
3860 lcLetra = Convert.ToString(ldrItem[
"letra"]);
3863 lcSql =
"update " + DB.SQLDatabase(
"",
"c_albven") +
" " +
3864 "set exportar = " + DB.SQLString(ldExportar) +
" " +
3865 "where empresa = " + DB.SQLString(this._Empresa) +
" " +
3866 "and numero = " + DB.SQLString(lcNumero) +
" " +
3867 "and letra = " + DB.SQLString(lcLetra);
3869 llOk = DB.SQLExecEjer(lcSql, ref ldtUpdate, lcArray);
3888 DataTable ldtResul =
new DataTable();
3889 string lcAnyPredet =
"", lcSql =
"", lcNumero =
"", lcUpdateNumero =
"";
3891 bool llHay_Tpv = (Convert.ToString(DB.SQLValor(
"MODULOS",
"NOMBRE",
"TPV",
"NOMBRE",
"COMUNES")).Trim() ==
"TPV");
3895 string lcCaja_Tpv = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_cajatpv"));
3896 if (
string.IsNullOrWhiteSpace(lcCaja_Tpv))
3900 lcAnyPredet = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_any"));
3904 if (
string.IsNullOrWhiteSpace(tcOldNumero))
3907 lcNumero = this._Factura.Trim() +
"/" +
3908 Convert.ToString(this._Orden).Trim() +
"/" +
3909 Convert.ToString(this._Pendiente).Trim() +
"/" +
3910 Convert.ToString(this._Ejercicio).Substring(2);
3915 lcNumero = tcOldNumero;
3918 lcUpdateNumero = this._Factura.Trim() +
"/" +
3919 Convert.ToString(this._Orden).Trim() +
"/" +
3920 Convert.ToString(this._Pendiente).Trim() +
"/" +
3921 Convert.ToString(this._Ejercicio).Substring(2);
3924 lcUpdateNumero =
", numero = '" + lcUpdateNumero.PadLeft(20) +
"' ";
3928 lcNumero = lcNumero.PadLeft(20);
3930 lcSql =
"update " + DB.SQLDatabase(
"tpv",
"tikets") +
3931 " set asi = " + DB.SQLString(this._Asi) +
" " + lcUpdateNumero +
3932 " where ejercicio = " + DB.SQLString(lcAnyPredet.PadRight(15,
' ')) +
3933 " and empresa = " + DB.SQLString(_lcEmpresa) +
3934 " and numero = '" + lcNumero +
"' " +
3935 " and letra = ' ' " +
3937 llOk = DB.SQLExec(lcSql, ref ldtResul);
3952 public bool ExistePrevision(
string tcEmpresa,
string tcCliente,
string tcFactura,
int tcPeriodo)
3956 DataTable ldtPrevisiones =
new DataTable();
3957 string lcSql =
"Select empresa, periodo, cliente, factura, orden, divisa " +
3958 "From " + DB.SQLDatabase(
"comunes",
"previ_cl") +
" " +
3959 "where empresa =" + DB.SQLString(tcEmpresa) +
3960 " and cliente =" + DB.SQLString(tcCliente) +
3961 " and factura =" + DB.SQLString(tcFactura.Trim().PadLeft(10)) +
3962 " and orden = '1'" +
3963 " and periodo =" + tcPeriodo;
3965 DB.SQLExec(lcSql, ref ldtPrevisiones);
3967 if (ldtPrevisiones.Rows.Count > 0)
3970 FUNCTIONS._DisposeDatatable(ldtPrevisiones);
3986 public bool ExistePrevision(
string tcEmpresa,
string tcCliente,
string tcFactura,
int tcPeriodo, out
int tnorden)
3991 DataTable ldtPrevisiones =
new DataTable();
3992 string lcSql =
"Select empresa, periodo, cliente, factura, orden, divisa, pendiente " +
3993 "From " + DB.SQLDatabase(
"comunes",
"previ_cl") +
" " +
3994 "where empresa =" + DB.SQLString(tcEmpresa) +
3995 " and cliente =" + DB.SQLString(tcCliente) +
3996 " and factura =" + DB.SQLString(tcFactura.Trim().PadLeft(10)) +
3997 " and periodo =" + tcPeriodo;
3999 DB.SQLExec(lcSql, ref ldtPrevisiones);
4001 if (ldtPrevisiones.Rows.Count > 0)
4003 foreach (DataRow dr
in ldtPrevisiones.Rows)
4007 if (!Convert.ToBoolean(dr[
"pendiente"]))
4010 tnorden = Convert.ToInt32(dr[
"orden"]);
4016 FUNCTIONS._DisposeDatatable(ldtPrevisiones);
4030 public bool ExistePrevision(
string tcEmpresa,
string tcFactura,
int tcPeriodo, out
int tnorden)
4035 DataTable ldtPrevisiones =
new DataTable();
4036 string lcSql =
"Select empresa, periodo, cliente, factura, orden, divisa, pendiente " +
4037 "From " + DB.SQLDatabase(
"comunes",
"previ_cl") +
" " +
4038 "where empresa =" + DB.SQLString(tcEmpresa) +
4039 " and factura =" + DB.SQLString(tcFactura.Trim().PadLeft(10)) +
4040 " and periodo =" + tcPeriodo;
4042 DB.SQLExec(lcSql, ref ldtPrevisiones);
4044 if (ldtPrevisiones.Rows.Count > 0)
4046 foreach (DataRow dr
in ldtPrevisiones.Rows)
4050 if (!Convert.ToBoolean(dr[
"pendiente"]))
4053 tnorden = Convert.ToInt32(dr[
"orden"]);
4059 FUNCTIONS._DisposeDatatable(ldtPrevisiones);
4077 DataTable ldtPrevisiones =
new DataTable();
4078 string lcSql =
"Select pendiente " +
4079 "From " + DB.SQLDatabase(
"comunes",
"previ_cl") +
" " +
4080 "where empresa =" + DB.SQLString(tcEmpresa) +
4081 " and factura =" + DB.SQLString(tcFactura.Trim().PadLeft(10)) +
4082 " and orden = " + tnOrden +
4083 " and periodo =" + tcPeriodo +
4084 " and usuario <> '' " +
4085 " ORDER BY pendiente ASC";
4087 DB.SQLExec(lcSql, ref ldtPrevisiones);
4090 if (ldtPrevisiones != null && ldtPrevisiones.Rows.Count > 0)
4093 tnPendiente = Convert.ToInt32(ldtPrevisiones.Rows[0][
"pendiente"]);
4098 FUNCTIONS._DisposeDatatable(ldtPrevisiones);
4104 #endregion METODOS PUBLICOS 4107 #region MÉTODOS PUBLIC OVERRIDE 4115 string lcSql =
string.Empty;
4117 DataTable ldtPrevision =
new DataTable();
4119 _Pantalla =
"PREV_COB";
4125 if (!
string.IsNullOrWhiteSpace(this._Cliente))
4127 if (this._oCli == null)
4130 this._oCli = loCliente;
4134 if (this._oCli.
_Codigo !=
this._Cliente)
4135 this._oCli.
_Codigo = this._Cliente;
4142 if (!
string.IsNullOrWhiteSpace(_Empresa) && !
string.IsNullOrWhiteSpace(_Factura))
4145 lcSql =
"select p.observacio " +
4146 "from " + DB.SQLDatabase(
"comunes",
"previobs") +
" p " +
4147 " where p.empresa=" + DB.SQLString(_Empresa) +
" " +
4148 " and p.periodo=" + DB.SQLString(_Ejercicio) +
" " +
4149 " and p.factura=" + DB.SQLString(_Factura) +
" " +
4150 " and p.orden=" + DB.SQLString(_Orden) +
" " +
4151 " and p.impagado=" + DB.SQLString(_Impagado) +
" " +
4152 " and p.pendiente=" + DB.SQLString(_Pendiente);
4154 llOk = DB.SQLExec(lcSql, ref ldtPrevision);
4155 if (llOk && ldtPrevision.Rows.Count > 0)
4157 _Observacion = Convert.ToString(ldtPrevision.Rows[0][
"observacio"]);
4182 string lcMultiClave = base._MultiClave_To_String();
4187 bool lbExistePrevision = ObtenerPendientePrevision(this._Empresa, this._Factura, this._Ejercicio, this._Orden, out lnPendiente);
4188 if (lbExistePrevision)
4190 string[] tokens = lcMultiClave.Split(
new[] {
'|' });
4191 if (tokens.Count() == 6)
4193 tokens[5] = Convert.ToString(lnPendiente);
4194 lcMultiClave =
string.Join(
"|", tokens);
4198 return lcMultiClave;
4206 public override void _New(
string tcCodigo =
"")
4208 _Divisa = _lcMonedaEmpresa;
4210 _Usuario = _lcUsuario;
4214 base._New(tcCodigo);
4224 string lcSql =
string.Empty;
4225 string lcConcepto =
string.Empty;
4226 bool llDevolucion =
false;
4227 string lcConnect =
string.Empty;
4228 string lcEjerActual = DB.Ejercicio_EW;
4229 string lcAsi =
string.Empty;
4230 string lcMensaje =
string.Empty;
4231 DataTable ldtAsientos =
new DataTable();
4232 DataTable ldtPrevisiones =
new DataTable();
4234 lcSql =
"SELECT * FROM " + DB.SQLDatabase(
"COMUNES",
"PREVI_CL") +
4235 " WHERE PERIODO = " + DB.SQLString(_Ejercicio) +
4236 " AND EMPRESA = " + DB.SQLString(_Empresa) +
4237 " AND FACTURA = " + DB.SQLString(_Factura) +
4238 " AND ORDEN = " + DB.SQLString(_Orden) +
4239 " AND IMPAGADO > 0 " +
4240 " ORDER BY IMPAGADO DESC ";
4241 DB.SQLExec(lcSql, ref ldtPrevisiones);
4244 if (ldtPrevisiones != null && ldtPrevisiones.Rows.Count > 0)
4246 if (!
string.IsNullOrWhiteSpace(ldtPrevisiones.Rows[0][
"Concepto"].ToString()) && ldtPrevisiones.Rows[0][
"Impago"].ToString() ==
"S")
4248 lcConcepto = ldtPrevisiones.Rows[0][
"Concepto"].ToString().Trim();
4249 llDevolucion = lcConcepto.IndexOf(
"ASIENTO DEVOLUCION") >= 0;
4252 PrevisionCobro loPrevisionCobro =
new PrevisionCobro(_Empresa, _Ejercicio, _Factura, _Orden, Convert.ToInt16(ldtPrevisiones.Rows[0][
"Impagado"]), _Pendiente);
4254 loPrevisionCobro.
_Save();
4256 _Eliminar_Trazabilidad_Impagos(loPrevisionCobro.
_Guid_Id);
4262 loPrevisionCobro =
new PrevisionCobro(_Empresa, _Ejercicio, _Factura, _Orden, _Impagado, _Pendiente);
4263 loPrevisionCobro.
_Impago = Convert.ToInt16(ldtPrevisiones.Rows[0][
"Impagado"]) > 1 ?
"S" :
"N";
4265 loPrevisionCobro.
_Banco = Convert.ToString(ldtPrevisiones.Rows[0][
"banco"]);
4267 loPrevisionCobro.
_Fecha_Cobro = (ldtPrevisiones.Rows[0][
"cobro"] != DBNull.Value ? Convert.ToDateTime(ldtPrevisiones.Rows[0][
"cobro"]) : this._Fecha_Cobro);
4268 loPrevisionCobro.
_Asi = Convert.ToString(ldtPrevisiones.Rows[0][
"asi"]);
4273 loPrevisionCobro.
_Remesa = Convert.ToInt32(ldtPrevisiones.Rows[0][
"remesa"]);
4275 loPrevisionCobro.
_Fecha_Remesa = (ldtPrevisiones.Rows[0][
"fecreme"] != DBNull.Value ? Convert.ToDateTime(ldtPrevisiones.Rows[0][
"fecreme"]) : this._Fecha_Remesa);
4276 loPrevisionCobro.
_Pagare = Convert.ToString(ldtPrevisiones.Rows[0][
"pagare"]);
4277 loPrevisionCobro.
_Save();
4282 if (_lcAny != ldtPrevisiones.Rows[0][
"periodo"].ToString())
4284 if (!
string.IsNullOrWhiteSpace(_lcGrupo))
4286 lcConnect = Convert.ToString(DB.SQLValor(
"EJERCICI",
"[ANY] = " + DB.SQLString(ldtPrevisiones.Rows[0][
"periodo"].ToString()) +
" AND GRUPO", DB.SQLString(_lcGrupo),
"CONEXION",
"COMUNES"));
4288 lcConnect = Convert.ToString(DB.SQLValor(
"EJERCICI",
"[ANY]", DB.SQLString(ldtPrevisiones.Rows[0][
"periodo"].ToString()),
"CONEXION",
"COMUNES"));
4290 if (!
string.IsNullOrWhiteSpace(lcConnect))
4291 DB.SQLPredeterminarGestion(lcConnect);
4295 lcAsi = lcConcepto.Replace(
"ASIENTO DEVOLUCION",
"").Trim();
4296 if (lcAsi.Length >= 20)
4297 lcAsi = lcAsi.Substring(0, 20);
4299 lcAsi = lcAsi.PadRight(20);
4305 DB.SQLPredeterminarGestion(lcEjerActual);
4312 bool llOk = base._Delete() && _DeleteHistoricoCambioCierre();
4316 CalcularLimiteCredito();
4329 bool llRetorno =
false;
4332 llRetorno = base._Save();
4337 DataTable ldtPreviObs =
new DataTable();
4340 llRetorno = DB.SQLExec(
"select empresa,periodo,factura from " + DB.SQLDatabase(
"comunes",
"previobs") +
" " +
4341 "where empresa=" + DB.SQLString(_Empresa) +
" " +
4342 "and periodo=" + DB.SQLString(_Ejercicio) +
" " +
4343 "and factura=" + DB.SQLString(_Factura) +
" " +
4344 "and orden=" + DB.SQLString(_Orden) +
" " +
4345 "and impagado=" + DB.SQLString(_Impagado) +
" " +
4346 "and pendiente=" + DB.SQLString(_Pendiente), ref ldtPreviObs);
4349 if (ldtPreviObs.Rows.Count > 0)
4352 llRetorno = DB.SQLExec(
"update " + DB.SQLDatabase(
"comunes",
"previobs") +
" " +
4353 "set observacio=" + DB.SQLString(_Observacion) +
" " +
4354 "where empresa=" + DB.SQLString(_Empresa) +
" " +
4355 "and periodo=" + DB.SQLString(_Ejercicio) +
" " +
4356 "and factura=" + DB.SQLString(_Factura) +
" " +
4357 "and orden=" + DB.SQLString(_Orden) +
" " +
4358 "and impagado=" + DB.SQLString(_Impagado) +
" " +
4359 "and pendiente=" + DB.SQLString(_Pendiente));
4362 Gestionar_Mensaje(
"Error en la consulta UPDATE para actualizar registro PREVIOBS.",
"_Save");
4368 string lcUsuario =
string.IsNullOrWhiteSpace(_Usuario) ? _lcUsuario : _Usuario;
4371 llRetorno = DB.SQLExec(
"insert into " + DB.SQLDatabase(
"comunes",
"previobs") +
" " +
4372 "(usuario,empresa,periodo,factura,orden,impagado,pendiente,observacio,proveclien) " +
4374 DB.SQLString(lcUsuario) +
", " +
4375 DB.SQLString(_Empresa) +
", " +
4376 DB.SQLString(_Ejercicio) +
", " +
4377 DB.SQLString(_Factura) +
", " +
4378 DB.SQLString(_Orden) +
", " +
4379 DB.SQLString(_Impagado) +
", " +
4380 DB.SQLString(_Pendiente) +
", " +
4381 DB.SQLString(_Observacion) +
", " +
4382 DB.SQLString(_Cliente) +
" ) ");
4385 Gestionar_Mensaje(
"Error en la consulta INSERT para actualizar registro PREVIOBS.",
"_Save");
4391 Gestionar_Mensaje(
"Error en la consulta SELECT para comprobar la existencia registro PREVIOBS.",
"_Save");
4399 CalcularLimiteCredito();
4406 private void CalcularLimiteCredito()
4409 cliente.Clases.clsLimiteCredito loLimite =
new cliente.Clases.clsLimiteCredito();
4410 loLimite._oTipoRecalculo = cliente.Clases.clsLimiteCredito._TipoRecalculo.FactPendCobro;
4412 if (!
string.IsNullOrWhiteSpace(_Cliente))
4415 loLimite._CodigoCliente = _Cliente;
4416 loLimite._RecalcularYGuardar();
4428 string[] laCamposClave = this._Clave.Split(
',');
4429 string lcFactura =
string.Empty;
4432 foreach (
string lcCampoCodigo
in laCamposClave)
4435 if (_lisCampos.ContainsKey(lcCampoCodigo))
4437 string lcCampo = lcCampoCodigo.ToUpper().Trim();
4442 llOK = llOK && _lisCampos[lcCampoCodigo]._NewVal != null && (Convert.ToInt32(_lisCampos[lcCampoCodigo]._NewVal) >= 0);
4446 llOK = llOK && _lisCampos[lcCampoCodigo]._NewVal != null && (Convert.ToInt32(_lisCampos[lcCampoCodigo]._NewVal) > 0);
4450 llOK = llOK && _lisCampos[lcCampoCodigo]._NewVal != null && (!
string.IsNullOrWhiteSpace(_lisCampos[lcCampoCodigo]._NewVal.ToString()));
4455 lcFactura = _lisCampos[lcCampoCodigo]._NewVal.ToString();
4458 if (!
string.IsNullOrWhiteSpace(lcFactura.Substring(0, 1)) &&
string.IsNullOrWhiteSpace(lcFactura.Substring(lcFactura.Length - 1, 1)))
4465 llOK = llOK && _lisCampos[lcCampoCodigo]._NewVal != null && (!
string.IsNullOrWhiteSpace(_lisCampos[lcCampoCodigo]._NewVal.ToString()));
4478 #endregion MÉTODOS PUBLIC OVERRIDE 4481 #region MÉTODOS PUBLIC VIRTUAL 4489 string lcRetorn =
string.Empty;
4493 switch (loBotonTemporal.__Abrir_Formulario_En())
4498 object[] loParametres =
new object[5] { this._Factura, this._Orden, this._Ejercicio, this._Impagado, this._Pendiente };
4499 lcRetorn = NETVFP._Abrir_Formulario_VFP(
"PREV_COB", loParametres);
4516 loBotonTemporal = null;
4526 if (_Ejercicio == 0)
4527 _Ejercicio = Convert.ToInt32(DB.Ejercicio_EW);
4530 DateTime fCobro = Convert.ToDateTime(this._Fecha_Cobro);
4533 if (Convert.ToInt32(DB.Ejercicio_EW) != fCobro.Year)
4535 DataTable ldtResul =
new DataTable();
4537 string lcSql =
"select fecha " +
4538 "from " + DB.SQLDatabase(
"gestion",
"asientos") +
" " +
4539 "where empresa = " + DB.SQLString(this._Empresa) +
" " +
4540 "and asi = " + DB.SQLString(this._Asi);
4541 bool llOk = DB.SQLExec(lcSql, ref ldtResul);
4543 if (ldtResul.Rows.Count == 0)
4546 FUNCTIONS._MessageBox(
"El asiento corresponde a otro ejercicio. Deberá cambiar al ejercicio " + Convert.ToString(fCobro.Year) +
" para poderlo visualizar",
"Ejercicio distinto", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
4551 if (!
string.IsNullOrWhiteSpace(this._Asi))
4553 if (this._Concepto.Length >= 20 &&
this._Concepto.Substring(0, 20) ==
"ASIENTO DEVOLUCION ")
4555 System.Windows.Forms.ContextMenuStrip loMenu =
new System.Windows.Forms.ContextMenuStrip();
4558 loMenu.Items.Clear();
4560 loMenu.Items.Add(
"Ver asiento de cobro impagado");
4561 loMenu.Items[0].Name =
"Opcion1";
4562 loMenu.Items[0].BackColor =
System.Drawing.SystemColors.Menu;
4563 loMenu.Items[0].Enabled =
true;
4564 loMenu.Items[
"Opcion1"].Click += delegate { Mostrar_Asiento(_Asi); };
4566 loMenu.Items.Add(
"Ver asiento de devolución");
4567 loMenu.Items[1].Name =
"Opcion2";
4568 loMenu.Items[1].BackColor =
System.Drawing.SystemColors.Menu;
4570 loMenu.Items[1].Enabled =
true;
4571 loMenu.Items[
"Opcion2"].Click += delegate { Mostrar_Asiento(_Concepto.Substring(20, 20)); };
4573 loMenu.AutoClose =
true;
4574 loMenu.Show(
new System.Drawing.Point(Cursor.Position.X, Cursor.Position.Y));
4579 Mostrar_Asiento(_Asi);
4593 if (EW_GLOBAL._SaborSage50c == EW_GLOBAL.SaboresSage50c.AsesorContable)
4599 if (!Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_ConceptosFacturables")))
4601 FUNCTIONS._MessageBox(
"Navegación no disponible.", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, DialogResult.OK);
4607 if (EW_GLOBAL._Solucion == 1)
4611 FUNCTIONS._MessageBox(
"Navegación sólo disponible marcando la opción 'Activar gestión comercial' en el mantenimiento de grupos de empresa.", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, DialogResult.OK);
4617 if (_Ejercicio == 0)
4618 _Ejercicio = Convert.ToInt32(DB.Ejercicio_EW);
4620 if (Convert.ToInt32(DB.Ejercicio_EW) != _Ejercicio)
4622 FUNCTIONS._MessageBox(
"La factura corresponde a otro ejercicio. Deberá cambiar al ejercicio " + Convert.ToString(_Ejercicio).Trim() +
" para poderla visualizar",
"Ejercicio distinto", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
4627 string lcFactura = DB.SQLValor(
"C_ALBVEN",
new String[] {
"EMPRESA",
"FACTURA" },
new String[] { _Empresa, _Factura },
"FACTURA").ToString();
4630 if (
string.IsNullOrWhiteSpace(lcFactura))
4634 loForm.
_MessageBox(
"No hay documento de factura asociado ya que esta previsión se ha introducido manualmente.", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, DialogResult.OK);
4639 string lcLetraFactura =
string.Empty;
4640 string lcNumeroFactura =
string.Empty;
4644 loForm._Mantener_Ejecucion =
true;
4647 if (!
string.IsNullOrWhiteSpace(this._Factura))
4649 if (Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_Factser")) && Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_Serfact")))
4651 lcLetraFactura = this._Factura.Substring(0, 2);
4652 lcNumeroFactura = this._Factura.Substring(2).Trim().PadLeft(8);
4656 lcNumeroFactura = this._Factura.Trim().PadLeft(10);
4660 loForm._Documento._Load(this._Empresa, lcNumeroFactura, lcLetraFactura);
4662 loForm._ShowDialog();
4674 if (!
string.IsNullOrWhiteSpace(this._Empresa) && !
string.IsNullOrWhiteSpace(this._Factura))
4676 if (this._Remesa != 0)
4687 loForm.
_MessageBox(
"La remesa que pretende consultar no se encuentra en el ejercicio activo." + Environment.NewLine + Environment.NewLine +
4688 "Para acceder a la remesa, deberá hacerlo accediendo a la previsión de cobro desde el ejercicio en el que se " +
4689 "generó la remesa.", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, DialogResult.OK);
4697 loForm.
_MessageBox(
"La previsión de cobro " + this._Factura.Trim() +
"/" +
4698 this._Orden.ToString().Trim() +
" no está remesada.", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, DialogResult.OK);
4706 loForm.
_MessageBox(
"No hay declarado nº de factura en el objeto PrevisionCobro.", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, DialogResult.OK);
4718 public virtual void _Show_Vencimientos(dynamic toDocumento = null,
bool tlModoConsulta =
true, List<PrevisionCobro> toListaPrevCob = null)
4721 if (
string.IsNullOrWhiteSpace(this._Factura))
4725 loForm.
_MessageBox(
"Para visualizar los vencimientos debe indicar un número de factura.", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, DialogResult.OK);
4730 string lcRetorn =
string.Empty;
4731 string lcFactura = this._Factura;
4732 string lcCliente = this._Cliente;
4733 string lcMoneda = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_moneda"));
4734 string lcDivisa = this._Divisa;
4736 DateTime ldFechaFac = Convert.ToDateTime(this._Fecha_Emision);
4737 bool llValor =
true;
4741 switch (loBotonTemporal.__Abrir_Formulario_En())
4746 object[] loParametres =
new object[8] { lcFactura, lcCliente, lcMoneda, ldFechaFac, llValor, llValor, llValor, lcDivisa };
4747 lcRetorn = NETVFP._Abrir_Formulario_VFP(
"VENCIM", loParametres);
4753 Vencimientos._ShowDialog();
4760 loBotonTemporal = null;
4764 #endregion MÉTODOS PUBLIC VIRTUAL 4767 #region METODOS PRIVADOS 4780 switch (toTipoRecibo)
4802 if (!String.IsNullOrEmpty(_Factura)) loRecibo.
_Recibo = String.Format(
"{0}_{1}", _Factura, _Orden);
4813 private bool _SetImpreso(String tcValor)
4815 if (_Impreso != tcValor)
4832 private DialogResult Gestionar_Pregunta(
string tcPregunta =
"", MessageBoxButtons toMessageButtons = MessageBoxButtons.OKCancel, DialogResult toDefaultDialogResult = DialogResult.OK)
4834 DialogResult ldrResp = DialogResult.OK;
4836 if (_Mostrar_Mensajes)
4840 ldrResp = loForm.
_MessageBox(tcPregunta, toMessageButtons, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, toDefaultDialogResult);
4853 private PrevisionCobro Generar_Prevision_Impago(
int lnOtroImp)
4856 PrevisionCobro loPrevisionNueva =
new PrevisionCobro();
4859 loPrevisionNueva._Clonar(
this, _Empresa, _Ejercicio, _Factura, _Orden, lnOtroImp, _Pendiente);
4860 loPrevisionNueva._Impago =
"S";
4861 loPrevisionNueva._Impagado = lnOtroImp;
4862 loPrevisionNueva._Fecha_Vencim2 = null;
4865 loPrevisionNueva._Save();
4870 this._Asiento =
false;
4873 this._Fecha_Cobro = null;
4875 this._Imppagare = 0.0M;
4876 this._Fecha_Vencim2 = null;
4877 this._Fecha_Descuento = null;
4880 this._ImpagoGastosBancariosContabilizar =
false;
4881 this._ImpagoGastosBancariosFecha = null;
4882 this._ImpagoGastosBancariosDivisa =
string.Empty;
4883 this._ImpagoGastosBancariosCambio = 0M;
4884 this._ImpagoGastosBancariosImporte = 0M;
4885 this._ImpagoGastosBancariosCuenta =
string.Empty;
4887 this._ImpagoNuevaFacturaGenerar =
false;
4888 this._ImpagoNuevaFacturaNumero =
string.Empty;
4889 this._ImpagoNuevaFacturaCuenta =
string.Empty;
4890 this._ImpagoNuevaFacturaTipoIva =
string.Empty;
4891 this._ImpagoNuevaFacturaContabilizar =
false;
4893 this._ImpagoRepercutirGastos =
false;
4894 this._ImpagoRepercutirImporte = 0M;
4895 this._ImpagoRepercutirFacturaGenerar =
false;
4896 this._ImpagoRepercutirTipoIva =
string.Empty;
4897 this._ImpagoRepercutirCuenta =
string.Empty;
4900 _Insertar_Trazabilidad_Impagos(loPrevisionNueva._Guid_Id,
"PREV_NUEVA");
4902 return loPrevisionNueva;
4910 private void Revisar_Tpv_Tikets(
int lnOtroImp)
4912 bool llOk = (Convert.ToString(DB.SQLValor(
"MODULOS",
"NOMBRE",
"TPV",
"NOMBRE",
"COMUNES")).Trim() ==
"TPV");
4916 DataTable ldtResul =
new DataTable();
4917 string lcSql =
string.Empty;
4919 string lcCaja_Tpv = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_cajatpv"));
4920 if (!
string.IsNullOrWhiteSpace(lcCaja_Tpv))
4923 string lcEjercicioPrevi = this._Ejercicio.ToString().Trim();
4926 string lcAnyPredet = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_any"));
4928 string lcFact = (this._Factura.Trim() +
"/" + this._Orden.ToString().Trim() +
"/" + lnOtroImp.ToString().Trim() +
"/" + lcEjercicioPrevi).PadLeft(20,
' ');
4930 lcSql =
"select numero " +
4931 "from " + DB.SQLDatabase(
"tpv",
"tikets") +
" " +
4932 "where ejercicio = " + DB.SQLString(lcAnyPredet.PadRight(15,
' ')) +
" " +
4933 "and empresa = " + DB.SQLString(_lcEmpresa) +
" " +
4934 "and numero = " + (DB.SQLString(this._Factura.Trim() +
"/" + this._Orden.ToString().Trim() +
"/" + this._Pendiente.ToString().Trim() +
"/" + lcEjercicioPrevi)).PadLeft(20,
' ') +
" " +
4935 "and letra = ' ' " +
4937 "and asi = " + DB.SQLString(this._Asi);
4938 DB.SQLExec(lcSql, ref ldtResul);
4940 if (ldtResul.Rows.Count > 0)
4942 if (!
string.IsNullOrWhiteSpace(Convert.ToString(ldtResul.Rows[0][
"numero"])))
4944 lcSql =
"update " + DB.SQLDatabase(
"tpv",
"tikets") +
" " +
4945 "set numero = " + DB.SQLString(lcFact) +
" " +
4946 "where ejercicio = " + DB.SQLString(lcAnyPredet.PadRight(15,
' ')) +
" " +
4947 "and empresa = " + DB.SQLString(_lcEmpresa) +
" " +
4948 "and numero = " + (DB.SQLString(this._Factura.Trim() +
"/" + this._Orden.ToString().Trim() +
"/" + this._Pendiente.ToString().Trim() +
"/" + lcEjercicioPrevi)).PadLeft(20,
' ') +
" " +
4949 "and letra = ' ' " +
4951 "and asi = " + DB.SQLString(this._Asi);
4952 DB.SQLExec(lcSql, ref ldtResul);
4966 private bool Impago_Gastos_Nueva_Factura(PrevisionCobro loPrevisionNueva, DateTime tdFechaAsientoImpago)
4968 string lcAsi =
string.Empty;
4971 llOk = Asentar_Impago(tdFechaAsientoImpago,
4981 loPrevisionNueva._Concepto = !
string.IsNullOrWhiteSpace(_Concepto) ? _Concepto :
"ASIENTO DEVOLUCION " + lcAsi;
4982 loPrevisionNueva._Save();
4988 bool llOkGenFact =
false;
4991 _FechaAsiento = tdFechaAsientoImpago,
4992 _FechaFactura = tdFechaAsientoImpago,
4993 _Proveedor = loPrevisionNueva._ImpagoNuevaFacturaCuenta,
4994 _Factura = loPrevisionNueva._ImpagoNuevaFacturaNumero,
4995 _Divisa = loPrevisionNueva._ImpagoGastosBancariosDivisa,
4996 _Cambio = loPrevisionNueva._ImpagoGastosBancariosCambio,
4997 _IvaIncluido =
false,
4998 _PresentarVencimientos =
false,
4999 _ContabilizarPago = loPrevisionNueva._ImpagoNuevaFacturaContabilizar,
5000 _PresentarFechaBancoPago =
false,
5001 _CuentaBancoPago = loPrevisionNueva._ImpagoNuevaFacturaContabilizar ? loPrevisionNueva._Banco :
"",
5002 _FechaPago = loPrevisionNueva._ImpagoNuevaFacturaContabilizar ? (DateTime?)tdFechaAsientoImpago : null,
5003 _PresentarAsiento =
false,
5005 _AplicaRetPro =
false 5007 loCfgFactCompra.
_AnadirTipoIva(loPrevisionNueva._ImpagoNuevaFacturaTipoIva, loPrevisionNueva._ImpagoGastosBancariosImporte);
5008 loCfgFactCompra.
_AnadirContrapartida(loPrevisionNueva._ImpagoGastosBancariosCuenta, loPrevisionNueva._ImpagoGastosBancariosImporte);
5014 if (loAsiento != null)
5016 docscompra.PrevisionPago loPrevisionPago =
new docscompra.PrevisionPago(loAsiento.
_Empresa, loAsiento.
_Proveedor, loAsiento.
_Factura, 1, 0, loPrevisionNueva._Ejercicio)
5018 _Concepto = !
string.IsNullOrWhiteSpace(_Concepto) ? _Concepto :
"ASIENTO PREVISIÓN " + loAsiento.
_Lineas[0]._Asi
5020 loPrevisionPago._Save();
5023 _Insertar_Trazabilidad_Impagos(loPrevisionPago._Guid_Id,
"PREV_PAGO");
5097 private bool Impago_Cargo_Empresa(PrevisionCobro loPrevisionNueva, DateTime tdFechaAsientoImpago)
5099 string lcAsi =
string.Empty;
5102 llOk = Asentar_Impago(tdFechaAsientoImpago,
5103 loPrevisionNueva._ImpagoGastosBancariosContabilizar,
5104 loPrevisionNueva._ImpagoGastosBancariosImporte,
5113 loPrevisionNueva._Save();
5128 private bool Repercutir_Gastos_Nueva_Factura(PrevisionCobro loPrevisionNueva, DateTime tdFechaAsientoImpago)
5133 bool llSerfact = Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_serfact"));
5138 loCfgFactVenta.
_Cliente = loPrevisionNueva._Cliente;
5139 loCfgFactVenta.
_SerieFra = llSerfact ? EW_GLOBAL._Empresa._Letra_Defecto(3) :
"";
5147 loCfgFactVenta.
_GirosPrc =
new List<LineaGiro>() {
new LineaGiro() { _NumGiro = 1, _Giro = 0, _Porcentaje = 100 } };
5151 loCfgFactVenta.
_AnadirTipoIva(loPrevisionNueva._ImpagoRepercutirTipoIva, loPrevisionNueva._ImpagoRepercutirImporte);
5152 loCfgFactVenta.
_AnadirContrapartida(loPrevisionNueva._ImpagoRepercutirCuenta, loPrevisionNueva._ImpagoRepercutirImporte);
5159 if (loAsiento != null)
5161 PrevisionCobro loPrevisionCobro =
new PrevisionCobro(loAsiento.
_Empresa, loPrevisionNueva._Ejercicio, loAsiento.
_Factura, 1, 0, 0)
5163 _Concepto = !
string.IsNullOrWhiteSpace(_Concepto) ? _Concepto :
"ASIENTO REPERCUTIR " + loAsiento.
_Lineas[0]._Asi
5165 loPrevisionCobro._Save();
5168 _Insertar_Trazabilidad_Impagos(loPrevisionCobro._Guid_Id,
"PREV_FACT");
5251 private bool Repercutir_Gastos_Cliente(PrevisionCobro loPrevisionNueva, DateTime tdFechaAsientoImpago)
5255 PrevisionCobro loPrevisionRepercutida =
new PrevisionCobro();
5257 int lnOrden = _Obtener_Orden_Maximo() + 1;
5259 loPrevisionRepercutida._Clonar(
this, _Empresa, _Ejercicio, _Factura, lnOrden, 0, 0);
5263 loPrevisionRepercutida._Impago =
"N";
5264 loPrevisionRepercutida._Banco =
"";
5265 loPrevisionRepercutida._Asi =
"";
5266 loPrevisionRepercutida._Asiento =
false;
5267 loPrevisionRepercutida._Remesa = 0;
5268 loPrevisionRepercutida._Fecha_Remesa = null;
5269 loPrevisionRepercutida._Fecha_Cobro = null;
5270 loPrevisionRepercutida._Pagare =
"";
5271 loPrevisionRepercutida._Imppagare = 0.0M;
5272 loPrevisionRepercutida._Fecha_Vencim2 = null;
5273 loPrevisionRepercutida._Fecha_Descuento = null;
5274 loPrevisionRepercutida._Concepto =
"";
5276 loPrevisionRepercutida._Vendedor = _Vendedor;
5277 loPrevisionRepercutida._Cobrador = _Cobrador;
5278 loPrevisionRepercutida._Forma_Pago = _Forma_Pago;
5279 loPrevisionRepercutida._Fecha_Emision = tdFechaAsientoImpago;
5280 loPrevisionRepercutida._Fecha_Vencim = _Fecha_Vencim;
5284 decimal lnCambio =
Cliente._CambioPactado(loPrevisionRepercutida._Cliente, loPrevisionRepercutida._Divisa, tdFechaAsientoImpago);
5285 loPrevisionRepercutida._Cambio = lnCambio;
5287 if (loPrevisionRepercutida._Divisa == _lcMonedaEmpresa)
5288 loPrevisionRepercutida._Importe = loPrevisionNueva._ImpagoRepercutirImporte;
5290 loPrevisionRepercutida._ImporteDiv = loPrevisionNueva._ImpagoRepercutirImporte;
5294 loPrevisionRepercutida._Save();
5297 _Insertar_Trazabilidad_Impagos(loPrevisionRepercutida._Guid_Id,
"PREV_REPER");
5307 private int Buscar_Pendiente()
5310 DataTable ldtResul =
new DataTable();
5311 int lnPendiente = 1;
5315 string lcSql =
"select max(pendiente) as pendiente " +
5316 "from " + DB.SQLDatabase(
"comunes",
"previ_cl") +
" " +
5317 "where empresa = " + DB.SQLString(this._Empresa) +
" " +
5318 "and periodo = " + DB.SQLString(this._Ejercicio) +
" " +
5319 "and factura = " + DB.SQLString(this._Factura) +
" " +
5320 "and orden = " + DB.SQLString(this._Orden) +
" " +
5321 "and impagado = " + DB.SQLString(this._Impagado);
5324 llOk = DB.SQLExec(lcSql, ref ldtResul);
5327 if (ldtResul.Rows.Count > 0)
5328 lnPendiente = Convert.ToInt32(ldtResul.Rows[0][
"pendiente"]) + 1;
5341 private void SaveCriterioCaja()
5343 if (_cOldAsi != _Asi)
5348 string lcOldAsi = _cOldAsi;
5352 if (
string.IsNullOrWhiteSpace(_Asi))
5353 llOk = loCriterioCaja.
_Delete(
this, lcOldAsi);
5355 llOk = loCriterioCaja.
_Save(
this, _lCobroParcial);
5357 if (!llOk && !
string.IsNullOrWhiteSpace(loCriterioCaja.
_Mensaje_Error))
5369 private void Establecer_Clave()
5371 this._Clave =
"EMPRESA,PERIODO,FACTURA,ORDEN,IMPAGADO,PENDIENTE";
5372 this._DataBase =
"COMUNES";
5373 this._Tabla =
"PREVI_CL";
5374 this._TituloMantenimiento =
"Previsiones de cobro";
5375 this._Pregunta_Borrar =
"¿Desea eliminar el registro?";
5376 this._FormManteBaseType = typeof(Forms.frmPrevisionCobroMante);
5377 this.
Navegacion._Condicion =
"EMPRESA = " + DB.SQLString(_lcEmpresa);
5385 private DialogResult Gestionar_Pregunta(
string tcPregunta =
"")
5387 DialogResult ldrResp = DialogResult.OK;
5389 if (this._Mostrar_Mensajes)
5393 ldrResp = loForm.
_MessageBox(tcPregunta, MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, DialogResult.OK);
5406 private void Gestionar_Mensaje(
string tcMensaje =
"",
string tcOrigen =
"")
5408 _Error_Message = tcMensaje;
5410 if (_Mostrar_Mensajes)
5414 loForm.
_MessageBox(tcMensaje, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, DialogResult.OK);
5418 _Error_Message +=
" (" + tcOrigen +
")";
5426 private void Mostrar_Asiento(
string tcAsi =
"")
5428 if (
string.IsNullOrWhiteSpace(tcAsi))
5445 private bool Asentar_Impago(DateTime tdFechaAsientoImpago,
bool tlAsentarGastos, decimal tnGastos, PrevisionCobro toPrevisionNueva, ref
string tcAsi)
5448 string lcDivisa = toPrevisionNueva._Divisa;
5449 decimal lnCambio = toPrevisionNueva._Cambio;
5450 decimal lnNuevoImporte = toPrevisionNueva._Importe;
5451 decimal lnNuevoImporteDivisa = toPrevisionNueva._ImporteDiv;
5453 string lcGastosDivisa = toPrevisionNueva._ImpagoGastosBancariosDivisa;
5454 decimal lnGastosCambio = toPrevisionNueva._ImpagoGastosBancariosCambio;
5455 decimal lnRepercDivisa = toPrevisionNueva._ImpagoRepercutirImporte;
5457 string lcBanco = toPrevisionNueva._Banco;
5458 bool llRepercutirGastos = toPrevisionNueva._ImpagoRepercutirGastos;
5459 string lcCuentaGastos = toPrevisionNueva._ImpagoGastosBancariosCuenta;
5460 string lcCuentaReperc = toPrevisionNueva._ImpagoRepercutirCuenta;
5462 bool llFacturaRepercutir = toPrevisionNueva._ImpagoRepercutirFacturaGenerar;
5466 string lcCtaGastos =
string.IsNullOrWhiteSpace(lcCuentaGastos) ? (
"626" +
new string(
'0', lnDigitos - 4) +
"1") : lcCuentaGastos;
5470 _Empresa = _Empresa,
5471 _Fecha = tdFechaAsientoImpago,
5472 _Factura =
string.Empty,
5473 _Proveedor =
string.Empty,
5480 if (tnGastos == 0.0M || tlAsentarGastos ==
false)
5482 string definicion =
string.Empty;
5485 if (llRepercutirGastos && !llFacturaRepercutir)
5487 var esMonedaEmpresa = lcDivisa == _lcMonedaEmpresa;
5489 #region Asiento repercusión 5494 _Fecha = tdFechaAsientoImpago,
5495 _Divisa = esMonedaEmpresa ? lcDivisa : lcGastosDivisa,
5496 _Cambio = esMonedaEmpresa ? lnCambio : lnGastosCambio
5499 definicion =
"Repercusión impago N/Fra. " + _Factura.Trim() +
"/" + _Orden.ToString().Trim();
5501 CrearLineaAsientoDEBE(ref loAsiento, _Cliente, definicion, lnRepercDivisa, lnRepercDivisa);
5502 CrearLineaAsientoHABER(ref loAsiento, lcCuentaReperc, definicion, lnRepercDivisa, lnRepercDivisa);
5506 #endregion Asiento repercusión 5510 #region Asiento devolución 5514 _Fecha = tdFechaAsientoImpago,
5519 definicion =
"Devolución N/Fra. " + _Factura.Trim() +
"/" + _Orden.ToString().Trim();
5521 CrearLineaAsientoHABER(ref loAsiento, lcBanco, definicion, lnNuevoImporte, lnNuevoImporteDivisa);
5522 CrearLineaAsientoDEBE(ref loAsiento, _Cliente, definicion, lnNuevoImporte, lnNuevoImporteDivisa);
5526 #endregion Asiento devolución 5533 if (!llRepercutirGastos)
5535 if (lcDivisa == _lcMonedaEmpresa)
5538 #region Asientos de la devolución 5542 loAsiento.
_Cambio = lnGastosCambio;
5543 var definicion =
"Devolución N/Fra. " + _Factura.Trim() +
"/" + _Orden.ToString().Trim();
5545 CrearLineaAsientoHABER(ref loAsiento, lcBanco, definicion, lnNuevoImporte + tnGastos, lnNuevoImporte + tnGastos);
5546 CrearLineaAsientoDEBE(ref loAsiento, _Cliente, definicion, lnNuevoImporte, lnNuevoImporte);
5548 definicion =
"Gastos impago N/Fra. " + _Factura.Trim() +
"/" + _Orden.ToString().Trim();
5549 CrearLineaAsientoDEBE(ref loAsiento, lcCuentaGastos, definicion, tnGastos, tnGastos);
5551 #endregion Asientos de la devolución 5557 #region Asiento de los gastos 5560 loAsiento.
_Divisa = lcGastosDivisa;
5561 loAsiento.
_Cambio = lnGastosCambio;
5563 var definicion =
"Gastos impago N/Fra. " + _Factura.Trim() +
"/" + _Orden.ToString().Trim();
5565 CrearLineaAsientoHABER(ref loAsiento, lcBanco, definicion, tnGastos, tnGastos);
5566 CrearLineaAsientoDEBE(ref loAsiento, lcCuentaGastos, definicion, tnGastos, tnGastos);
5571 #endregion Asiento de los gastos 5573 #region Asiento de la devolución 5578 _Fecha = tdFechaAsientoImpago,
5583 definicion =
"Devolución N/Fra. " + _Factura.Trim() +
"/" + _Orden.ToString().Trim();
5585 CrearLineaAsientoHABER(ref loAsiento, lcBanco, definicion, lnNuevoImporte, lnNuevoImporteDivisa);
5586 CrearLineaAsientoDEBE(ref loAsiento, _Cliente, definicion, lnNuevoImporte, lnNuevoImporteDivisa);
5590 #endregion Asiento de la devolución 5598 if (lcDivisa == _lcMonedaEmpresa)
5600 var definicion =
string.Empty;
5601 if (!llFacturaRepercutir)
5603 #region Asiento repercusión 5608 _Fecha = tdFechaAsientoImpago,
5613 definicion =
"Repercusión impago N/Fra. " + _Factura.Trim() +
"/" + _Orden.ToString().Trim();
5615 CrearLineaAsientoDEBE(ref loAsiento, _Cliente, definicion, lnRepercDivisa, lnRepercDivisa);
5616 CrearLineaAsientoHABER(ref loAsiento, lcCuentaReperc, definicion, lnRepercDivisa, lnRepercDivisa);
5621 #endregion Asiento repercusión 5623 #region Asiento de la devolución 5628 _Fecha = tdFechaAsientoImpago,
5633 definicion =
"Devolución N/Fra. " + _Factura.Trim() +
"/" + _Orden.ToString().Trim();
5635 CrearLineaAsientoHABER(ref loAsiento, lcBanco, definicion, lnNuevoImporte + tnGastos, lnNuevoImporteDivisa + tnGastos);
5636 CrearLineaAsientoDEBE(ref loAsiento, _Cliente, definicion, lnNuevoImporte, lnNuevoImporteDivisa);
5638 definicion =
"Gastos impago Fra. " + _Factura.Trim() +
"/" + _Orden.ToString().Trim();
5639 CrearLineaAsientoDEBE(ref loAsiento, lcCtaGastos, definicion, tnGastos, tnGastos);
5643 #endregion Asiento de la devolución 5649 #region Asiento de los gastos 5652 loAsiento.
_Divisa = lcGastosDivisa;
5653 loAsiento.
_Cambio = lnGastosCambio;
5655 var definicion =
"Gastos impago N/Fra. " + _Factura.Trim() +
"/" + _Orden.ToString().Trim();
5657 CrearLineaAsientoHABER(ref loAsiento, lcBanco, definicion, tnGastos, tnGastos);
5658 CrearLineaAsientoDEBE(ref loAsiento, lcCuentaGastos, definicion, tnGastos, tnGastos);
5662 #endregion Asiento de los gastos 5664 if (!llFacturaRepercutir)
5666 #region Asiento repercusión 5671 _Fecha = tdFechaAsientoImpago,
5672 _Divisa = lcGastosDivisa,
5673 _Cambio = lnGastosCambio
5677 definicion =
"Repercusión impago N/Fra. " + _Factura.Trim() +
"/" + _Orden.ToString().Trim();
5679 CrearLineaAsientoDEBE(ref loAsiento, _Cliente, definicion, lnRepercDivisa, lnRepercDivisa);
5680 CrearLineaAsientoHABER(ref loAsiento, lcCuentaReperc, definicion, lnRepercDivisa, lnRepercDivisa);
5685 #endregion Asiento repercusión 5687 #region Asiento de la devolución 5692 _Fecha = tdFechaAsientoImpago,
5697 definicion =
"Devolución N/Fra. " + _Factura.Trim() +
"/" + _Orden.ToString().Trim();
5699 CrearLineaAsientoHABER(ref loAsiento, lcBanco, definicion, lnNuevoImporte, lnNuevoImporteDivisa);
5700 CrearLineaAsientoDEBE(ref loAsiento, _Cliente, definicion, lnNuevoImporte, lnNuevoImporteDivisa);
5702 #endregion Asiento de la devolución 5709 llOk = loAsiento.
_Save();
5712 tcAsi = loAsiento.
_Lineas[0]._Asi;
5729 private void CrearLineaAsientoDEBE(ref
Asientos asiento,
string cuenta,
string definicion, decimal importe, decimal importediv)
5731 var lineaNueva = asiento._AddLinea();
5732 lineaNueva._Cuenta = cuenta;
5733 lineaNueva._Definicion = definicion;
5735 if (lineaNueva._Divisa == EW_GLOBAL._Empresa._Moneda)
5737 lineaNueva._Debe = importe;
5741 lineaNueva._DebeDiv = importediv;
5754 private void CrearLineaAsientoHABER(ref
Asientos asiento,
string cuenta,
string definicion, decimal importe, decimal importediv)
5756 var lineaNueva = asiento._AddLinea();
5757 lineaNueva._Cuenta = cuenta;
5758 lineaNueva._Definicion = definicion;
5760 if (lineaNueva._Divisa == EW_GLOBAL._Empresa._Moneda)
5762 lineaNueva._Haber = importe;
5766 lineaNueva._HaberDiv = importediv;
5778 private DateTime Calcular_Fecha_Vencimiento(DateTime? tdDiaPago1, DateTime? tdDiaPago2, DateTime tdDiaVencimiento)
5780 DateTime ldFechaVencimiento = tdDiaVencimiento;
5782 if (tdDiaPago1 != null && tdDiaPago2 != null)
5784 if (tdDiaVencimiento > tdDiaPago1 && tdDiaVencimiento < tdDiaPago2)
5785 ldFechaVencimiento = Convert.ToDateTime(tdDiaPago2);
5786 else if (tdDiaVencimiento > tdDiaPago1 && tdDiaVencimiento > tdDiaPago2)
5787 ldFechaVencimiento = Convert.ToDateTime(tdDiaPago1).AddMonths(1);
5788 else if (tdDiaVencimiento <= tdDiaPago1)
5789 ldFechaVencimiento = Convert.ToDateTime(tdDiaPago1);
5791 else if (tdDiaPago1 != null && tdDiaPago2 == null)
5793 if (tdDiaVencimiento > tdDiaPago1)
5794 ldFechaVencimiento = Convert.ToDateTime(tdDiaPago1).AddMonths(1);
5795 else if (tdDiaVencimiento <= tdDiaPago1)
5796 ldFechaVencimiento = Convert.ToDateTime(tdDiaPago1);
5799 return ldFechaVencimiento;
5811 private bool Es_Valido_Vencimiento(DateTime? tdVencimientoAnterior, DateTime? tdVencimiento, ref
int tnDiasIntento)
5813 bool llVencimientoOK = (tdVencimientoAnterior == null || tdVencimiento > tdVencimientoAnterior);
5815 if (llVencimientoOK)
5818 tnDiasIntento = tnDiasIntento + 1;
5820 if (tnDiasIntento > 91)
5821 llVencimientoOK =
true;
5823 return llVencimientoOK;
5833 private bool Consultar_Previsiones(EstadoPrevisiones tcEstadoPrevision, ref DataTable tdtPrevisiones)
5836 string lcEmpresa =
string.IsNullOrWhiteSpace(this._Empresa) ? Convert.ToString(_lcEmpresa) : this._Empresa;
5838 string lcSql =
"Select empresa,periodo,factura,orden,impagado,pendiente " +
5839 "From " + DB.SQLDatabase(
"comunes",
"previ_cl") +
" " +
5840 "where empresa =" + DB.SQLString(lcEmpresa);
5843 if (_dFechaIni != null)
5844 lcSql = lcSql +
" and vencim >= " + DB.SQLString(_dFechaIni);
5846 if (_dFechaFin != null)
5847 lcSql = lcSql +
" and vencim <= " + DB.SQLString(_dFechaFin);
5850 if (_Ejercicio != 0)
5851 lcSql = lcSql +
" and periodo =" + DB.SQLString(_Ejercicio);
5854 if (!
string.IsNullOrWhiteSpace(_Factura))
5855 lcSql = lcSql +
" and factura =" + DB.SQLString(_Factura);
5858 if (!
string.IsNullOrWhiteSpace(_Cliente))
5859 lcSql = lcSql +
" and cliente =" + DB.SQLString(_Cliente);
5861 if (!
String.IsNullOrEmpty(_Divisa)) lcSql = lcSql +
String.Format(
" AND DIVISA = '{0}' ", _Divisa);
5864 switch (tcEstadoPrevision)
5866 case EstadoPrevisiones.Cobradas:
5868 if (!
string.IsNullOrWhiteSpace(_cBancoIni + _cBancoFin))
5870 lcSql = lcSql +
" and banco >= " + DB.SQLString(_cBancoIni) +
" and banco <=" + DB.SQLString(_cBancoFin);
5873 lcSql = lcSql +
" and (remesa!=0 or refundir!='' or asiento=1 or pagare!='') ";
5876 case EstadoPrevisiones.Pendientes:
5878 if (!
string.IsNullOrWhiteSpace(_cBancoIni + _cBancoFin))
5880 lcSql = lcSql +
" and banco_prev >= " + DB.SQLString(_cBancoIni) +
" and banco_prev <=" + DB.SQLString(_cBancoFin);
5883 lcSql = lcSql +
" and asiento=0 and impagado=0 and banco='' and remesa=0 and pagare='' ";
5886 case EstadoPrevisiones.Impagadas:
5888 lcSql = lcSql +
" and impago='S' and impagado!=0 ";
5891 case EstadoPrevisiones.Todas:
5893 if (!
string.IsNullOrWhiteSpace(_cBancoIni + _cBancoFin))
5895 lcSql = lcSql +
" and ((banco_prev >= " + DB.SQLString(_cBancoIni) +
" and banco_prev <=" + DB.SQLString(_cBancoFin) +
") or (banco >= " + DB.SQLString(_cBancoIni) +
" and banco <=" + DB.SQLString(_cBancoFin) +
")) ";
5903 lcSql = lcSql +
" order by factura,orden,vencim ";
5905 llOk = DB.SQLExec(lcSql, ref tdtPrevisiones);
5906 llOk = llOk && (tdtPrevisiones.Rows.Count > 0);
5916 private bool Contabilizar_Duplicar_Prevision(Decimal tnImporteEntrega)
5919 PrevisionCobro loPrevisionNueva = null;
5920 decimal lnOldImporte = 0;
5921 decimal lnNewImporte = 0;
5923 if (this._Divisa == EW_GLOBAL._Moneda._Codigo)
5925 lnOldImporte = this._Importe;
5926 lnNewImporte = this._Importe;
5930 lnOldImporte = this._ImporteDiv;
5931 lnNewImporte = this._ImporteDiv;
5936 if (Math.Abs(tnImporteEntrega) < Math.Abs(lnNewImporte))
5940 decimal lnImportePendiente = Math.Abs(lnNewImporte) - Math.Abs(tnImporteEntrega);
5941 if (tnImporteEntrega < 0 & lnNewImporte < 0)
5942 lnImportePendiente = lnImportePendiente * (-1);
5944 decimal lnImportePendienteEuro = 0;
5946 if (this._Divisa == EW_GLOBAL._Moneda._Codigo)
5948 this._Importe = tnImporteEntrega;
5949 this._ImporteDiv = tnImporteEntrega;
5955 this._ImporteDiv = tnImporteEntrega;
5976 int lnPendiente = this._Pendiente;
5978 this._Pendiente = this.Buscar_Pendiente();
5981 _lCobroParcial =
true;
5982 llOk = this._Save();
5985 int lnOrdenLast = 0;
5989 List<PrevisionCobro> lstPrevTemp = this._Lista_Previsiones();
5990 lnOrdenLast = lstPrevTemp.Where(x => x._Orden >= _Orden).Select(x => x._Orden).Last();
5996 loPrevisionNueva =
new PrevisionCobro();
5998 if (_Divisa == EW_GLOBAL._Moneda._Codigo)
6001 loPrevisionNueva._New(_Cliente, _Empresa, _Factura,
6002 (_lCobroParcial ? lnOrdenLast + 1 : Convert.ToInt32(
this._Numereb)), _Impagado, lnPendiente,
6003 lnImportePendiente, Convert.ToDateTime(_Fecha_Emision),
6004 Convert.ToDateTime(_Fecha_Vencim),
6005 _Divisa, _Num_Banco,
6006 _Referencia, _SIIFraMod,
6007 (_Fecha_Operacion == null ? _Fecha_Operacion : Convert.ToDateTime(_Fecha_Operacion)),
6008 _Vendedor, _Forma_Pago,
6009 _Mandato, _Recc, _Ejercicio, _Cobrador, _Cambio, lnImportePendiente,
6010 _Impreso, _Impago, _Concepto);
6014 loPrevisionNueva._New(_Cliente, _Empresa, _Factura,
6015 (_lCobroParcial ? lnOrdenLast + 1 : Convert.ToInt32(
this._Numereb)), _Impagado, lnPendiente,
6016 lnImportePendienteEuro, Convert.ToDateTime(_Fecha_Emision),
6017 Convert.ToDateTime(_Fecha_Vencim),
6018 _Divisa, _Num_Banco,
6019 _Referencia, _SIIFraMod,
6020 (_Fecha_Operacion == null ? _Fecha_Operacion : Convert.ToDateTime(_Fecha_Operacion)),
6021 _Vendedor, _Forma_Pago,
6022 _Mandato, _Recc, _Ejercicio, _Cobrador, _Cambio, lnImportePendiente,
6023 _Impreso, _Impago, _Concepto);
6025 _lCobroParcial =
false;
6030 llOk = this._Save();
6050 private bool Contabilizar_Comprobacion(DateTime tdFecha, decimal tnImporteEntrega)
6052 DateTime ldFechaIniPeriodo = Convert.ToDateTime(EW_GLOBAL._GetVariable(
"wd_periodoini"));
6053 DateTime ldFechaFinPeriodo = Convert.ToDateTime(EW_GLOBAL._GetVariable(
"wd_periodofin"));
6056 if (tdFecha < ldFechaIniPeriodo || tdFecha > ldFechaFinPeriodo)
6058 if (this.Gestionar_Pregunta(
"Fecha de cobro de la previsión (asiento de cobro) no está dentro del margen de fechas del ejercicio vigente." +
6059 Environment.NewLine + Environment.NewLine +
"¿ Desea continuar con el cobro ?") == DialogResult.Cancel)
6064 if (
string.IsNullOrWhiteSpace(this._Factura) ||
string.IsNullOrWhiteSpace(this._Empresa))
6066 this.Gestionar_Mensaje(
"El objeto PrevisionCobro no está cargado con datos.",
"_Contabilizar");
6071 decimal lnImportePrevision = this._llDivisaVentas && !
string.IsNullOrWhiteSpace(this._Divisa) && this._Divisa != this._lcMonedaEmpresa ? this._ImporteDiv : this._Importe;
6074 if (Math.Abs(tnImporteEntrega) > Math.Abs(lnImportePrevision))
6076 this.Gestionar_Mensaje(
"El importe que se cobra (" + tnImporteEntrega.ToString().Trim() +
") no puede superar el importe de la previsión " +
6077 "(" + lnImportePrevision.ToString().Trim() +
")",
"_Contabilizar");
6082 decimal tnImporteDif = Math.Abs(lnImportePrevision) - Math.Abs(tnImporteEntrega);
6083 decimal lnImpPrevision = Math.Abs(lnImportePrevision);
6084 decimal lnImpEntrega = Math.Abs(tnImporteEntrega);
6085 if (tnImporteDif > 0 && tnImporteDif < 1)
6090 int loDecimalesPrev = loDivisaPrev.
_Decimales;
6093 string lcDifImpPrevision = Convert.ToString(lnImportePrevision);
6095 nPos = lcDifImpPrevision.IndexOf(
",");
6097 lcDifImpPrevision = lcDifImpPrevision.Substring(0, (nPos + 1 + loDecimalesPrev));
6101 string lcDifImpEntrega = Convert.ToString(tnImporteEntrega);
6104 nPosE = lcDifImpEntrega.IndexOf(
",");
6106 lcDifImpEntrega = lcDifImpEntrega.Substring(0, (nPos + 1 + loDecimalesPrev));
6109 if (lcDifImpPrevision == lcDifImpEntrega)
6111 this.Gestionar_Mensaje(
"El importe que se cobra (" + tnImporteEntrega.ToString().Trim() +
") no puede ser diferente al importe de la previsión " +
6112 "(" + lnImportePrevision.ToString().Trim() +
")",
"_Contabilizar");
6120 if (!
string.IsNullOrWhiteSpace(this._Asi))
6122 this.Gestionar_Mensaje(
"La previsión de cobro " + this._Factura.Trim() +
"/" + this._Orden.ToString().Trim() +
" ya se encuentra contabilizada.",
"_Contabilizar");
6136 private bool _Insertar_Trazabilidad_Impagos(
string tcGuid_id,
string tcTipo)
6138 string lcSql =
string.Empty;
6140 lcSql =
" Insert into " + DB.SQLDatabase(
"COMUNES",
"IMPAGOS") +
" (GUID_IDORI, GUID_IDDES, TIPO) " +
6141 " VALUES (" + DB.SQLString(_Guid_Id) +
"," + DB.SQLString(tcGuid_id) +
"," + DB.SQLString(tcTipo) +
")";
6143 return DB.SQLExec(lcSql);
6153 private bool _Eliminar_Trazabilidad_Impagos(
string tcGuid_iddes,
string tcGuid_idori =
"")
6155 string lcSql =
string.Empty;
6157 lcSql =
" Delete From " + DB.SQLDatabase(
"COMUNES",
"IMPAGOS") +
6158 " Where GUID_IDDES = " + DB.SQLString(tcGuid_iddes);
6160 if (!
string.IsNullOrWhiteSpace(tcGuid_idori))
6161 lcSql +=
" And GUID_IDORI = " + DB.SQLString(tcGuid_idori);
6163 return DB.SQLExec(lcSql);
6167 #region MÉTODOS EXTENSIONES 6177 protected internal bool _Addons_Dividir(
TipoExecute teBeforeAfter, List<int> tlisDias)
6182 foreach (KeyValuePair<string, object> loItem
in this._Addons)
6194 catch (Exception loEx)
6196 DB.Registrar_Error(loEx);
6197 this._Addons_Messagebox(loItem.Key,
"Dividir", loEx.Message);
6213 protected internal bool _Addons_Dividir(
TipoExecute teBeforeAfter, DataTable tdtVencimientos)
6218 foreach (KeyValuePair<string, object> loItem
in this._Addons)
6227 loExtension.
_Dividir(tdtVencimientos);
6230 catch (Exception loEx)
6232 DB.Registrar_Error(loEx);
6233 this._Addons_Messagebox(loItem.Key,
"Dividir", loEx.Message);
6246 protected internal bool _Addons_Desasentar(
TipoExecute teBeforeAfter)
6251 foreach (KeyValuePair<string, object> loItem
in this._Addons)
6263 catch (Exception loEx)
6265 DB.Registrar_Error(loEx);
6266 this._Addons_Messagebox(loItem.Key,
"Desasentar", loEx.Message);
6282 protected internal bool _Addons_Descontabilizar(
TipoExecute teBeforeAfter,
bool tlForzarDesmarcarPrevision)
6287 foreach (KeyValuePair<string, object> loItem
in this._Addons)
6299 catch (Exception loEx)
6301 DB.Registrar_Error(loEx);
6302 this._Addons_Messagebox(loItem.Key,
"Descontabilizar", loEx.Message);
6320 protected internal bool _Addons_Contabilizar(
TipoExecute teBeforeAfter, Dictionary<string, decimal> tdicCobros, DateTime tdFecha, decimal tnCambio,
Asientos toAsiento)
6325 foreach (KeyValuePair<string, object> loItem
in this._Addons)
6334 loExtension.
_Contabilizar(tdicCobros, tdFecha, tnCambio, toAsiento);
6337 catch (Exception loEx)
6339 DB.Registrar_Error(loEx);
6340 this._Addons_Messagebox(loItem.Key,
"Contabilizar", loEx.Message);
6358 protected internal bool _Addons_Contabilizar(
TipoExecute teBeforeAfter, Dictionary<
string, Tuple<decimal, List<Tuple<decimal, string, string>>>> tdicCobros, DateTime tdFecha, decimal tnCambio,
Asientos toAsiento)
6363 foreach (KeyValuePair<string, object> loItem
in this._Addons)
6372 loExtension.
_Contabilizar(tdicCobros, tdFecha, tnCambio, toAsiento);
6375 catch (Exception loEx)
6377 DB.Registrar_Error(loEx);
6378 this._Addons_Messagebox(loItem.Key,
"Contabilizar", loEx.Message);
6395 protected internal bool _Addons_Contabilizar(
TipoExecute teBeforeAfter,
string tcBanco, DateTime tdFecha, decimal tnImporteEntrega,
Asientos toAsiento)
6400 foreach (KeyValuePair<string, object> loItem
in this._Addons)
6409 loExtension.
_Contabilizar(tcBanco, tdFecha, tnImporteEntrega, toAsiento);
6412 catch (Exception loEx)
6414 DB.Registrar_Error(loEx);
6415 this._Addons_Messagebox(loItem.Key,
"Contabilizar", loEx.Message);
6435 protected internal bool _Addons_Contabilizar(
TipoExecute teBeforeAfter,
string tcBanco, DateTime tdFecha, decimal tnImporteEntrega, decimal tnCambio,
Asientos toAsiento,
bool tlGroup)
6440 foreach (KeyValuePair<string, object> loItem
in this._Addons)
6449 loExtension.
_Contabilizar(tcBanco, tdFecha, tnImporteEntrega, tnCambio, toAsiento, tlGroup);
6452 catch (Exception loEx)
6454 DB.Registrar_Error(loEx);
6455 this._Addons_Messagebox(loItem.Key,
"Contabilizar", loEx.Message);
6473 protected internal bool _Addons_Contabilizar(
TipoExecute teBeforeAfter,
string tcBanco, DateTime tdFecha, decimal tnImporteEntrega,
string tcAsi)
6478 foreach (KeyValuePair<string, object> loItem
in this._Addons)
6487 loExtension.
_Contabilizar(tcBanco, tdFecha, tnImporteEntrega, tcAsi);
6490 catch (Exception loEx)
6492 DB.Registrar_Error(loEx);
6493 this._Addons_Messagebox(loItem.Key,
"Contabilizar", loEx.Message);
6515 protected internal bool _Addons_Clonar(
TipoExecute teBeforeAfter, PrevisionCobro toPrevision,
string tcEmpresa,
int tnEjercicio,
string tcFactura,
int tnOrden,
int tnImpagado,
int tnPendiente)
6520 foreach (KeyValuePair<string, object> loItem
in this._Addons)
6529 loExtension.
_Clonar(toPrevision, tcEmpresa, tnEjercicio, tcFactura, tnOrden, tnImpagado, tnPendiente);
6532 catch (Exception loEx)
6534 DB.Registrar_Error(loEx);
6535 this._Addons_Messagebox(loItem.Key,
"Clonar", loEx.Message);
6572 protected internal bool _Addons_New(
TipoExecute teBeforeAfter,
string tcCliente,
string tcEmpresa,
string tcFactura,
int tnOrden,
int tnImpagado,
int tnPendiente, decimal tnImporte, DateTime tdEmision,
6573 DateTime tdVencim,
string tcMoneda,
int tnNum_Banco, DateTime? tdFecha_Oper,
string tcVendedor,
string tcFpago,
6574 string tcMandato,
bool tlRecc,
int tnPeriodo,
string tcCobrador, decimal tnCambio, decimal tnImporteDiv,
6575 string tcImpreso,
string tcImpago,
string tcConcepto)
6580 foreach (KeyValuePair<string, object> loItem
in this._Addons)
6589 loExtension.
_New(tcCliente, tcEmpresa, tcFactura, tnOrden, tnImpagado, tnPendiente, tnImporte, tdEmision,
6590 tdVencim, tcMoneda, tnNum_Banco, tdFecha_Oper, tcVendedor, tcFpago,
6591 tcMandato, tlRecc, tnPeriodo, tcCobrador =
"", tnCambio, tnImporteDiv,
6592 tcImpreso, tcImpago, tcConcepto);
6595 catch (Exception loEx)
6597 DB.Registrar_Error(loEx);
6598 this._Addons_Messagebox(loItem.Key,
"New", loEx.Message);
6611 protected internal bool _Addons_Permite_Delete_Prevision(
TipoExecute teBeforeAfter)
6616 foreach (KeyValuePair<string, object> loItem
in this._Addons)
6628 catch (Exception loEx)
6630 DB.Registrar_Error(loEx);
6631 this._Addons_Messagebox(loItem.Key,
"Permite_Delete_Prevision", loEx.Message);
6644 protected internal bool _Addons_Perdonar(
TipoExecute teBeforeAfter)
6649 foreach (KeyValuePair<string, object> loItem
in this._Addons)
6661 catch (Exception loEx)
6663 DB.Registrar_Error(loEx);
6664 this._Addons_Messagebox(loItem.Key,
"Perdonar", loEx.Message);
6679 protected internal bool _Addons_Impagar(
TipoExecute teBeforeAfter, DateTime tdFechaAsientoImpago)
6684 foreach (KeyValuePair<string, object> loItem
in this._Addons)
6693 loExtension.
_Impagar(tdFechaAsientoImpago);
6696 catch (Exception loEx)
6698 DB.Registrar_Error(loEx);
6699 this._Addons_Messagebox(loItem.Key,
"Impagar", loEx.Message);
6707 #endregion MÉTODOS EXTENSIONES 6710 #endregion METODOS PRIVADOS 6719 #region PROPIEDADES PRIVADAS 6722 private Recibo _oRecibo = null;
6725 #endregion PROPIEDADES PRIVADAS 6728 #region PROPIEDADES PUBLIC 6738 if (!(_oRecibo is
Recibo))
6743 String lcDatosCliente =
"";
6744 Dictionary<string, object> loDir = null;
6747 switch (_TipoRecibo)
6779 _oRecibo.
_Lugar = _Empresa._Poblacion;
6781 if (!String.IsNullOrEmpty(loPrevision.
_Cliente))
6784 if (loDir.Count() > 0)
6786 lcDatosCliente += loCliente.
_Nombre + Environment.NewLine;
6787 lcDatosCliente += String.IsNullOrEmpty(loDir[
"direccion"].ToString().Trim()) ? String.Empty : loDir[
"direccion"].ToString().Trim() + Environment.NewLine;
6788 lcDatosCliente += String.IsNullOrEmpty(loDir[
"codpos"].ToString().Trim()) ? String.Empty : loDir[
"codpos"].ToString().Trim() +
" " + loDir[
"poblacion"].ToString().Trim() + Environment.NewLine;
6789 lcDatosCliente += String.IsNullOrEmpty(loDir[
"provincia"].ToString().Trim()) ? String.Empty : loDir[
"provincia"].ToString().Trim() + Environment.NewLine;
6796 Dictionary<string, object> loDic = loCliente.
_Banco(Convert.ToString(loPrevision.
_Num_Banco));
6798 if (loDic.Count() > 0)
6800 _oRecibo.
_Banco_Cuenta = functions.FUNCTIONS._Formatear_Cuenta_Bancaria(Convert.ToString(loDic[
"tipocta"]), Convert.ToString(loDic[
"iban"]), Convert.ToString(loDic[
"cuentaiban"]).Trim());
6813 #endregion PROPIEDADES PUBLIC 6824 _Documento = loDocumentoImprimible;
6826 _PresentarPantallaImpresion =
true;
6830 #endregion CONSTRUCTOR 6833 #region MÉTODOS PRIVADOS 6841 void EventoDocPrint_Exportacion_Finalizada(
object sender, ewbase.DocPrint.ExportEventArgs e)
6845 _cPDF_File = e._Path;
6849 #endregion MÉTODOS PRIVADOS 6852 #region PROPIEDADES PUBLIC OVERRIDE 6857 public bool _AllowEditMode {
get;
set; } =
true;
6862 public override String _Printer
6866 return ((
DocPrint)_Recibo._DocPrint)._Printer;
6870 ((
DocPrint)_Recibo._DocPrint)._Printer = value;
6878 public override TipoRecibo _TipoRecibo
6882 return base._TipoRecibo;
6886 base._TipoRecibo = value;
6895 public override UserControl _UserControlAdicional
6899 if (_oUserControlAdicional == null)
6901 _oUserControlAdicional =
new UserControls.OpcionesImpresionRecibos();
6902 ((
UserControls.OpcionesImpresionRecibos)_oUserControlAdicional)._Copias = _Numero_Copias;
6904 if (_Documento != null)
6910 return _oUserControlAdicional;
6914 _oUserControlAdicional = value;
6919 #endregion PROPIEDADES PUBLIC OVERRIDE 6922 #region MÉTODOS PUBLIC OVERRIDE 6931 Boolean llOk =
true;
6932 Recibo loRecibo = _Recibo;
6941 loMulti.
_Items.Add(loRecibo);
6950 if (loTmp._Vista_Preliminar)
6952 loTmp._ImpresionVistaPreliminar += () => { ((
IMarcaImpreso)_Documento)._Printed(); };
6956 loTmp._Printer = loDocPrint.
_Printer;
6963 if (_PresentarPantallaImpresion)
6965 loTmp._Evento_Exportacion_Finalizada -=
new ewbase.DocPrint._Evento_Exportacion_Completada(EventoDocPrint_Exportacion_Finalizada);
6966 if (loTmp._Exportar) loTmp._Evento_Exportacion_Finalizada +=
new ewbase.DocPrint._Evento_Exportacion_Completada(EventoDocPrint_Exportacion_Finalizada);
6971 _PresentarFichero();
6987 toDocPrint = base.
_Clonar(toDocPrint);
6993 #endregion MÉTODOS PUBLIC OVERRIDE 7002 #region PROPIEDADES PRIVADAS 7008 #endregion PROPIEDADES PRIVADAS 7011 #region PROPIEDADES PUBLICAS 7017 public decimal _Cambio
7033 public string _Divisa
7045 if (_Cambio == 0 || llChanged)
7057 public DateTime _Fecha
7067 if (value == DateTimePicker.MinimumDateTime)
7091 if (_oDivisaImpago == null)
7092 _oDivisaImpago =
new Divisa(_Divisa);
7093 return _oDivisaImpago;
7097 _oDivisaImpago = value;
7100 private Divisa _oDivisaImpago = null;
7103 #endregion PROPIEDADES PUBLICAS 7115 _oInstancia = toPrevisionCobro;
7128 #endregion CONSTRUCTOR 7131 #region MÉTODOS PRIVADOS 7137 private void obtenerCambio()
7141 if (!
string.IsNullOrWhiteSpace(_Divisa))
7169 #endregion MÉTODOS PRIVADOS Boolean _SaveHistoricoCambioCierre()
Guarda el registro para el historico de cierre
decimal _DebeDiv
Importe de la partida DEBE en divisa
string _Vendedor
Código de vendedor
void _New(string tcCliente, string tcEmpresa, string tcFactura, int tnOrden, int tnImpagado, int tnPendiente, decimal tnImporte, DateTime tdEmision, DateTime tdVencim, string tcMoneda, int tnNum_Banco, DateTime? tdFecha_Oper, string tcVendedor="", string tcFpago="", string tcMandato="", bool tlRecc=false, int tnPeriodo=0, string tcCobrador="", decimal tnCambio=1, decimal tnImporteDiv=0, string tcImpreso="N", string tcImpago="N", string tcConcepto="")
Crea una nueva previsión de cobro a partir de los parámetros indicados y la carga en el objeto...
bool _Delete(IAsientosLinea toIAsientosLinea)
Al borrar un asiento de traspaso de saldo RECC (tipo_mov 8 o 9) eliminamos el registro correspondient...
Clase de negocio para visualizar los giros.
string _Lugar
Lugar donde se entrega (por defecto será la población de la empresa)
Clase de negocio base para mantenimientos
string _ImpagoRepercutirTipoIva
Tipo de IVA de la factura de gastos a repercutir al cliente
string _Cliente
Código de cliente
DateTime _Fecha_Expedicion
Fecha de expedición
string _Cliente
Cliente del recibo especial
string _Cobrador
Código de cobrador
int _TipoFactura
Tipo de factura: 0 normal, 1 rectificativa, 2 tickets
Clase para las previsiones de cobro
DocPrintPrevisionCobro(IDocumentoImprimible loDocumentoImprimible)
Constructor
DateTime _Fecha_Remesa
Fecha de remesa
static void LineasGirosPrcRepartoDeclaradosOk(List< LineaGiro > tlisGiros)
Al facturar ventas o compras, sea cual sea el origen, al generar previsiones, al principio del método...
bool _Perdonar()
Perdonar la previsión, marcar como cobrada
static bool _GenerarFacturaVenta(ParamGenFactVenta toCfgGenFactVenta)
Realiza proceso de generación de factura de venta a contabilidad (sin albaranes de venta de por medio...
virtual string _Nombre
Nombre
string _Mensaje_Error
Mensaje de error
bool ExistePrevision(string tcEmpresa, string tcFactura, int tcPeriodo, out int tnorden)
Consulta si existe alguna previsión de la factura y devuelve el primer orden que encuentra Se utiliza...
bool _Vista_Preliminar
Nos indicará si se realizará una vista preliminar del documento
string _Divisa
Moneda de la previsión
string _DatosCliente
Datos cliente
bool _Prevision
Indica si la linea está cargada con una previsión real
string _Banco_Poblacion
Población del banco
string _Banco_Entidad
Entidad del banco
string _Refundir
Nº de fact. refundida
static Asientos _AsientoDiferenciasCambio(List< IAsientosPrevisionesGeneradorLinea > toList)
Crea un asiento de las diferencias de cambio