2 using System.Collections.Generic;
3 using System.ComponentModel;
28 protected internal int _nLinea;
38 public bool _HayCambios =
false;
48 private DataTable _dtEscalado =
new DataTable();
50 private string _cEmpresa = EW_GLOBAL._GetVariable(
"wc_empresa").ToString();
57 private bool lb_ldmarc =
false;
58 private bool lb_climarc =
false;
59 private bool lb_cliarrf =
false;
78 _dtEscalado = _CargarDatos();
79 _dtEscalado = _ValidaDatos(_dtEscalado);
80 _lisLineas = _ConvertirListaLineas();
90 DataTable loDt =
new DataTable();
92 lcSql = String.Format(
"SELECT codigo, nombre, orden FROM {0} WHERE empresa = {1} ORDER BY orden ", DB.SQLDatabase(
"COMUNES",
"ESCALADO"), DB.SQLString(_cEmpresa));
94 DB.SQLExec(lcSql, ref loDt);
104 private DataTable _ValidaDatos(DataTable toDtEscalado)
106 if (toDtEscalado != null && toDtEscalado.Rows.Count > 0)
108 Int32 nOrden = toDtEscalado.Rows.Count;
111 var l_d_marc = toDtEscalado.AsEnumerable().Where(loEle => loEle.Field<
string>(
"codigo").ToUpper().ToString().Trim() ==
"L_D_MARC").ToList();
112 if (l_d_marc.Count == 0)
114 DataRow loRow = toDtEscalado.NewRow();
115 loRow[
"CODIGO"] =
"L_D_MARC";
116 loRow[
"NOMBRE"] =
"Linea descuento - Marca";
117 loRow[
"ORDEN"] = nOrden + 1;
118 toDtEscalado.Rows.Add(loRow);
126 var cli_marc = toDtEscalado.AsEnumerable().Where(loEle => loEle.Field<
string>(
"codigo").ToUpper().ToString().Trim() ==
"CLI_MARC").ToList();
127 if (l_d_marc.Count == 0)
129 DataRow loRow = toDtEscalado.NewRow();
130 loRow[
"CODIGO"] =
"CLI_MARC";
131 loRow[
"NOMBRE"] =
"Descuento por Cliente - Marca/Subfamilia";
132 loRow[
"ORDEN"] = nOrden + 1;
133 toDtEscalado.Rows.Add(loRow);
139 if (!Convert.ToBoolean(EW_GLOBAL._GetVariable(
"wl_arrelfam")))
141 var cliarrf = toDtEscalado.AsEnumerable().Where(loEle => loEle.Field<
string>(
"codigo").ToUpper().ToString().Trim() ==
"CLI_ARRF").ToList();
142 if (l_d_marc.Count > 0)
144 toDtEscalado.Rows.Remove(toDtEscalado.AsEnumerable().Where(loEle => loEle.Field<
string>(
"codigo").ToUpper().ToString().Trim() ==
"CLI_ARRF").FirstOrDefault());
149 string wc_desobra = Convert.ToString(EW_GLOBAL._GetVariable(
"wc_desobra"));
150 wc_desobra = wc_desobra.TrimEnd();
152 foreach(DataRow row
in toDtEscalado.Rows)
154 if (row[
"nombre"].ToString().Contains(
"Obra"))
156 row[
"nombre"] = row[
"nombre"].ToString().Replace(
"Obra", wc_desobra);
162 if (toDtEscalado != null && toDtEscalado.Rows.Count > 0)
164 foreach (DataRow row
in toDtEscalado.Rows)
166 row[
"nombre"] = row[
"nombre"].ToString().TrimEnd() +
" (" + row[
"codigo"].ToString().TrimEnd() +
")";
174 private BindingList<LineasOrdenDescuento> _ConvertirListaLineas()
176 _lisLineas =
new BindingList<LineasOrdenDescuento>();
178 if (_dtEscalado != null && _dtEscalado.Rows.Count > 0)
181 foreach (DataRow row
in _dtEscalado.Rows)
183 LineasOrdenDescuento loLinea =
new LineasOrdenDescuento();
184 loLinea._Load(row, nLin,
this);
185 _lisLineas.Add(loLinea);
198 _mantegrid.
_Grid.DataSource = _lisLineas;
208 Actualizar_Registros();
210 Insertar_Registros();
219 private void Actualizar_Registros()
221 int nOrden = _lisLineas[_lisLineas.Count - 1]._nOrden;
225 if ((lb_ldmarc && loLin._cCodigo.ToString().Trim() ==
"L_D_MARC") || (lb_climarc && loLin._cCodigo.ToString().Trim() ==
"CLI_MARC"))
227 string lcNombre = (loLin._cCodigo.ToString().Trim() ==
"L_D_MARC" ?
"Descuento por Cliente - Marca/Subfamilia" :
"Linea descuento - Marca");
229 DB.SQLExec(
" INSERT INTO " + DB.SQLDatabase(
"COMUNES",
"ESCALADO") +
230 " (empresa, codigo, nombre, orden) " +
231 " Values (" + DB.SQLString(_cEmpresa) +
"," +
232 DB.SQLString(loLin._cCodigo) +
", " +
234 DB.SQLString(loLin._nOrden) +
")");
238 string lcModified =
"";
239 bool llOrdenCambiado =
false;
240 llOrdenCambiado = this.ordenCambiado(loLin._cCodigo, loLin._nOrden, out lcModified);
241 DB.SQLExec(
" UPDATE " + DB.SQLDatabase(
"COMUNES",
"ESCALADO") +
" " +
242 " SET orden = " + DB.SQLString(loLin._nOrden) +
" " +
244 " WHERE empresa = " + DB.SQLString(_cEmpresa) +
" AND codigo = " + DB.SQLString(loLin._cCodigo));
254 private void Insertar_Registros()
258 int nOrden = _lisLineas[_lisLineas.Count - 1]._nOrden;
260 var cli_arrf = _dtEscalado.AsEnumerable().Where(loEle => loEle.Field<
string>(
"codigo").ToUpper().ToString().Trim() ==
"CLI_ARRF").ToList();
261 if (cli_arrf.Count == 0)
263 DataRow loRow = _dtEscalado.NewRow();
264 loRow[
"CODIGO"] =
"CLI_ARRF";
265 loRow[
"NOMBRE"] =
"Descuento Cliente - Raíz de Familia";
266 loRow[
"ORDEN"] = nOrden + 1;
267 _dtEscalado.Rows.Add(loRow);
269 string lcModified =
"";
270 bool llOrdenCambiado =
false;
271 llOrdenCambiado = this.ordenCambiado(
"CLI_ARRF", nOrden + 1, out lcModified);
273 DB.SQLExec(
" UPDATE " + DB.SQLDatabase(
"COMUNES",
"ESCALADO") +
" " +
274 " SET orden = " + (nOrden + 1) +
" " +
276 " WHERE empresa = " + DB.SQLString(_cEmpresa) +
277 " AND codigo = 'CLI_ARRF'" );
291 private bool ordenCambiado(
string tcCodigo,
int tnOrden, out
string tcModified)
294 bool tlOrdenCambiado =
false;
298 DataRow[] registros = this._dtEscalado.Select(
"codigo=" + DB.SQLString(tcCodigo));
299 if (registros.Count() >= 1)
301 if (Convert.ToInt32(registros[0][
"orden"]) != tnOrden)
304 tlOrdenCambiado =
true;
305 tcModified =
", modified = " + DB.SQLString(DateTime.Now);
309 return tlOrdenCambiado;
316 private void OfflineCom_Estado()
319 if (EW_GLOBAL._ModuloActivo(
"OFFLINE"))
322 if (DB.SQLExisteCampo(
"COMUNES",
"ESCALADO",
"COM_ESTADO"))
325 foreach (LineasOrdenDescuento loLin
in _lisLineas)
327 DB.SQLExec(
"UPDATE " + DB.SQLDatabase(
"COMUNES",
"ESCALADO") +
328 " SET com_estado = 2 , " +
329 " com_fecha = " + DB.SQLString(DateTime.Now) +
" , " +
330 " modified = " + DB.SQLString(DateTime.Now) +
" " +
331 " WHERE com_estado = 1 " +
332 " AND empresa = " + DB.SQLString(_cEmpresa) +
333 " AND codigo = " + DB.SQLString(loLin._cCodigo));
346 #region PROPIEDADES INTERNAS 356 protected internal int _nOrden = 0;
360 protected internal string _cNombre =
string.Empty;
365 protected internal string _cCodigo =
string.Empty;
374 #region PROPIEDADES PUBLICAS 379 public BindingList<OrdenDescuento> _Lineas
383 if (_lisLineas == null)
384 _lisLineas =
new BindingList<OrdenDescuento>();
388 set { _lisLineas = value; }
440 #region CONSTRUCTORES 456 _cCodigo = Convert.ToString(ldr[
"codigo"]).ToString();
457 _cNombre = Convert.ToString(ldr[
"nombre"]).ToString();
458 _nOrden = Convert.ToInt32(ldr[
"orden"]);
459 _oOrdenDescuento = od;
487 return MoverLineas(indiceLineaDestino + 1);
495 return _LineaMover(0);
521 private bool MoverLineas(
int indiceLineaDestino,
bool tlValidar =
true)
523 dynamic lolin =
this;
525 int lnIndice = this._nOrden;
526 bool llInsertar = !(lnIndice + 1 == _oOrdenDescuento.
_lisLineas.Count);
528 int lnLineaDestino = indiceLineaDestino;
530 MoverLiniaADestino(lnIndice, lnLineaDestino, llInsertar);
544 private void MoverLiniaADestino(
int tnLineaAnt,
int tnLineaDestino,
bool tlInsertar)
546 dynamic lolin =
this;
548 string lcCodigo = lolin._cCodigo;
552 foreach (LineasOrdenDescuento loOd
in _oOrdenDescuento.
_lisLineas)
554 if (loOd._nOrden == tnLineaAnt && loOd._cCodigo == lcCodigo)
556 loOd._nOrden = tnLineaDestino;
560 if (nLin == tnLineaDestino)
569 _oOrdenDescuento.
_lisLineas =
new BindingList<LineasOrdenDescuento>(_oOrdenDescuento.
_lisLineas.OrderBy(x => x._nOrden).ToList());
ewgrid _Grid
Proporciona acceso al control DataGrid
Interfaz para permitir reordenar líneas en los mantegrid
Presenta un datagridview con botones añadir y borrar tipo Mantegrid de Eurowin