2 using System.Collections.Generic;
6 using System.ComponentModel;
14 using System.Windows.Forms;
20 namespace sage.ew.articulo
27 #region PROPIEDADES PUBLICAS 32 public bool _CentralERP
36 if (_lisCampos.ContainsKey(
"CENTRALERP"))
37 return Convert.ToBoolean(_lisCampos[
"CENTRALERP"]._NewVal);
43 if (_lisCampos.ContainsKey(
"CENTRALERP"))
45 _lisCampos[
"CENTRALERP"]._NewVal = value;
55 public string _Cliente
59 if (_lisCampos.ContainsKey(
"CLIENTE"))
61 return _lisCampos[
"CLIENTE"]._NewVal.ToString();
70 if (_lisCampos.ContainsKey(
"CLIENTE"))
72 _lisCampos[
"CLIENTE"]._NewVal = value;
80 public string _CuentaSecundaria
82 get {
return Convert.ToString(_Campo(
"SECUN")); }
83 set { this._Campo(
"SECUN", value); }
89 public AlmacenPlanes _AlmacenPlanes
93 if (_oAlmacenPlanes == null)
97 _AddManteTRel(_oAlmacenPlanes);
99 _oAlmacenPlanes._Load();
101 return _oAlmacenPlanes;
104 private AlmacenPlanes _oAlmacenPlanes;
106 #endregion PROPIEDADES PUBLICAS 116 this._Clave =
"Codigo";
117 this._DataBase =
"Gestion";
118 this._Tabla =
"Almacen";
119 this._Pantalla =
"ALMACEN";
120 this._TituloMantenimiento =
"Mantenimiento de almacenes";
122 this._FormManteBaseType = typeof(Forms.frmAlmacen);
132 this._Clave =
"Codigo";
133 this._DataBase =
"Gestion";
134 this._Tabla =
"Almacen";
135 this._Pantalla =
"ALMACEN";
136 this._TituloMantenimiento =
"Mantenimiento de almacenes";
138 this._FormManteBaseType = typeof(Forms.frmAlmacen);
140 this._Codigo = tcCodigo;
144 #endregion CONSTRUCTORS 147 #region METODOS PUBLICOS 156 List<string> loList =
new List<string>();
160 loList.Add(
"STOCKS");
161 loList.Add(
"STOCKINI");
162 loList.Add(
"REGULARI");
163 loList.Add(
"C_PEDIVE");
164 loList.Add(
"C_ALBVEN");
165 loList.Add(
"C_ALBDEP");
166 loList.Add(
"D_ALBVEN");
167 loList.Add(
"C_ALBARE");
168 loList.Add(
"C_ALBCOM");
169 loList.Add(
"C_PEDICO");
170 loList.Add(
"D_ALBCOM");
171 loList.Add(
"EMPRESA");
172 loList.Add(
"C_TRANS");
173 loList.Add(
"D_TRANS");
174 loList.Add(
"C_PROD");
175 loList.Add(
"D_PROD");
177 llOk = llOk && !_Existen_Registros(
"GESTION", loList,
"ALMACEN");
182 loList.Add(
"COMPRAS");
183 loList.Add(
"MODELO");
184 loList.Add(
"MOVSERIE");
185 loList.Add(
"RECOMPRAS");
187 llOk = llOk && !_Existen_Registros(
"COMUNES", loList,
"ALMACEN");
202 return base._Delete();
205 this._Error_Message =
"Este código de almacén está siendo utilizado por el programa. No se puede borrar el código de almacén.";
218 ((txtbox.UserControls.txtAlmacenDesdeHasta)toForm._Filtros[
"txtAlmacenDesdeHasta"])._SetValorUnico(this._Codigo);
228 if (_oAlmacenPlanes != null && Convert.ToString(_oAlmacenPlanes._Claves._Almacen._Valor) != this._Codigo)
230 if (_oAlmacenPlanes._Grid != null)
232 _oAlmacenPlanes._Claves._Almacen._Valor = this._Codigo;
233 _oAlmacenPlanes._Load();
237 _oAlmacenPlanes = null;
252 if (_AlmacenPlanes._Items.Count > 0)
255 if (Convert.ToBoolean(global.EW_GLOBAL._GetVariable(
"wl_distsec")))
259 if (!_AlmacenPlanes._TotalPorcentajes(out lcPlan))
261 _Error_Message =
"La suma del porcentaje del plan analítico " + lcPlan +
" debe ser 100.";
278 if (this._AlmacenPlanes != null)
280 DataTable ldtItems = this._AlmacenPlanes._ToDataTable();
282 var duplicates = ldtItems.AsEnumerable().GroupBy(i =>
new { Secnivel1 = i.Field<
string>(
"_Secundaria").Trim(), Secnivel2 = i.Field<
string>(
"_Secnivel2").Trim(), Plancont = i.Field<
string>(
"_Plancont").Trim() }).Where(g => g.Count() > 1).Select(g =>
new { g.Key.Secnivel1, g.Key.Secnivel2, g.Key.Plancont }).ToList();
284 if (duplicates.Count > 0)
300 if (this._AlmacenPlanes != null)
302 DataTable ldtItems = this._AlmacenPlanes._ToDataTable();
303 DataRow[] result = ldtItems.Select(
"_Secundaria = '' AND _Secnivel2 = '' AND _Plancont <> ''");
304 if (result.Length > 0)
321 if (this._AlmacenPlanes != null)
323 var registros = this._AlmacenPlanes._Items.Where(x => x._Secundaria.Trim() == tcNivel1.Trim() && x._Plancont == tcPlan);
325 var nivel2vacio = registros.Where(x =>
string.IsNullOrWhiteSpace(x._Secnivel2)).Count();
326 var nivel2lleno = registros.Where(x => !
string.IsNullOrWhiteSpace(x._Secnivel2)).Count();
328 if (nivel2vacio > 0 && nivel2lleno > 0)
345 if (String.IsNullOrEmpty(tcPlan))
347 _Error_Message =
"El plan analítico orígen no puede estar en blanco.";
356 var ctasPlanOrigen = loPlan.
_SecundariasPlan.
_Items.Where(loEle => loEle._PlanContable == tcPlan).ToList();
358 if (!ctasPlanOrigen.Any())
360 _Error_Message =
"No hay datos que copiar para este plan analítico.";
368 if (!_AlmacenPlanes._Items.Where(loEle => loEle._Plancont == loSecundaria._PlanContable &&
369 loEle._Secundaria == loSecundaria._Secundaria1 &&
370 loEle._Secnivel2 == loSecundaria._Secundaria2).Any())
374 loNewSecundaria.
_Plancont = loSecundaria._PlanContable;
375 loNewSecundaria._Secundaria = loSecundaria._Secundaria1;
376 loNewSecundaria._Secnivel2 = loSecundaria._Secundaria2;
378 loNewSecundaria._CodAnalit = ((
string.IsNullOrEmpty(loSecundaria._Secundaria2)) ? (loSecundaria._Secundaria1) : (loSecundaria._Secundaria1.ToString().Trim() +
"." + loSecundaria._Secundaria2));
379 loNewSecundaria._NomAnalit = FUNCTIONS._AnalitNombre(loSecundaria._Secundaria1 +
"." + loSecundaria._Secundaria2);
388 if (Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_repasi")) || Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_distsec")))
389 this._AlmacenPlanes._RepartirPorcentaje(tcPlan);
393 _Error_Message =
"El plan analítico orígen no existe.";
406 List<string> loListaPlanes =
new List<string>();
409 var consultaplanes = from nivelesplanes in this._AlmacenPlanes._Items.AsEnumerable()
410 where !
string.IsNullOrWhiteSpace(nivelesplanes._Plancont) && !
string.IsNullOrWhiteSpace(nivelesplanes._Secundaria)
411 group nivelesplanes by nivelesplanes._Plancont
415 loListaPlanes = consultaplanes.ToList();
417 return loListaPlanes;
427 DataTable ldtPlanes =
new DataTable();
428 ldtPlanes.Columns.Add(
"codigo", typeof(
string));
429 ldtPlanes.Columns.Add(
"nombre", typeof(
string));
432 var consulta = (from nivelesplanes in this._AlmacenPlanes._Items.AsEnumerable()
433 where !
string.IsNullOrWhiteSpace(nivelesplanes._Plancont)
434 group nivelesplanes by
437 codigo = nivelesplanes._Plancont,
438 nombre = nivelesplanes._NombrePlan
443 codigo = g.Key.codigo,
444 nombre = g.Key.nombre
445 }).OrderBy(c => c.codigo);
447 foreach (var reg
in consulta)
449 DataRow loRow = ldtPlanes.NewRow();
450 loRow[
"codigo"] = reg.codigo;
451 loRow[
"nombre"] = reg.nombre;
452 ldtPlanes.Rows.Add(loRow);
465 DataTable ldtNiveles1Plan =
new DataTable();
466 ldtNiveles1Plan.Columns.Add(
"codigo", typeof(
string));
467 ldtNiveles1Plan.Columns.Add(
"nombre", typeof(
string));
470 var consulta = (from nivelesplanes in this._AlmacenPlanes._Items.AsEnumerable()
471 where nivelesplanes._Plancont == tcPlan && !
string.IsNullOrWhiteSpace(nivelesplanes._Secundaria)
472 group nivelesplanes by
475 codigo = nivelesplanes._Secundaria,
476 nombre = nivelesplanes._Nombre
481 codigo = g.Key.codigo,
482 nombre = g.Key.nombre
483 }).OrderBy(c => c.codigo);
485 foreach (var reg
in consulta)
487 DataRow loRow = ldtNiveles1Plan.NewRow();
488 loRow[
"codigo"] = reg.codigo;
489 loRow[
"nombre"] = reg.nombre;
490 ldtNiveles1Plan.Rows.Add(loRow);
493 return ldtNiveles1Plan;
505 DataTable ldtNiveles2Plan =
new DataTable();
506 ldtNiveles2Plan.Columns.Add(
"codigo", typeof(
string));
507 ldtNiveles2Plan.Columns.Add(
"nombre", typeof(
string));
510 var consulta = (from nivelesplanes in this._AlmacenPlanes._Items.AsEnumerable()
511 where nivelesplanes._Plancont == tcPlan && !
string.IsNullOrWhiteSpace(nivelesplanes._Secundaria)
512 && !
string.IsNullOrWhiteSpace(nivelesplanes._Secnivel2)
513 && (!
string.IsNullOrWhiteSpace(tcCuentaNiv1) ? nivelesplanes._Secundaria == tcCuentaNiv1 :
true)
514 group nivelesplanes by
517 codigo = nivelesplanes._Secnivel2,
518 nombre = nivelesplanes._Nombre2
523 codigo = g.Key.codigo,
524 nombre = g.Key.nombre
525 }).OrderBy(c => c.codigo);
527 foreach (var reg
in consulta)
529 DataRow loRow = ldtNiveles2Plan.NewRow();
530 loRow[
"codigo"] = reg.codigo;
531 loRow[
"nombre"] = reg.nombre;
532 ldtNiveles2Plan.Rows.Add(loRow);
535 return ldtNiveles2Plan;
538 #endregion METODOS PUBLICOS 546 Dictionary<string, string> diccAlmacenes =
new Dictionary<string, string>();
547 DataTable dtAlmacenes =
new DataTable();
549 string lcSql = $
"SELECT CODIGO, NOMBRE FROM {DB.SQLDatabase("GESTION
","ALMACEN
")} ORDER BY CODIGO ASC ";
550 if(DB.SQLExec(lcSql, ref dtAlmacenes) && dtAlmacenes.Rows.Count > 0)
552 foreach (DataRow row
in dtAlmacenes.Rows)
554 diccAlmacenes.Add(Convert.ToString(row[
"CODIGO"]).TrimEnd(), Convert.ToString(row[
"NOMBRE"]).TrimEnd());
557 return diccAlmacenes;
570 string _cEmpresa = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_empresa"));
589 this._Claves._Almacen._Valor = tcCodigoArticulo;
592 private void CrearEstructura()
595 _DataBase =
"Gestion";
596 _Tabla =
"Alma_anali";
599 bool lbImputarpor = (EW_GLOBAL._Empresa._ImputarPor == 0 ? true :
false);
641 _Def_Columna.
_Error_Validar_Dato = (lbImputarpor ?
"El código" :
"El nivel ") +
" analítico indicado no existe.";
648 _Condicion =
" nivel = 1" 663 bool lbColPorcentajeVisible = Convert.ToBoolean(EW_GLOBAL._GetVariable(
"Wl_DistSec"));
664 bool lbColNivel2Visible = !Convert.ToBoolean(EW_GLOBAL._GetVariable(
"Wl_Secunico"));
667 _Def_Columna = _AddCampoTRel(
"_Porcentaje1",
"", !lbImputarpor && lbColPorcentajeVisible && lbColNivel2Visible,
false,
false,
"%C.NA1",
gridColumnsTypes.Número,
new ewMascara(
"999.99"));
673 _Def_Columna = _AddCampoTRel(
"_Secnivel2",
"Secnivel2", lbColNivel2Visible,
true,
true,
"C.NA2");
681 _Def_Columna.
_Error_Validar_Dato = (lbImputarpor ?
"El código" :
"El nivel ") +
" analítico indicado no existe.";
688 _Condicion =
" nivel = 2" 700 _Def_Columna = _AddCampoTRel(
"_Nombre2",
"", lbColNivel2Visible,
false,
false,
"Nombre");
703 _Def_Columna = _AddCampoTRel(
"_CodAnalit",
"", lbImputarpor,
false,
true,
"Código analítico");
710 _Def_Columna = _AddCampoTRel(
"_NomAnalit",
"", lbImputarpor,
false,
false,
"Nombre");
713 _Def_Columna = _AddCampoTRel(
"_Porcentaje",
"Porcentaje", lbColPorcentajeVisible,
true,
true, (lbImputarpor ?
"%Código analítico" : (lbColNivel2Visible ?
"%C.NA2" :
"%C.NA1")),
gridColumnsTypes.Número,
new ewMascara(
"999.99"));
725 if (
string.IsNullOrWhiteSpace(tcPlanCont))
726 loListaOrdenada = _Items.OrderBy(x => x._Plancont).ThenBy(n => n._Secundaria).ToList();
728 loListaOrdenada = _Items.Where(y => y._Plancont == tcPlanCont).OrderBy(x => x._Plancont).ThenBy(n => n._Secundaria).ToList();
731 foreach (var line
in loListaOrdenada.GroupBy(
info =>
info._Plancont)
734 Plancont = group.Key,
735 Count = group.Count()
737 .OrderBy(x => x.Plancont))
743 var agrupacionNivel1 = loListaFiltrada.GroupBy(
info =>
info._Secundaria)
747 Count = group.Count()
749 .OrderBy(x => x.Nivel1);
751 decimal lnDecimal = 100;
752 decimal lnPercent = _oMascaraTPC.
Redondeo(lnDecimal / agrupacionNivel1.Count());
753 decimal lnResto = lnDecimal - agrupacionNivel1.Count() * lnPercent;
755 foreach (var lineNivel
in agrupacionNivel1)
759 decimal lnPercentNivel1 = lnPercent;
760 if (lnX == agrupacionNivel1.Count())
761 lnPercentNivel1 = lnPercent + lnResto;
764 List<
AlmacenPlanes.
AlmacenPlan> loListaFiltradaNivel1 = _Items.Where(x => x._Plancont == line.Plancont && x._Secundaria == lineNivel.Nivel1)
765 .OrderBy(x => x._Secnivel2)
767 decimal lnPercentNivel2 = _oMascaraTPC.
Redondeo(lnPercentNivel1 / lineNivel.Count);
768 decimal lnRestoNivel2 = lnPercentNivel1 - lineNivel.Count * lnPercentNivel2;
774 if (loSecundaria.Fila_Plena())
776 if (lnY == loListaFiltradaNivel1.Count)
777 loSecundaria._Porcentaje = lnPercentNivel2 + lnRestoNivel2;
779 loSecundaria._Porcentaje = lnPercentNivel2;
797 using (
_Vista V_PLANES =
new _Vista(
"GESTION",
"PLAN_D",
new Dictionary<string, object>() { {
"Plancont",
"%" } },
false,
true))
799 foreach (DataRow ldtPlan
in V_PLANES.
_DataTable.Rows)
802 loSecund._Plancont = ldtPlan[
"Plancont"].ToString();
803 loSecund._Secundaria = ldtPlan[
"Secnivel1"].ToString();
804 loSecund._Secnivel2 = ldtPlan[
"Secnivel2"].ToString();
807 loSecund._CodAnalit = ((
string.IsNullOrEmpty(loSecund._Secnivel2)) ? (loSecund._Secundaria) : (loSecund._Secundaria.ToString().Trim() +
"." + loSecund._Secnivel2));
808 loSecund._NomAnalit = FUNCTIONS._AnalitNombre(loSecund._Secundaria +
"." + loSecund._Secnivel2);
813 if (Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_repasi")) || Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_distsec")))
814 this._RepartirPorcentaje();
832 bool lbTotalOk =
true;
833 tcPlan =
string.Empty;
835 Dictionary<string, decimal> lnPorcentajePlan =
new Dictionary<string, decimal>();
841 if (loSecundaria.Fila_Plena())
843 if (lnPorcentajePlan.ContainsKey(loSecundaria._Plancont))
844 lnPorcentajePlan[loSecundaria._Plancont] += loSecundaria.
_Porcentaje;
846 lnPorcentajePlan.Add(loSecundaria._Plancont, loSecundaria._Porcentaje);
851 foreach (KeyValuePair<string, decimal> lnPorcen
in lnPorcentajePlan)
853 if (lnPorcen.Value != 100M)
856 tcPlan = lnPorcen.Key;
872 if (
string.IsNullOrWhiteSpace(tcCodigo))
875 string lcDescripcionPlan =
string.Empty;
877 lcDescripcionPlan = Convert.ToString(DB.SQLValor(
"PLANS",
"CODIGO", tcCodigo,
"NOMBRE")).Trim();
879 return "Listado de códigos analíticos del plan " + lcDescripcionPlan;
897 string lcPlan = tcPlan.Trim();
898 string lcNivel1 = tcNivel1.Trim();
899 string lcNivel2 = tcNivel2.Trim();
901 if (!this._bIsLoading)
903 DataTable ldtSecundarias = this._ToDataTable();
905 var groupedDataPlan = (from b in ldtSecundarias.AsEnumerable()
906 where b.Field<
string>(
"_Plancont").Trim() == lcPlan
907 group b by b.Field<
string>(
"_Plancont").Trim()
912 Percent = g.Sum(x => x.Field<decimal>(
"_Porcentaje"))
916 if (groupedDataPlan != null && groupedDataPlan.Count > 0)
918 tpcPlan = Convert.ToDecimal(groupedDataPlan[0].Percent);
922 var groupedDataNivel1 = (from b in ldtSecundarias.AsEnumerable()
923 where b.Field<
string>(
"_Plancont").Trim() == lcPlan &&
924 ((EW_GLOBAL._Empresa._ImputarPor == 0) ?
925 b.Field<
string>(
"_Secundaria").Trim() == lcNivel1 &&
926 b.Field<
string>(
"_Secnivel2").Trim() == lcNivel2
928 b.Field<
string>(
"_Secundaria").Trim() == lcNivel1)
931 c1 = b.Field<
string>(
"_Plancont").Trim(),
932 c2 = b.Field<
string>(
"_Secundaria").Trim(),
939 Percent = g.Sum(x => x.Field<decimal>(
"_Porcentaje"))
943 if (groupedDataNivel1 != null && groupedDataNivel1.Count > 0)
945 tpcNivel1 = Convert.ToDecimal(groupedDataNivel1[0].Percent);
988 _Almacen._EsFiltro =
true;
991 _Plancont._EsFiltro =
false;
994 _Secundaria._EsFiltro =
false;
997 _Secnivel2._EsFiltro =
false;
1000 _Almacen._Valor =
"";
1001 _Plancont._Valor =
"";
1002 _Secundaria._Valor =
"";
1003 _Secnivel2._Valor =
"";
1016 private bool _lHera = Convert.ToBoolean(ew.global.EW_GLOBAL._GetVariable(
"wl_hera"));
1017 private bool _lSoloNivelesDefinidos = (Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_solonivdef")));
1022 public string _Almacen
1024 get {
return _cAlmacen; }
1025 set { _cAlmacen = value; }
1027 private string _cAlmacen =
"";
1032 public string _Nombre
1036 return _cNombre.Trim();
1043 private string _cNombre =
"";
1049 public string _Secundaria
1051 get {
return _cSecnivel1; }
1054 if (_cSecnivel1 != value)
1057 if (loParent != null)
1060 object newValor = value;
1061 if (newValor != null && !
string.IsNullOrWhiteSpace(value))
1064 _AsignarPlanAnalitico();
1067 if (!SecundariaValida(value,
"2", _Plancont))
1071 string oldNombre = _Nombre;
1072 if (loParent.CamposTRel_Validar_Valor(
"_Secundaria", value,
this, out newValor))
1074 value = _cSecnivel1;
1076 if (EW_GLOBAL._Empresa._ImputarPor == 0)
1078 if (
string.IsNullOrWhiteSpace(_cSecnivel1))
1080 _cSecnivel2 =
string.Empty;
1081 _cNombre2 =
string.Empty;
1087 value = _cSecnivel1;
1088 loParent._ManteGrid._Show_Error_Message((EW_GLOBAL._Empresa._ImputarPor == 0 ?
"El código analítico indicado no existe." :
"La cuenta introducida no es de nivel 1."));
1089 _Nombre = oldNombre;
1093 value = _cSecnivel1;
1094 loParent._ManteGrid._Show_Error_Message((EW_GLOBAL._Empresa._ImputarPor == 0 ?
"El código" :
"El nivel ") + value +
" introducido no está definido en el plan analítico " + _Plancont.Trim() +
".");
1095 _Nombre = oldNombre;
1099 value = newValor.ToString();
1103 if (_CodAnalit.Contains(
"."))
1107 _cCodAnalit = (!
string.IsNullOrWhiteSpace(value) ? value +
"." + _Secnivel2 :
string.Empty) ;
1111 _cCodAnalit = value;
1113 _cNomAnalit = FUNCTIONS._AnalitNombre(_cCodAnalit);
1123 if (_cSecnivel1 != value)
1125 _cSecnivel1 = value;
1126 loParent._Exportar_Null();
1130 private string _cSecnivel1 =
"";
1136 public decimal _Porcentaje
1138 get {
return _nPorcentaje; }
1141 if (value != _nPorcentaje)
1143 _nPorcentaje = value;
1144 loParent._Exportar_Null();
1148 private decimal _nPorcentaje = 0;
1151 private decimal _nPorcentaje1 = 0;
1155 public decimal _Porcentaje1
1160 var registros = loSecundarias.
_Items.Where(x => x._Secundaria.Trim() == _Secundaria.Trim() && x._Plancont == _Plancont);
1164 _nPorcentaje1 += ldr._Porcentaje;
1167 return _nPorcentaje1;
1171 if (value != _nPorcentaje1)
1173 _nPorcentaje1 = value;
1181 public string _Secnivel2
1183 get {
return _cSecnivel2; }
1186 if (_cSecnivel2 != value)
1189 if (loParent != null)
1192 object newValor = value;
1193 if (newValor != null && !
string.IsNullOrWhiteSpace(value))
1196 if (EW_GLOBAL._Empresa._ImputarPor == 1)
1197 _AsignarCuentaNivel1YPlan();
1199 if (!Secnivel2Valida(value))
1203 string oldNombre = _Nombre2;
1204 if (loParent.CamposTRel_Validar_Valor(
"_Secnivel2", value,
this, out newValor))
1206 value = _cSecnivel2;
1208 if (EW_GLOBAL._Empresa._ImputarPor == 0)
1210 if (
string.IsNullOrWhiteSpace(_cSecnivel2))
1212 _cSecnivel1 =
string.Empty;
1213 _cNombre =
string.Empty;
1219 value = _cSecnivel2;
1221 if (EW_GLOBAL._Empresa._ImputarPor == 0)
1223 if (
string.IsNullOrWhiteSpace(_cSecnivel2))
1225 _cSecnivel1 =
string.Empty;
1226 _cNombre =
string.Empty;
1230 loParent._ManteGrid._Show_Error_Message((EW_GLOBAL._Empresa._ImputarPor == 0 ?
"El código analítico indicado no existe." :
"La cuenta introducida no es de nivel 2."));
1231 _Nombre2 = oldNombre;
1235 loParent._ManteGrid._Show_Error_Message((EW_GLOBAL._Empresa._ImputarPor == 0 ?
"El código" :
"El nivel ") + value +
" introducido no está definido en el plan analítico " + _Plancont.Trim() +
".");
1236 value = _cSecnivel2;
1237 _Nombre2 = oldNombre;
1241 value = newValor.ToString();
1244 _cCodAnalit = (!
string.IsNullOrEmpty(value) ? _Secundaria.ToString().Trim() +
"." + value : _Secundaria.ToString());
1245 _cNomAnalit = FUNCTIONS._AnalitNombre(_cCodAnalit);
1255 if (_cSecnivel2 != value)
1257 _cSecnivel2 = value;
1258 loParent._Exportar_Null();
1262 private string _cSecnivel2 =
"";
1268 public string _Nombre2
1270 get {
return _cNombre2.Trim(); }
1271 set { _cNombre2 = value; }
1273 private string _cNombre2 =
"";
1279 public string _Plancont
1281 get {
return _cPlancont; }
1285 if (loParent != null)
1287 object newValor = value;
1288 if (newValor != null && !
string.IsNullOrWhiteSpace(value))
1290 string oldNombre = _NombrePlan;
1291 if (loParent.CamposTRel_Validar_Valor(
"_Plancont", value,
this, out newValor))
1294 _NombrePlan = oldNombre;
1298 value = newValor.ToString();
1308 if (value != _cPlancont)
1311 loParent._Exportar_Null();
1312 if (!
string.IsNullOrWhiteSpace(_cPlancont))
1314 loParent._ListDefCampos[
"_Secundaria"]._Browser._Condicion =
" nivel = 1 ";
1315 loParent._ListDefCampos[
"_Secnivel2"]._Browser._Condicion =
" nivel = 2 ";
1320 private string _cPlancont =
"";
1326 public string _NombrePlan
1328 get {
return _cNombrePlan.Trim(); }
1329 set { _cNombrePlan = value; }
1331 private string _cNombrePlan =
"";
1337 public string _CodAnalit
1339 get {
return _cCodAnalit.Trim(); }
1340 set { _cCodAnalit = value; }
1342 private string _cCodAnalit =
"";
1348 public string _NomAnalit
1350 get {
return _cNomAnalit.Trim(); }
1351 set { _cNomAnalit = value; }
1353 private string _cNomAnalit =
"";
1359 public bool _PrimeraSecundaria
1363 bool lbPrimeraSecundaria;
1365 if (loParent.
_Items.Count > 0)
1366 lbPrimeraSecundaria = (loParent.
_Items.Where(lin => lin._Plancont == _Plancont && lin._Secundaria.Trim() == _Secundaria.Trim()).ToList().IndexOf(
this) == 0);
1367 else if (
string.IsNullOrWhiteSpace(_Secundaria))
1368 lbPrimeraSecundaria =
true;
1369 else lbPrimeraSecundaria =
false;
1371 return lbPrimeraSecundaria;
1378 public bool _PrimerPlan
1384 if (loParent.
_Items.Count > 0)
1385 lbPrimerPlan = (loParent.
_Items.Where(lin => lin._Plancont == _Plancont).ToList().IndexOf(
this) == 0);
1386 else if (
string.IsNullOrWhiteSpace(_Plancont))
1387 lbPrimerPlan =
true;
1389 lbPrimerPlan =
false;
1391 return lbPrimerPlan;
1399 public object _Parent
1401 get {
return loParent; }
1420 private bool SecundariaValida(
string tcSecundaria,
string tcNivell,
string tcCuenta =
"")
1422 if (
string.IsNullOrWhiteSpace(tcSecundaria) && _PrimeraSecundaria)
1424 if (tcNivell ==
"2" && tcSecundaria.Trim() != Convert.ToString(_Secundaria).Trim() &&
1425 loParent.
_Items.Where(lin => lin._Plancont == _Plancont && !lin._PrimerPlan).ToList().Count > 0)
1427 FUNCTIONS._MessageBox(
"No está permitida la eliminación, existen cuentas de nivel 1, 2 asociadas al mismo plan contable " + _Plancont.Trim(),
"Planes analíticos", MessageBoxButtons.OK, MessageBoxIcon.Stop);
1432 string lcCuenta = tcNivell ==
"1" ? Convert.ToString(_Plancont) : Convert.ToString(_Secundaria).Trim();
1433 if (
string.IsNullOrWhiteSpace(tcSecundaria) || tcSecundaria.Trim() == lcCuenta.Trim())
1442 protected internal void _AsignarPlanAnalitico()
1446 if (
string.IsNullOrWhiteSpace(_Plancont) && _PrimerPlan)
1448 int lnPos = loParent.
_Items.IndexOf(
this);
1451 AlmacenPlan loAnterior = loParent.
_Items[lnPos - 1];
1452 if (!
string.IsNullOrWhiteSpace(loAnterior._cSecnivel1))
1454 _cPlancont = loAnterior._Plancont;
1464 protected internal void _AsignarCuentaNivel1YPlan()
1466 if (
string.IsNullOrWhiteSpace(_Plancont) &&
string.IsNullOrWhiteSpace(_Secundaria) && _PrimeraSecundaria)
1468 int lnPos = loParent.
_Items.IndexOf(
this);
1471 AlmacenPlan loAnterior = loParent.
_Items[lnPos - 1];
1472 if (!
string.IsNullOrWhiteSpace(loAnterior._cSecnivel1) && !
string.IsNullOrWhiteSpace(loAnterior._cSecnivel2))
1474 _cPlancont = loAnterior._Plancont;
1475 _cSecnivel1 = loAnterior._Secundaria;
1487 private bool Secnivel2Valida(
string tcSecundaria)
1489 if (
string.IsNullOrWhiteSpace(_Plancont) &&
string.IsNullOrWhiteSpace(_Secundaria) && _PrimeraSecundaria)
1491 int lnPos = loParent.
_Items.IndexOf(
this);
1494 AlmacenPlan loAnterior = loParent.
_Items[lnPos - 1];
1495 if (!
string.IsNullOrWhiteSpace(loAnterior._cSecnivel1) &&
string.IsNullOrWhiteSpace(loAnterior._cSecnivel2))
1497 FUNCTIONS._MessageBox(
"No está permitida la inserción de una cuenta de nivel 2 ya que existe un registro sin nivel 2 para el mismo plan y cuenta de nivel 1",
"Planes analíticos", MessageBoxButtons.OK, MessageBoxIcon.Stop);
1516 lbFilaPlena = !(
string.IsNullOrWhiteSpace(_Plancont)) && !(
string.IsNullOrWhiteSpace(_Secundaria));
void _CalcularTotalPorcentajesLinea(ref string tcPlan, ref string tcNivel1, ref string tcNivel2, out decimal tpcPlan, out decimal tpcNivel1)
Calcular el total de porcentajes de la linea para mostrar en la parte inferior del formulario ...
AlmacenPlanes(string tcCodigoArticulo)
Inicializa una nueva intancia de la clase
Clase de negocio base para mantenimientos
ewMascara _Mascara
Máscara para columnas numéricas
sage.ew.botones.btMante _Mante
Mantenimiento para la columna del grid o campo enlazado
AlmacenPlanes()
Inicializa una nueva intancia de la clase
Objeto para la consulta, edición y actualización de datos de tablas (simula vistas de Fox) ...
bool _PermiteDuplicados
Indica si se permiten valores duplicados comparando el campo con todos los registros cargados ...
string _Validar_Dato_Clave
Clave por la cual se buscará el valor a la tabla de validación
DataTable _DataTable
DataTable con los datos recuperdos
bool _Existen_Duplicados_Secundarias()
PE-105666: Comprobar si existen duplicados en las lineas
bool Fila_Plena()
Devuelve si la línea está completa
override bool _Delete()
Borra la familia cargada
Definición de los objetos campo para las tablas relacionadas
override void _Load()
Load
PE-105666: Botón para el mantenimiento de planes analíticos
Clase de acceso a datos de los últimos costes (sólo para gestionar datos de tabla art_ultcos) ...
string _Validar_Dato_BaseDatos
Base de datos donde se validará si el dato existe
Muestra el browser de cuentas secundarias
Mostra el manteniment de comptes secundaries carregant el registre corresponent al _Codigo ...
decimal _Porcentaje
Porcentaje
Clave()
Inicializa una nueva intancia de la clase
Task 111763: Interfaz que implementaran las clases de negocio que se utilicen en el user control de g...
BindingList< _LinTRel > _Items
Lista bindable de todos los items de la tabla relacionada
KeyDiccionarioMascara
Clave para diccionario de máscaras
Mantenimiento para "Cuentas secundarias" PE-100803
NivelCuenta _NivelCuenta
PE-105666: Ahora la cuenta secundaria puede ser de nivel 1 o 2. Nuevo campo
DataTable _DtNiveles1Plan(string tcPlan)
Devuelve un DataTable con los códigos de cuenta analíticas de nivel 1 que tiene el almacén en el plan...
KeyDiccionarioLenCampos
Clave del diccionario LenCampos
string _DefinicionPlanAnalitico(string tcCodigo)
Definición planes analíticos
string _Validar_Dato_Tabla
Tabla donde se validará si el dato existe
static Dictionary< string, string > ObtenerTodosLosAlmacenes()
Método que nos devuelve un diccionario con todos los almacenes
void _BorrarTodas()
Borra todas las secundarias
Campos clave para recuperar las tallas de los artículos
bool EliminarUltimoCoste(string articulo)
Elimina de la tabla art_ultcos (últimos costes) tantos registros cómo almacenes, tallas y colores ten...
void _InsertarTodas()
Inserta todas las secundarias
sage.ew.botones.btBrowser _Browser
Browser para la columna del grid o campo enlazado
virtual bool _Existe_Registro()
Nos indica si existe el registro en la Base de Datos
SecundariasPlan _SecundariasPlan
Enlace con la tabla relacionada Secundar
Definición de los objetos campo para las tablas relacionadas
Updatable
Actualizable. Existe el campo en la tabla.
DataTable _DtPlanes()
Devuelve un DataTable con los códigos de planes analíticos que tiene definidos el almacén...
static bool _ExisteNivelAnaliticoPlan(string tcPlan, CuentaSecundaria.NivelCuenta toNivel, string tcCodigoNivel)
Valida si existe el nivel analítico en el plan en la tabla PLAN_D para gestionar que únicamente permi...
void _Load(string tcGuid_Id)
Aquest mètode ens carregarà el registre que tingui associat aquest Guid
bool _TotalPorcentajes(out string tcPlan)
Calcula la suma dels percentatjes
PE-105666: Browser de planes contables
Proporciona características adicionales de las máscaras de Eurowin
Editable
Premitirá modificar su valor
List< string > _Lista_Planes()
Devuelve en una lista de strings los códigos de los planes analíticos detectados en el almacén...
PE-96306 Clase utilizada para consultar los datos de nivel 1
string _Validar_Dato_CampoTRel_Asignar
Destino del valor recuperado en la consulta de validación
Clase para gestionar los planes analíticos del almacén
Clase para gestionar las secundarias de un plan contable
Interfaz para objetos línea
Definir la estructura de las líneas de los colores de artículos
bool _Existen_Duplicados_Nivel1_Nivel2_Vacio(string tcNivel1, string tcPlan)
Bug 107377
decimal Redondeo(decimal tnImporte)
Aplica el redondeo segun los decimales de la moneda
decimal _Rango_Min
Valor mínimo según la máscara. Es la máscara de VFP convertida a decimal y en negativo ...
string _Validar_Dato_Campos
Campos que se recuperarán en la consulta de validación
DataTable _DtNiveles2Plan(string tcPlan, string tcCuentaNiv1="")
Devuelve un DataTable con los códigos de cuenta analíticas de nivel 2 que tiene el almacén en el plan...
Interfaz para la definición de las claves para tablas relacionadas
Clase para el acceso a las tablas relacionadas de los mantenimientos.
Task 111764: Interfaz que implementaran las clases basadas en ILinTRel que tengan los campos _Plancon...
gridColumnsTypes
Definición de los tipos de columnas para los grids o campos enlazados
Definir la estructura de las definiciones por idioma de artículos
char _Relleno
Introduce tantos carácteres al inicio del campo hasta la longitud del campo
Almacen()
Constructor vacío
AlmacenPlan()
Inicializa una nueva intancia de la clase
Visible
Visible en el grid
bool _Existen_Vacios_Secundarias()
Bug 106200
PE-105666: Mantenimiento de planes contables
string _Plancont
PE-105666: Código de plan contable
bool _Validar_Asignar_Cargando
Indica si se buscará el dato en la tabla correspondiente mientras se ejecuta el _Load() ...
override void _Evento_ShowGrafica_before(object sender, ref formul.Forms.FormListado toForm, ref bool tlOk)
Filtros de la gráfica
string _Error_Validar_Dato
Mensaje de error que se mostrará al insertar un dato no válido
override bool _Save()
Guarda el registro actual
void _RepartirPorcentaje(string tcPlanCont="")
Task 105843: Reparto de % en planes analíticos equitativamente segun nivel1 y a continuación según ni...
bool ImportarPlanAnalitico(string tcPlan)
A partir de un plan analítico, obtenemos todas las secundarias y las combinamos con las secundarias d...
Almacen(string tcCodigo)
Constructor con código