2 using System.Collections.Generic;
13 namespace sage.ew.contabilidad
20 #region PROPIEDADES PRIVADAS 25 private Dictionary<int, IPatronEntradaLineaAsiento> _Patrones =
new Dictionary<int, IPatronEntradaLineaAsiento>();
29 private string _lcUsuario = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_usuario"));
31 #endregion PROPIEDADES 57 if (!
string.IsNullOrWhiteSpace(_lcUsuario) && _lcUsuario.Length > 15)
58 _lcUsuario = _lcUsuario.Substring(0, 15);
65 #region METODOS PUBLICOS 80 Dictionary<int, IPatronEntradaLineaAsiento> dicPatrones;
81 dicPatrones = _Patrones.Where(p=>!p.Value._PatronEnEjecucion && !p.Value._EsPatronModificacion).ToDictionary(p => p.Key, p => p.Value);
82 foreach (KeyValuePair<int, IPatronEntradaLineaAsiento> loPatron
in dicPatrones)
84 if(ValidarPatron(loPatron, toAsiento, toLineaAsiento, teOrigenPatron))
99 List<IPatronEntradaLineaAsiento> lstPatronActivo =
new List<IPatronEntradaLineaAsiento>();
100 if(_Patrones.Count>0)
101 lstPatronActivo = _Patrones.Where(p => p.Value._PatronEnEjecucion).Select(p => p.Value).ToList();
102 return lstPatronActivo;
120 Dictionary<int, IPatronEntradaLineaAsiento> dicPatron;
121 dicPatron = _Patrones.Where(p => !p.Value._PatronEnEjecucion && p.Value.GetType().ToString().Contains(teTipoPatron.ToString())).ToDictionary(p => p.Key, p => p.Value);
123 return (dicPatron != null && dicPatron.Count > 0 && ValidarPatron(dicPatron.First(), toAsiento, toLineaAsiento, teOrigenPatron, tnOldDebe, tnOldHaber));
128 #region METODOS PRIVADOS 140 private bool ValidarPatron(KeyValuePair<int, IPatronEntradaLineaAsiento> tdicPatron,
IAsientos toAsiento,
IAsientosLinea toLineaAsiento,
eAccionAsientos teOrigenAccion, decimal tnOldDebe = 0.0M, decimal tnOldHaber = 0.0M)
143 if (tdicPatron.Value._Validar(toAsiento, toLineaAsiento, tnOldDebe, tnOldHaber))
146 IncrementarPesoPatron(tdicPatron.Key);
147 if (teOrigenAccion != tdicPatron.Value._Accion && __RefreshAccionAsiento!=null)
157 private void IncrementarPesoPatron(
int tnId)
159 string lcSql =
"Update " + DB.SQLDatabase(
"COMUNES",
"USRASIPATR") +
160 " Set PESO = PESO + 1 " +
161 " Where idpatron = " + DB.SQLString(tnId) +
" and usuario = " + DB.SQLString(_lcUsuario) +
" ";
162 if(DB.SQLExec(lcSql,out
int lnRegUpdate) && lnRegUpdate==0)
164 lcSql =
"Insert into " + DB.SQLDatabase(
"COMUNES",
"USRASIPATR") +
165 "(USUARIO, IDPATRON, PESO) " +
166 "Values(" + DB.SQLString(_lcUsuario) +
", " + DB.SQLString(tnId) +
", 1)";
174 private void ConsultarPatrones()
177 DataTable ldtAsiPatron =
new DataTable();
178 string lcSql =
"Select p.id, p.nombre, p.libreria, " + DB.SQLNvl(
"u.peso", DB.SQLString(
"")) +
" as peso " +
179 "From " + DB.SQLDatabase(
"COMUNES",
"ASIPATRON") +
" p " +
180 "Left Join " + DB.SQLDatabase(
"COMUNES",
"USRASIPATR") +
" u On p.id = u.idpatron and u.usuario = " + DB.SQLString(_lcUsuario) +
" " +
181 "Where libreria != '' " +
182 "Order by peso DESC ";
184 if(DB.SQLExec(lcSql, ref ldtAsiPatron) && ldtAsiPatron.Rows.Count>0)
185 ldtAsiPatron.AsEnumerable().ToList().ForEach(r => CargarPatron(Convert.ToString(r[
"libreria"]).Trim(), Convert.ToInt32(r[
"id"])));
187 ldtAsiPatron.Clear();
196 private void CargarPatron(
string tcClase,
int tnId)
198 if (!
string.IsNullOrEmpty(tcClase))
200 Type elementType = FUNCTIONS._GetType(tcClase, tcBestChanceOn:
"sage.ew.contabilidad");
202 if (elementType != null)
205 if (!_Patrones.ContainsKey(tnId))
206 _Patrones.Add(tnId,oPatron);
PatronesLineaAsientosController()
Constructor por defecto
Patrones entrada linea asiento
eAccionAsientos
Enumerado del tipo de acciones en formulario de asientos
_RefreshAccionAsiento_Handler __RefreshAccionAsiento
Refrescamos formulario asientos
bool _EjecutarPatron(eTipoPatron teTipoPatron, IAsientos toAsiento, IAsientosLinea toLineaAsiento, eAccionAsientos teOrigenPatron, decimal tnOldDebe=0.0M, decimal tnOldHaber=0.0M)
Ejecutamos un patron en concreto si se encuentra en el diccionario, directamente puedo ejecutar cualq...
eTipoPatron
Enumerado los patrones asientos
bool _PropuestaAutomatica
Propuesta automática de impuestos
bool _Validar(IAsientos toAsiento, IAsientosLinea toLineaAsiento, eAccionAsientos teOrigenPatron)
Validamos con la lista de patrones que tenemos
Interficie Patrones entrada linea asiento
List< IPatronEntradaLineaAsiento > _PatronesActivos()
Lista de patrones activos