8 using System.Collections.Generic;
9 using System.ComponentModel;
14 using System.Windows.Forms;
26 public string _IvaRep = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_IvaRep",
"477"));
30 public string _IvaSop = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_IvaSop",
"472"));
34 public string _IvaRecSop = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_recsop",
"472"));
38 public string _IvaRecRep = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_recrep",
"477"));
42 public string _IvaPendSop = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_pendedsop",
""));
46 public string _IvaPendRep = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_pendevrep",
""));
50 public string _IvaRecPendSop = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_recsopcdev",
""));
54 public string _IvaRecPendRep = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_recrepcdev",
""));
58 public string _IvaProrrataSop = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_prtivsopnd",
""));
62 public string _IvaProrrataPendSop = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_prtivsndpd",
""));
67 public string _IvaRep3 = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_IvaRep",
"477")).Substring(0, 3);
71 public string _IvaSop3 = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_IvaSop",
"472")).Substring(0, 3);
75 public string _IvaRecSop3 = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_recsop",
"472")).Substring(0, 3);
79 public string _IvaRecRep3 = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_recrep",
"477")).Substring(0, 3);
83 public string _IvaPendSop3 = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_pendedsop",
"")).Substring(0, 3);
87 public string _IvaPendRep3 = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_pendevrep",
"")).Substring(0, 3);
91 public string _IvaRecPendSop3 = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_recsopcdev",
"")).Substring(0, 3);
95 public string _IvaRecPendRep3 = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_recrepcdev",
"")).Substring(0, 3);
99 public string _IvaProrrataSop3 = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_prtivsopnd",
"")).Substring(0, 3);
103 public string _IvaProrrataPendSop3 = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_prtivsndpd",
"")).Substring(0, 3);
108 public static Int32 _LenCodigo = DB.SQLAnchuraCampo(
"GESTION",
"TIPO_IVA",
"CODIGO");
113 public static Int32 _LenNombre = DB.SQLAnchuraCampo(
"GESTION",
"TIPO_IVA",
"NOMBRE");
142 [Description(
"soportado")]
147 [Description(
"repercutido")]
152 [Description(
"recargo soportado")]
157 [Description(
"recargo repercutido")]
162 [Description(
"soportado pendiente de devengo")]
167 [Description(
"repercutido pendiente de devengo")]
172 [Description(
"recargo soportado pendiente de devengo")]
173 PTE_RECARGO_SOPORTADO,
177 [Description(
"recargo repercutido pendiente de devengo")]
178 PTE_RECARGO_REPERCUTIDO,
182 [Description(
"soportado")]
187 [Description(
"soportado pendiente de devengo")]
188 PTE_PRORRATA_SOPORTADO
191 private string _cCodigoPropuesto;
192 private string _cCodigo;
193 private string _cCodigoTipoImp;
194 private string _cNombre;
195 private string _cNombreDefecto;
196 private static DataTable _oTiposImpuesto = null;
197 private TipoIVA _oTipoIva = null;
199 private Decimal _nPorcentaje;
200 private Decimal _nRecargo;
202 private bool _bDeducible =
true;
203 private bool _bAplicaRecargo =
false;
204 private bool _bIGICImplicito =
false;
205 private bool _bIVAServicios =
false;
206 private bool _bNoSujeto =
false;
207 private bool _bIGIC0 =
false;
208 private bool _bBienesInversion =
false;
211 private string _cCuentaSoportado;
212 private string _cCuentaRepercutido;
213 private string _cCuentaRecargoSoportado;
214 private string _cCuentaRecargoRepercutido;
216 private string _cCuentaSoportadoPte;
217 private string _cCuentaRepercutidoPte;
218 private string _cCuentaRecargoSoportadoPte;
219 private string _cCuentaRecargoRepercutidoPte;
221 private string _cCuentaSoportadoProrrata;
222 private string _cCuentaSoportadoProrrataPte;
224 private string _cCuentaPropuestaSoportado;
225 private string _cCuentaPropuestaRepercutido;
226 private string _cCuentaPropuestaRecargoSoportado;
227 private string _cCuentaPropuestaRecargoRepercutido;
228 private string _cCuentaPropuestaSoportadoPte;
229 private string _cCuentaPropuestaRepercutidoPte;
230 private string _cCuentaPropuestaRecargoSoportadoPte;
231 private string _cCuentaPropuestaRecargoRepercutidoPte;
232 private string _cCuentaPropuestaSoportadoProrrata;
233 private string _cCuentaPropuestaSoportadoProrrataPte;
235 private List<string> _oCuentasPropuestas =
new List<string>();
236 private string _cErrorMessage;
237 private string _cAditionalMessage;
242 private Boolean _bCriterioCaja = FUNCTIONS._UtilizaCriterioCaja();
244 private BackgroundWorker _oWorker;
249 public String _DescripcionTipoImp
253 DataRow loRow = _ObtenerTipoImp();
255 if (loRow is DataRow)
257 _cCodigoTipoImp = Convert.ToString(loRow[
"CODIGO"]);
259 return Convert.ToString(loRow[
"DESCRIP"]);
263 _cCodigoTipoImp =
"0";
277 if (_oTipoIva == null) _oTipoIva =
new TipoIVA();
289 public String _CodigoTipoImp
293 return _cCodigoTipoImp;
297 if (_cCodigoTipoImp != value)
299 _cCodigoTipoImp = value;
301 List<DataRow> loList = (from loRow in _TiposImpuesto.AsEnumerable()
302 where Convert.ToString(loRow[
"CODIGO"]) == _cCodigoTipoImp
303 select loRow).ToList();
305 if (loList.Count > 0)
307 _Porcentaje = Convert.ToDecimal(loList.First()[
"PORC_IMP"]);
308 _Recargo = Convert.ToDecimal(loList.First()[
"PORC_REC"]);
309 _IGICImplicito = Convert.ToBoolean(loList.First()[
"IGIC_IMPLI"]);
310 _NoSujeto = Convert.ToBoolean(loList.First()[
"NOSUJETO"]);
313 _IVA0 = Convert.ToBoolean(loList.First()[
"CERO"]);
317 _IGIC0 = Convert.ToBoolean(loList.First()[
"CERO"]);
323 _Porcentaje = _Recargo = 0;
324 _IGICImplicito = _NoSujeto =
false;
333 public String _Codigo
337 if (String.IsNullOrEmpty(_cCodigo))
339 _cCodigo = _CodigoPropuesto;
345 _cCodigo = value.PadLeft(_LenCodigo,
'0');
352 public String _CodigoPropuesto
356 if (String.IsNullOrEmpty(_cCodigoPropuesto))
358 _cCodigoPropuesto = _ObtenerCodigo();
360 return _cCodigoPropuesto;
367 public String _Nombre
371 if (String.IsNullOrEmpty(_cNombre)) _cNombre = _NombreXDefecto;
377 if (String.IsNullOrEmpty(_cNombre.Trim())) _cNombreDefecto =
"";
384 private String _NombreXDefecto
388 if(String.IsNullOrEmpty(_cNombreDefecto)) _cNombreDefecto = String.Format(
"{0} {1}% {2}", _oTipo, _Porcentaje, _AplicaRecargo && _Recargo > 0 ? String.Format(
"({0}%)", _Recargo) :
"");
389 return _cNombreDefecto;
398 if(_cNombre == _cNombreDefecto) _cNombreDefecto = _cNombre =
"";
404 public Decimal _Porcentaje
412 _nPorcentaje = value;
419 public Decimal _Recargo
423 return _AplicaRecargo ? _nRecargo : 0;
449 public Boolean _Deducible
464 public Boolean _Servicios
468 return _bIVAServicios;
472 _bIVAServicios = value;
479 public Boolean _NoSujeto
494 public Boolean _BienesInversion
498 return _bBienesInversion;
502 _bBienesInversion = value;
523 public Boolean _IGIC0
568 public static DataTable _TiposImpuesto
572 if (_oTiposImpuesto == null)
576 _oTiposImpuesto =
new DataTable();
577 lcSql = String.Format(
"SELECT '(' + CONVERT(VARCHAR, PORC_IMP) + ') ' + DESCRIP as TITULO, * FROM {0} WHERE ACTIVO = 1 ", DB.SQLDatabase(
"COMUNES",
"TIPOSIMP"));
578 DB.SQLExec(lcSql, ref _oTiposImpuesto);
580 List<DataRow> loListImpli = (from loRow in _oTiposImpuesto.AsEnumerable()
581 where Convert.ToBoolean(loRow[
"IGIC_IMPLI"])
582 select loRow).ToList();
584 loListImpli.ForEach(r => r[
"TITULO"] = String.Format(
"{0} - Implícito", Convert.ToString(r[
"TITULO"]).Trim()));
586 return _oTiposImpuesto;
593 public Boolean _IsPersonalizado
597 return _cCodigoTipoImp ==
"0";
604 public Boolean _AplicaRecargo
612 _bAplicaRecargo = value;
619 public String _CuentaSoportado
623 if (String.IsNullOrEmpty(_cCuentaSoportado))
625 _cCuentaSoportado = _CuentaPropuestaSoportado;
627 return _cCuentaSoportado;
631 _cCuentaSoportado = value.Trim();
638 public String _CuentaPropuestaSoportado
642 if (String.IsNullOrEmpty(_cCuentaPropuestaSoportado))
644 _cCuentaPropuestaSoportado = _ObtenerCuenta(_IvaSop);
646 return _cCuentaPropuestaSoportado;
653 public String _CuentaRepercutido
657 if (String.IsNullOrEmpty(_cCuentaRepercutido))
659 _cCuentaRepercutido = _CuentaPropuestaRepercutido;
661 return _cCuentaRepercutido;
665 _cCuentaRepercutido = value.Trim();
672 public String _CuentaPropuestaRepercutido
676 if (String.IsNullOrEmpty(_cCuentaPropuestaRepercutido))
678 _cCuentaPropuestaRepercutido = _ObtenerCuenta(_IvaRep);
680 return _cCuentaPropuestaRepercutido;
687 public String _CuentaRecargoRepercutido
691 if (String.IsNullOrEmpty(_cCuentaRecargoRepercutido))
693 _cCuentaRecargoRepercutido = _CuentaPropuestaRecargoRepercutido;
695 return _cCuentaRecargoRepercutido;
699 _cCuentaRecargoRepercutido = value.Trim();
706 public String _CuentaPropuestaRecargoRepercutido
710 if (String.IsNullOrEmpty(_cCuentaPropuestaRecargoRepercutido))
712 _cCuentaPropuestaRecargoRepercutido = _ObtenerCuenta(_IvaRecRep);
714 return _cCuentaPropuestaRecargoRepercutido;
721 public String _CuentaRecargoSoportado
725 if (String.IsNullOrEmpty(_cCuentaRecargoSoportado))
727 _cCuentaRecargoSoportado = _CuentaPropuestaRecargoSoportado;
730 return _cCuentaRecargoSoportado;
734 _cCuentaRecargoSoportado = value.Trim();
741 public String _CuentaPropuestaRecargoSoportado
745 if (String.IsNullOrEmpty(_cCuentaPropuestaRecargoSoportado))
747 _cCuentaPropuestaRecargoSoportado = _ObtenerCuenta(_IvaRecSop);
749 return _cCuentaPropuestaRecargoSoportado;
756 public String _CuentaSoportadoPte
760 if (String.IsNullOrEmpty(_cCuentaSoportadoPte))
762 _cCuentaSoportadoPte = _CuentaPropuestaSoportadoPte;
764 return _cCuentaSoportadoPte;
768 _cCuentaSoportadoPte = value.Trim();
775 public String _CuentaPropuestaSoportadoPte
779 if (String.IsNullOrEmpty(_cCuentaPropuestaSoportadoPte))
781 _cCuentaPropuestaSoportadoPte = _ObtenerCuenta(_IvaPendSop);
783 return _cCuentaPropuestaSoportadoPte;
790 public String _CuentaRepercutidoPte
794 if (String.IsNullOrEmpty(_cCuentaRepercutidoPte))
796 _cCuentaRepercutidoPte = _CuentaPropuestaRepercutidoPte;
798 return _cCuentaRepercutidoPte;
802 _cCuentaRepercutidoPte = value.Trim();
809 public String _CuentaPropuestaRepercutidoPte
813 if (String.IsNullOrEmpty(_cCuentaPropuestaRepercutidoPte))
815 _cCuentaPropuestaRepercutidoPte = _ObtenerCuenta(_IvaRecPendRep);
817 return _cCuentaPropuestaRepercutidoPte;
824 public String _CuentaRecargoRepercutidoPte
828 if (String.IsNullOrEmpty(_cCuentaRecargoRepercutidoPte))
830 _cCuentaRecargoRepercutidoPte = _CuentaPropuestaRecargoRepercutidoPte;
832 return _cCuentaRecargoRepercutidoPte;
836 _cCuentaRecargoRepercutidoPte = value.Trim();
843 public String _CuentaPropuestaRecargoRepercutidoPte
847 if (String.IsNullOrEmpty(_cCuentaPropuestaRecargoRepercutidoPte))
849 _cCuentaPropuestaRecargoRepercutidoPte = _ObtenerCuenta(_IvaRecPendRep);
851 return _cCuentaPropuestaRecargoRepercutidoPte;
858 public String _CuentaRecargoSoportadoPte
862 if (String.IsNullOrEmpty(_cCuentaRecargoSoportadoPte))
864 _cCuentaRecargoSoportadoPte = _CuentaPropuestaRecargoSoportadoPte;
867 return _cCuentaRecargoSoportadoPte;
871 _cCuentaRecargoSoportadoPte = value.Trim();
878 public String _CuentaPropuestaRecargoSoportadoPte
882 if (String.IsNullOrEmpty(_cCuentaPropuestaRecargoSoportadoPte))
884 _cCuentaPropuestaRecargoSoportadoPte = _ObtenerCuenta(_IvaRecPendSop);
886 return _cCuentaPropuestaRecargoSoportadoPte;
893 public String _CuentaSoportadoProrrata
897 if (String.IsNullOrEmpty(_cCuentaSoportadoProrrata))
899 _cCuentaSoportadoProrrata = _CuentaPropuestaSoportadoProrrata;
901 return _cCuentaSoportadoProrrata;
905 _cCuentaSoportadoProrrata = value.Trim();
912 public String _CuentaPropuestaSoportadoProrrata
916 if (String.IsNullOrEmpty(_cCuentaPropuestaSoportadoProrrata))
918 _cCuentaPropuestaSoportadoProrrata = _ObtenerCuenta(_IvaProrrataSop);
920 return _cCuentaPropuestaSoportadoProrrata;
927 public String _CuentaSoportadoProrrataPte
931 if (String.IsNullOrEmpty(_cCuentaSoportadoProrrataPte))
933 _cCuentaSoportadoProrrataPte = _CuentaPropuestaSoportadoProrrataPte;
935 return _cCuentaSoportadoProrrataPte;
939 _cCuentaSoportadoProrrataPte = value.Trim();
946 public String _CuentaPropuestaSoportadoProrrataPte
950 if (String.IsNullOrEmpty(_cCuentaPropuestaSoportadoProrrataPte))
952 _cCuentaPropuestaSoportadoProrrataPte = _ObtenerCuenta(_IvaProrrataPendSop);
954 return _cCuentaPropuestaSoportadoProrrataPte;
961 public String _ErroMessage
965 return _cErrorMessage;
969 _cErrorMessage = value;
976 public Boolean _Prorrata
980 return Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_prorrata_aplicar"));
987 public Boolean _IGICImplicito
991 return _bIGICImplicito;
995 _bIGICImplicito = value;
1002 public Boolean _CriterioCaja
1006 return _bCriterioCaja;
1010 private String _ObtenerCuenta(TipoCuenta toTipoCuenta)
1014 switch (toTipoCuenta)
1016 case TipoCuenta.SOPORTADO:
1019 case TipoCuenta.REPERCUTIDO:
1022 case TipoCuenta.RECARGO_SOPORTADO:
1023 tcCuenta = _IvaRecSop;
1025 case TipoCuenta.RECARGO_REPERCUTIDO:
1026 tcCuenta = _IvaRecRep;
1028 case TipoCuenta.PTE_SOPORTADO:
1029 tcCuenta = _IvaPendSop;
1031 case TipoCuenta.PTE_REPERCUTIDO:
1032 tcCuenta = _IvaPendRep;
1034 case TipoCuenta.PTE_RECARGO_SOPORTADO:
1035 tcCuenta = _IvaRecPendSop;
1037 case TipoCuenta.PTE_RECARGO_REPERCUTIDO:
1038 tcCuenta = _IvaRecPendSop;
1040 case TipoCuenta.PRORRATA_SOPORTADO:
1041 tcCuenta = _IvaProrrataSop;
1043 case TipoCuenta.PTE_PRORRATA_SOPORTADO:
1044 tcCuenta = _IvaProrrataPendSop;
1051 return _ObtenerCuenta(tcCuenta);
1054 private String _ObtenerCuenta(String tcCuenta)
1057 DataTable loDt =
new DataTable();
1058 Boolean lbAdd =
true;
1060 lcSql = String.Format(
"SELECT CODIGO as CODIGO FROM {0} WHERE LEFT(CODIGO, 3 ) = {1} ", DB.SQLDatabase(
"GESTION",
"CUENTAS"), DB.SQLString(tcCuenta.Substring(0, 3)));
1061 DB.SQLExec(lcSql, ref loDt);
1065 tcCuenta = Convert.ToString(Convert.ToInt64(tcCuenta) + 1);
1067 List<String> loList = (from loRow in loDt.AsEnumerable()
1068 where Convert.ToString(loRow[
"CODIGO"]).Trim() == tcCuenta.Trim()
1069 select Convert.ToString(loRow[
"CODIGO"])).ToList();
1071 if (loList.Count == 0)
1073 loList = (from lcCuenta in _oCuentasPropuestas
1074 where lcCuenta.Trim() == tcCuenta.Trim()
1075 select lcCuenta).ToList();
1077 if (loList.Count == 0)
1079 _oCuentasPropuestas.Add(tcCuenta.Trim());
1091 public BackgroundWorker _BackgroundWorker
1109 Int32 lnContMax = 3;
1110 Int32 lnContProcess = 0;
1112 if (_Prorrata ) lnContMax = lnContMax + (_CriterioCaja ? 2 : 1);
1113 if (_CriterioCaja) lnContMax = lnContMax + 2;
1114 if (_AplicaRecargo && _Recargo > 0) lnContMax = lnContMax + (_CriterioCaja ? 4 : 2);
1116 _cErrorMessage =
"";
1118 _SetProcess(ref lnContProcess, ref lnContMax,
"Creando cuentas contables");
1122 if (_CuentaSoportado == _CuentaPropuestaSoportado)
1124 if (!_CreaCuenta(ref _cCuentaSoportado, ref lnContProcess, lnContMax,
TipoCuenta.SOPORTADO))
1126 throw new Exception(String.Format(
"Se ha producido un problema al crear la cuenta de {0}",
TipoCuenta.SOPORTADO.__GetDescription()));
1130 if (_CuentaRepercutido == _CuentaPropuestaRepercutido)
1132 if(!_CreaCuenta(ref _cCuentaRepercutido, ref lnContProcess, lnContMax,
TipoCuenta.REPERCUTIDO))
1134 throw new Exception(String.Format(
"Se ha producido un problema al crear la cuenta de {0}",
TipoCuenta.REPERCUTIDO.__GetDescription()));
1139 if (_AplicaRecargo && _Recargo > 0)
1141 if (_CuentaRecargoSoportado == _CuentaPropuestaRecargoSoportado)
1143 if (!_CreaCuenta(ref _cCuentaRecargoSoportado, ref lnContProcess, lnContMax,
TipoCuenta.RECARGO_SOPORTADO))
1145 throw new Exception(String.Format(
"Se ha producido un problema al crear la cuenta de {0}",
TipoCuenta.RECARGO_SOPORTADO.__GetDescription()));
1149 if (_CuentaRecargoRepercutido == _CuentaPropuestaRecargoRepercutido)
1151 if (!_CreaCuenta(ref _cCuentaRecargoRepercutido, ref lnContProcess, lnContMax,
TipoCuenta.RECARGO_REPERCUTIDO))
1153 throw new Exception(String.Format(
"Se ha producido un problema al crear la cuenta de {0}",
TipoCuenta.RECARGO_REPERCUTIDO.__GetDescription()));
1161 if (_CuentaSoportadoPte == _CuentaPropuestaSoportadoPte)
1163 if (!_CreaCuenta(ref _cCuentaSoportadoPte, ref lnContProcess, lnContMax,
TipoCuenta.PTE_SOPORTADO))
1165 throw new Exception(String.Format(
"Se ha producido un problema al crear la cuenta de {0}",
TipoCuenta.PTE_SOPORTADO.__GetDescription()));
1169 if (_CuentaRepercutidoPte == _CuentaPropuestaRepercutidoPte)
1171 if(!_CreaCuenta(ref _cCuentaRepercutidoPte, ref lnContProcess, lnContMax,
TipoCuenta.PTE_REPERCUTIDO))
1173 throw new Exception(String.Format(
"Se ha producido un problema al crear la cuenta de {0}",
TipoCuenta.PTE_REPERCUTIDO.__GetDescription()));
1178 if (_AplicaRecargo && _Recargo > 0)
1180 if (_CuentaRecargoSoportadoPte == _CuentaPropuestaRecargoSoportadoPte)
1182 if(!_CreaCuenta(ref _cCuentaRecargoSoportadoPte, ref lnContProcess, lnContMax,
TipoCuenta.PTE_RECARGO_SOPORTADO))
1184 throw new Exception(String.Format(
"Se ha producido un problema al crear la cuenta de {0}",
TipoCuenta.PTE_RECARGO_SOPORTADO.__GetDescription()));
1188 if (_CuentaRecargoRepercutidoPte == _CuentaPropuestaRecargoRepercutidoPte)
1190 if(!_CreaCuenta(ref _cCuentaRecargoRepercutidoPte, ref lnContProcess, lnContMax,
TipoCuenta.PTE_RECARGO_REPERCUTIDO))
1192 throw new Exception(String.Format(
"Se ha producido un problema al crear la cuenta de {0}",
TipoCuenta.PTE_RECARGO_REPERCUTIDO.__GetDescription()));
1201 if (_CuentaSoportadoProrrata == _CuentaPropuestaSoportadoProrrata)
1203 if (!_CreaCuenta(ref _cCuentaSoportadoProrrata, ref lnContProcess, lnContMax,
TipoCuenta.PRORRATA_SOPORTADO))
1205 throw new Exception(String.Format(
"Se ha producido un problema al crear la cuenta de {0}",
TipoCuenta.PRORRATA_SOPORTADO.__GetDescription()));
1212 if (_CuentaSoportadoProrrataPte == _CuentaPropuestaSoportadoProrrataPte)
1214 if (!_CreaCuenta(ref _cCuentaSoportadoProrrataPte, ref lnContProcess, lnContMax,
TipoCuenta.PTE_PRORRATA_SOPORTADO))
1216 throw new Exception(String.Format(
"Se ha producido un problema al crear la cuenta de {0}",
TipoCuenta.PTE_PRORRATA_SOPORTADO.__GetDescription()));
1222 _SetProcess(ref lnContProcess, ref lnContMax,
"",
"Cuentas contables creadas correctamente.");
1224 if (!_CreaIva(lnContMax))
1226 throw new Exception(String.Format(
"Se ha producido un problema al crear el tipo de {0}", _oTipo));
1230 catch (Exception loEx)
1232 _cErrorMessage = loEx.Message;
1233 _SetProcess(ref lnContMax, ref lnContMax,
"", String.Format(
"Se ha producido un error: {0}", _cErrorMessage));
1241 private void _SetProcess(ref Int32 lnContProcess, ref Int32 lnContMax, String tcTexto, String tcTextoTextBox =
"")
1243 if (!String.IsNullOrEmpty(tcTexto)) lnContProcess++;
1244 _BackgroundWorker.ReportProgress(lnContProcess,
new InfoProgresBar(lnContProcess, lnContMax, tcTexto, tcTextoTextBox));
1250 private Boolean _CreaIva(Int32 tnContMax)
1252 Boolean bCreated =
false;
1255 Int32 lnContMax = tnContMax - 1;
1257 _SetProcess(ref lnContMax, ref tnContMax, String.Format(
"Creando tipo de {0}", _oTipo),
"");
1259 while (!bCreated && lnCont < 10)
1262 lcCodigoTmp = _Codigo;
1263 _cAditionalMessage =
"";
1266 _TipoIva._Codigo = _Codigo;
1268 if (!_TipoIva._Existe_Registro())
1270 _TipoIva._Nombre = _Nombre;
1271 _TipoIva._IVA = _Porcentaje;
1272 _TipoIva._Recargo = _Recargo;
1273 _TipoIva._IVA_Deducible = _Deducible;
1274 _TipoIva._IVA_Servicios = _Servicios;
1275 _TipoIva._IVA_Exento = _NoSujeto;
1276 _TipoIva._IVA_BienesInversion = _BienesInversion;
1277 _TipoIva._Tipo = _Tipo;
1280 _TipoIva._IGIC_Sujeto0 = _IGIC0;
1282 _TipoIva._IVA_Sujeto0 = _IVA0;
1285 DataRow loRow = _ObtenerTipoImp();
1287 if(loRow is DataRow) _TipoIva._Tipo_Imp = Convert.ToInt32(loRow[
"CODIGO"]);
1290 _TipoIva._Cta_IVA_Sop = _CuentaSoportado;
1291 _TipoIva._Cta_IVA_Rep = _CuentaRepercutido;
1293 if (_AplicaRecargo && _Recargo > 0)
1295 _TipoIva._Cta_REC_Sop = _CuentaRecargoSoportado;
1296 _TipoIva._Cta_REC_Rep = _CuentaRecargoRepercutido;
1301 _TipoIva._Pendedsop = _CuentaSoportadoPte;
1302 _TipoIva._Pendevrep = _CuentaRepercutidoPte;
1304 if (_AplicaRecargo && _Recargo > 0)
1306 _TipoIva._Recsopcdev = _CuentaRecargoSoportadoPte;
1307 _TipoIva._Recrepcdev = _CuentaRecargoRepercutidoPte;
1313 _TipoIva._Cta_IVA_Sop_Nodeduc = _CuentaSoportadoProrrata;
1314 if (_CriterioCaja) _TipoIva._Pendedsop_Nodeduc = _CuentaSoportadoProrrataPte;
1317 if (DB._EsPenultimoEjercicio()) _TipoIva._OnMessageTraspasoPenultimoEjercicio += Cuenta__OnMessageTraspasoPenultimoEjercicio;
1319 if (_TipoIva._Save_Before())
1321 if (!_TipoIva._Save())
1325 _cErrorMessage =
String.Format(
"No se ha podido crear el tipo de {0} con código {1}, se asignará el nuevo código {2}.", _oTipo, lcCodigoTmp, _Codigo);
1326 _SetProcess(ref lnContMax, ref tnContMax,
"", _cErrorMessage);
1337 _cErrorMessage =
String.Format(
"No se ha podido crear el tipo de {0} con código {1}, se ha producido un error al validar los datos : {2}", _oTipo, lcCodigoTmp, _TipoIva._Error_Message);
1338 _SetProcess(ref lnContMax, ref tnContMax,
"", _cErrorMessage);
1341 if (DB._EsPenultimoEjercicio()) _TipoIva._OnMessageTraspasoPenultimoEjercicio -= Cuenta__OnMessageTraspasoPenultimoEjercicio;
1347 _cErrorMessage =
String.Format(
"No se ha podido crear el tipo de {0} con código {1}, se asignará el nuevo código {2}.", _oTipo, lcCodigoTmp, _Codigo);
1348 _SetProcess(ref lnContMax, ref tnContMax,
"", _cErrorMessage);
1354 _SetProcess(ref lnContMax, ref tnContMax,
"",
String.Format(
"Tipo de {0} creado correctamente con código {1}.", _oTipo, _Codigo));
1355 if (!
string.IsNullOrEmpty(_cAditionalMessage)) _SetProcess(ref lnContMax, ref tnContMax,
"", _cAditionalMessage);
1361 private DataRow _ObtenerTipoImp()
1363 List<DataRow> loTipos = (from loRow in _TiposImpuesto.AsEnumerable()
1365 Convert.ToDecimal(loRow[
"PORC_IMP"]) == _Porcentaje &&
1366 Convert.ToInt32(loRow[
"TIPO"]) == Convert.ToInt32(_oTipo) &&
1367 Convert.ToBoolean(loRow[
"NOSUJETO"]) == _NoSujeto &&
1368 Convert.ToBoolean(loRow[
"IGIC_IMPLI"]) == _IGICImplicito &&
1369 Convert.ToBoolean(loRow[
"CERO"]) == (_Tipo == TipoIVA.TipoImpuesto.IVA ? _IVA0 :_IGIC0)
1370 select loRow).ToList();
1372 return loTipos.Count > 0 ? loTipos.First() : null;
1375 private Boolean _CreaCuenta(ref String tcCuenta, ref Int32 tnContProcess, Int32 tnContMax, TipoCuenta toTipo )
1378 Boolean bCreated =
false;
1379 String tcCuentaTmp, lcNombre =
"";
1382 _SetProcess(ref tnContProcess, ref tnContMax,
String.Format(
"Creando cuenta {0}", tcCuenta));
1384 while (!bCreated && lnCont < 10)
1386 _cAditionalMessage =
"";
1387 tcCuentaTmp = tcCuenta;
1390 loCuenta =
new Cuenta(tcCuenta);
1394 lcNombre =
String.Format(
"{0} {1}", _oTipo, toTipo.__GetDescription());
1395 loCuenta.
_Nombre = lcNombre.ToUpper();
1399 if (!loCuenta.
_Save())
1401 tcCuenta = _ObtenerCuenta(toTipo);
1402 _cErrorMessage =
String.Format(
"No se ha podido crear la cuenta {0}, se asignará la cuenta {1}.", tcCuentaTmp, tcCuenta);
1403 _SetProcess(ref tnContProcess, ref tnContMax,
"", _cErrorMessage);
1412 tcCuenta = _ObtenerCuenta(toTipo);
1414 _cErrorMessage =
String.Format(
"No se ha podido crear la cuenta {0} porque ya existe, se asignará la cuenta {1}.", tcCuentaTmp, tcCuenta);
1415 _SetProcess(ref tnContProcess, ref tnContMax,
"", _cErrorMessage);
1424 _SetProcess(ref tnContProcess, ref tnContMax,
"",
String.Format(
"Cuenta {0} {1} creada correctamente.", tcCuenta, lcNombre));
1425 if(!
string.IsNullOrEmpty(_cAditionalMessage)) _SetProcess(ref tnContProcess, ref tnContMax,
"", _cAditionalMessage);
1431 private bool Cuenta__OnMessageTraspasoPenultimoEjercicio(enumerations.AccionTraspasoUltimoEjercicio toAccion,
bool tbIsNew,
string tcNextEjer,
string tcMessage)
1433 _cAditionalMessage = tcMessage;
1438 private String _ObtenerCodigo()
1442 DataTable loDt =
new DataTable();
1444 lcSql =
String.Format(
"SELECT CODIGO FROM {0} WHERE CODIGO <> '' ORDER BY CODIGO ASC ", DB.SQLDatabase(
"GESTION",
"TIPO_IVA"));
1445 DB.SQLExec(lcSql, ref loDt);
1447 if (loDt.Rows.Count > 0)
1449 foreach (DataRow loRow
in loDt.Rows)
1451 lcMax = Convert.ToString(loRow[
"CODIGO"]);
1452 lcMax = _ObtenerSiguiente(lcMax);
1454 Boolean lbExist = (from loRowCodigo in loDt.AsEnumerable()
1455 where Convert.ToString(loRowCodigo[
"CODIGO"]) == lcMax
1456 select loRowCodigo).Count() > 0;
1458 if (!lbExist)
return lcMax;
1463 lcMax = lcMax.PadLeft(_LenCodigo,
'0');
1477 DataTable loDt =
new DataTable();
1479 lcSql = String.Format(
"SELECT CODIGO FROM {0} WHERE CODIGO = {1}", DB.SQLDatabase(
"GESTION",
"TIPO_IVA"), DB.SQLString(tcCodigo));
1480 DB.SQLExec(lcSql, ref loDt);
1482 return loDt.Rows.Count == 0;
1485 private String _ObtenerSiguiente(String tcNum)
1487 String tcNewNum = tcNum;
1489 if (!_ObtenerSiguienteNum(ref tcNewNum))
1491 tcNewNum = _ObtenerSiguiente(tcNum.ToCharArray());
1497 private bool _ObtenerSiguienteNum(ref String tcNum)
1499 Int32 lnTmp, lnMax = 0;
1500 Int32 lnLenght = tcNum.Length;
1502 lnMax = (Int32)Math.Pow(10, tcNum.Length) - 1;
1504 if (Int32.TryParse(tcNum, out lnTmp) && (lnTmp + 1) <= lnMax)
1506 tcNum = Convert.ToString(lnTmp + 1);
1507 tcNum = tcNum.PadLeft(lnLenght,
'0');
1515 private String _ObtenerSiguiente(Char[] loChars)
1517 if (loChars.Length > 0)
1519 String lcNum =
new String(loChars);
1520 String lcNumTmp, lcPrefix, lcNextPrefix;
1522 lcNumTmp = lcNum.Substring(1);
1523 lcPrefix = lcNum.Substring(0, 1);
1524 Char[] loPrefix = lcPrefix.ToCharArray();
1526 if (lcPrefix ==
"9")
1530 else if (
Char.IsLetter(lcPrefix.ToCharArray()[0]) && lcPrefix.ToCharArray()[0] < (
Char)
'Z')
1532 loPrefix[0] = (
Char)(loPrefix[0] + 1);
1533 lcNextPrefix =
new String(loPrefix);
1535 else if(
Char.IsLetter(lcPrefix.ToCharArray()[0]) && lcPrefix.ToCharArray()[0] == (
Char)
'Z')
1541 lcNextPrefix = Convert.ToString(Convert.ToInt32(lcPrefix) + 1);
1544 if (!
String.IsNullOrEmpty(lcNumTmp))
1546 if (!_ObtenerSiguienteNum(ref lcNumTmp))
1548 if (lcNextPrefix ==
"Z")
1550 return "Z" + _ObtenerSiguiente(lcNumTmp.ToCharArray());
1554 return lcNextPrefix +
"0".PadRight(loChars.Length - 1,
'0');
1559 return lcPrefix + lcNumTmp;
1564 return lcNextPrefix;
1568 return new String(loChars);
1578 DataTable loDt = (from loRow in _TiposImpuesto.AsEnumerable()
1579 where Convert.ToInt32(loRow[
"TIPO"]) == Convert.ToInt32(toTipoImpuesto)
1580 select loRow).CopyToDataTable();
1582 DataRow loRowPersonalizado = loDt.NewRow();
1583 loRowPersonalizado[
"CODIGO"] = 0;
1584 loRowPersonalizado[
"TITULO"] =
"Personalizado";
1585 loDt.Rows.Add(loRowPersonalizado);
1598 _cErrorMessage =
"";
1600 String lcCuentaPropuesta, lcPrefijo;
1602 switch(toTipoCuenta)
1605 lcCuentaPropuesta = _CuentaPropuestaSoportado;
1606 lcPrefijo = _IvaSop3;
1609 lcCuentaPropuesta = _CuentaPropuestaRepercutido;
1610 lcPrefijo = _IvaRep3;
1613 lcCuentaPropuesta = _CuentaPropuestaRecargoSoportado;
1614 lcPrefijo = _IvaRecSop3;
1617 lcCuentaPropuesta = _CuentaPropuestaRecargoRepercutido;
1618 lcPrefijo = _IvaRecRep3;
1621 lcCuentaPropuesta = _CuentaPropuestaSoportadoPte;
1622 lcPrefijo = _IvaPendSop3;
1625 lcCuentaPropuesta = _CuentaPropuestaRepercutidoPte;
1626 lcPrefijo = _IvaPendRep3;
1629 lcCuentaPropuesta = _CuentaPropuestaRecargoSoportadoPte;
1630 lcPrefijo = _IvaRecPendSop3;
1633 lcCuentaPropuesta = _CuentaPropuestaRecargoRepercutidoPte;
1634 lcPrefijo = _IvaRecPendSop3;
1637 lcCuentaPropuesta = _CuentaPropuestaSoportadoProrrata;
1641 lcCuentaPropuesta = _CuentaPropuestaSoportadoProrrataPte;
1645 lcCuentaPropuesta = lcPrefijo =
"";
1649 if (!String.IsNullOrEmpty(tcValorCandidato) && tcValorCandidato != lcCuentaPropuesta)
1651 if (!String.IsNullOrEmpty(lcPrefijo) && !tcValorCandidato.StartsWith(lcPrefijo))
1653 _cErrorMessage = String.Format(
"La cuenta debe comenzar por {0}.", lcPrefijo);
1655 else if(!_Existe_Codigo(tcValorCandidato))
1657 _cErrorMessage = String.Format(
"La cuenta {0} no existe.", tcValorCandidato);
1659 else if (_CuentaAsignada(tcValorCandidato))
1661 _cErrorMessage = _ErroMessage;
1663 else if (_ComprobarIvas(toTipoCuenta, tcValorCandidato))
1665 _cErrorMessage = _ErroMessage;
1669 return String.IsNullOrEmpty(_cErrorMessage);
1672 private Boolean _CuentaAsignada(String tcValorCandidato)
1674 if (tcValorCandidato == _CuentaSoportado)
1676 _cErrorMessage = String.Format(
"La cuenta {0} ya esta asignada a la cuenta de {1} soportado.", tcValorCandidato, _Tipo);
1678 else if (tcValorCandidato == _CuentaRepercutido)
1680 _cErrorMessage = String.Format(
"La cuenta {0} ya esta asignada a la cuenta de {1} repercutido.", tcValorCandidato, _Tipo);
1682 else if (_AplicaRecargo && tcValorCandidato == _CuentaRecargoSoportado)
1684 _cErrorMessage = String.Format(
"La cuenta {0} ya esta asignada a la cuenta de recargo soportado.", tcValorCandidato);
1686 else if (_AplicaRecargo && tcValorCandidato == _CuentaRecargoRepercutido)
1688 _cErrorMessage = String.Format(
"La cuenta {0} ya esta asignada a la cuenta de recargo repercutido.", tcValorCandidato);
1690 else if (_CriterioCaja && tcValorCandidato == _CuentaSoportadoPte)
1692 _cErrorMessage = String.Format(
"La cuenta {0} ya esta asignada a la cuenta de soportado pendiente de devengo.", tcValorCandidato);
1694 else if (_CriterioCaja && tcValorCandidato == _CuentaRepercutidoPte)
1696 _cErrorMessage =
String.Format(
"La cuenta {0} ya esta asignada a la cuenta de repercutido pendiente de devengo.", tcValorCandidato);
1698 else if (_CriterioCaja && _AplicaRecargo && tcValorCandidato == _CuentaRecargoSoportadoPte)
1700 _cErrorMessage =
String.Format(
"La cuenta {0} ya esta asignada a la cuenta de recargo soportado pendiente de devengo.", tcValorCandidato);
1702 else if (_CriterioCaja && _AplicaRecargo && tcValorCandidato == _CuentaRecargoRepercutidoPte)
1704 _cErrorMessage =
String.Format(
"La cuenta {0} ya esta asignada a la cuenta de recargo repercutido pendiente de devengo.", tcValorCandidato);
1706 else if (_Prorrata && tcValorCandidato == _cCuentaSoportadoProrrata)
1708 _cErrorMessage =
String.Format(
"La cuenta {0} ya esta asignada a la cuenta de soportado no deducible.", tcValorCandidato);
1710 else if (_Prorrata && _CriterioCaja && tcValorCandidato == _CuentaSoportadoProrrataPte)
1712 _cErrorMessage =
String.Format(
"La cuenta {0} ya esta asignada a la cuenta de soportado no deducible pendiente de devengo.", tcValorCandidato);
1715 return !
String.IsNullOrEmpty(_cErrorMessage);
1718 private bool _Existe_Codigo(
string tcValorCandidato)
1721 loCuenta.
_Codigo = tcValorCandidato;
1725 private Boolean _ComprobarIvas(TipoCuenta toTipoCuenta, String tcValorCandidato)
1728 Boolean lbOk =
true;
1729 String lcTipo = Convert.ToString(_Tipo);
1731 switch (toTipoCuenta)
1733 case TipoCuenta.SOPORTADO:
1734 lbOk = _TipoIva._Comprobar_Ctas_Iva(lcTipo, tcValorCandidato,
"",
"",
"",
"",
"",
"",
"", out lcMessage);
1736 case TipoCuenta.REPERCUTIDO:
1737 lbOk = _TipoIva._Comprobar_Ctas_Iva(lcTipo,
"", tcValorCandidato,
"",
"",
"",
"",
"",
"", out lcMessage);
1739 case TipoCuenta.RECARGO_SOPORTADO:
1740 lbOk = _TipoIva._Comprobar_Ctas_Iva(lcTipo,
"",
"", tcValorCandidato,
"",
"",
"",
"",
"", out lcMessage);
1742 case TipoCuenta.RECARGO_REPERCUTIDO:
1743 lbOk = _TipoIva._Comprobar_Ctas_Iva(lcTipo,
"",
"",
"", tcValorCandidato,
"",
"",
"",
"", out lcMessage);
1745 case TipoCuenta.PTE_SOPORTADO:
1746 lbOk = _TipoIva._Comprobar_Ctas_Iva(lcTipo,
"",
"",
"",
"", tcValorCandidato,
"",
"",
"", out lcMessage);
1748 case TipoCuenta.PTE_REPERCUTIDO:
1749 lbOk = _TipoIva._Comprobar_Ctas_Iva(lcTipo,
"",
"",
"",
"",
"", tcValorCandidato,
"",
"", out lcMessage);
1751 case TipoCuenta.PTE_RECARGO_SOPORTADO:
1752 lbOk = _TipoIva._Comprobar_Ctas_Iva(lcTipo,
"",
"",
"",
"",
"",
"", tcValorCandidato,
"", out lcMessage);
1754 case TipoCuenta.PTE_RECARGO_REPERCUTIDO:
1755 lbOk = _TipoIva._Comprobar_Ctas_Iva(lcTipo,
"",
"",
"",
"",
"",
"",
"", tcValorCandidato, out lcMessage);
1759 _ErroMessage = lcMessage;
1786 protected String _cErrorMessage =
"";
1806 public String _ErrorMessage
1810 return _cErrorMessage;
1846 String _ErrorMessage {
get; }
1852 Boolean _ValidaSiguiente();
1857 void _RemoveBinding();
void _RefreshNombre()
Refrescar nombre
TipoImpuesto
Tipo de impuesto
TipoImpuesto
Tipo de impuesto
DatosIva _oDatos
Clase base para guardar los datos del usuario
Boolean _Finalizar()
Genera el tipo de IVA y las cuentas a partir de los datos de DatosIVA
virtual void _RemoveBinding()
Metodo para eliminar los Binding al pasar de paginas
override bool _Save()
Guarda el registro actual
Interface para los UserControls del asistente de IVA
TipoCuenta
Indica el tipo de cuenta
Clase base para los UserControls del asistente de IVA
Calse para guardar los datos del asistente de IVA
virtual bool _Existe_Registro()
Nos indica si existe el registro en la Base de Datos
override string _Nombre
Bug 157602
override string _Codigo
Campo clave del mantenimiento
Clase de negocio del mantenimiento de cuentas contables
static DataTable _ObtenerTipos(TipoImpuesto toTipoImpuesto)
Obtiene los registros de TIPOSIMP
Boolean _ComprobarIva(String tcValorCandidato, TipoCuenta toTipoCuenta)
Compueba la cuenta asignada
virtual Boolean _ValidaSiguiente()
Metodo para validar antes del siguiente paso
OnMessageTraspasoPenultimoEjercicioHandler _OnMessageTraspasoPenultimoEjercicio
Evento para acceder a los mensajes de traspaso al siguiente ejercicio con objetos sin Formulario ...
Boolean _ValidaCodigo(String tcCodigo)
Valida que no exista el código del IVA
Lisatdo base para los listados de IVA Repercutido, Soportado ...