ExtensionDocPedVenta.cs
1 using sage.ew.ewbase;
2 using sage.ew.global;
3 using sage.ew.interficies;
5 using sage.ew.docsven;
6 using System.Linq;
7 using System.Collections.Generic;
9 
10 namespace sage.addons.offline.Negocio.Documentos
11 {
16  {
17  #region Properties
18 
19  private bool bSoloLectura = false;
23  public bool _bSoloLectura
24  {
25  get { return bSoloLectura; }
26  set { bSoloLectura = value; }
27  }
28 
29  private readonly string cEjercicio = string.Empty;
30  private string tablaExtendida = "CTRL_PEDV";
31  private OfflineConfig _offlineConfig;
32  private List<string> lisEntregas = new List<string>();
33  private IBaseDA _extensionDocPedVentaDA;
37  protected internal bool _ControlBorrados = false;
38 
42  protected internal bool _ControlBorradosTablaControl = false;
43 
47  protected internal int _TipoBorrado = 0;
48 
52  protected internal string _DeleteNetID = string.Empty;
53 
54  #endregion Properties
55 
56 
57  #region Constructors
58 
63  {
64  cEjercicio = EW_GLOBAL._GetVariable("wc_any").ToString();
66  _extensionDocPedVentaDA = baseDA;
67  }
68 
69  #endregion Constructors
70 
71 
72  #region Public Methods
73 
81  public override bool _Load(string tcEmpresa, string tcNumero, string tcLetra = "")
82  {
83  bool llOk = base._Load(tcEmpresa, tcNumero, tcLetra);
84 
85  if (llOk)
86  {
87  // De momento no realizamos ninguna acción en modo Before
88  if (_eBeforeAfter == TipoExecute.Before)
89  return true;
90 
91  List<string> listaID = new List<string>
92  {
93  "56"
94  };
95 
96  if (_offlineConfig.CondicionPrioridadDocumentos(listaID))
97  {
98  bSoloLectura = _offlineConfig.RevisarTablaControl(tablaExtendida, tcEmpresa, tcNumero, "Letra", tcLetra);
99  }
100 
101  _ControlBorradosTablaControl = false;
102  lisEntregas = new List<string>();
103 
104  if (_offlineConfig.CondicionControlDocumentos(listaID))
105  {
106  _ControlBorrados = _offlineConfig.RevisarTablaControl(tablaExtendida, tcEmpresa, tcNumero, "Letra", tcLetra);
107  _ControlBorradosTablaControl = true;
108 
109  _DeleteNetID = _offlineConfig.GenerarRandomId();
110 
111  List<IEntregasDoc> lista = ((this as ExtensionDocPedVenta)._Documento as ewDocVentaPED)._Entregas.ToList();
112 
113  foreach (EntregaPedido item in lista)
114  {
115  lisEntregas.Add(item._Asi);
116  }
117  }
118  }
119 
120  return llOk;
121  }
122 
127  public override bool _Delete()
128  {
129  _TipoBorrado = 2;
130 
131  bool llOk = base._Delete();
132 
133  if (_eBeforeAfter == TipoExecute.Before)
134  {
135  return true;
136  }
137 
138  if (_ControlBorrados)
139  {
140  string where = string.Empty;
141 
142  where = $@" Where empresa = {_extensionDocPedVentaDA.SQLString(((this as _ExtensionDocVentaDocumento)._Documento as ewDocVentaPED)._Empresa)} and numero = {_extensionDocPedVentaDA.SQLString(((this as _ExtensionDocVentaDocumento)._Documento as ewDocVentaPED)._Numero, 10, tlIzquierda: true)} and letra = {_extensionDocPedVentaDA.SQLString(((this as _ExtensionDocVentaDocumento)._Documento as ewDocVentaPED)._Letra, 2)}";
143 
144  _offlineConfig.InsertDeleteNet("C_PEDIVE", "GESTION", "C_PEDIVE", _TipoBorrado, cEjercicio, where);
145  }
146 
147  _TipoBorrado = 0;
148 
149  if (_ControlBorradosTablaControl)
150  {
151  List<OfflineConfig.CamposFiltro> listaCamposFiltros = new List<OfflineConfig.CamposFiltro>
152  {
153  new OfflineConfig.CamposFiltro(){campo = "Empresa", valor = ((this as _ExtensionDocVentaDocumento)._Documento as ewDocVentaPED)._Empresa},
154  new OfflineConfig.CamposFiltro(){campo = "Ejercicio", valor = cEjercicio},
155  new OfflineConfig.CamposFiltro(){campo = "Numero", valor = ((this as _ExtensionDocVentaDocumento)._Documento as ewDocVentaPED)._Numero},
156  new OfflineConfig.CamposFiltro(){campo = "Letra", valor = ((this as _ExtensionDocVentaDocumento)._Documento as ewDocVentaPED)._Letra},
157  };
158  _offlineConfig.DeleteTablaControlManten(tablaExtendida, listaCamposFiltros);
159  }
160 
161  _offlineConfig._RecalcularRiesgoClienteOffline(((this as _ExtensionDocVentaDocumento)._Documento as ewDocVentaPED)._Empresa, ((this as _ExtensionDocVentaDocumento)._Documento as ewDocVentaPED)._Cabecera._Cliente);
162 
163  return llOk;
164  }
165 
170  public override bool _Delete_Linea(IDocumentLinea toLineaDocumento)
171  {
172  bool llOk = base._Delete_Linea(toLineaDocumento);
173 
174  if (_eBeforeAfter == TipoExecute.Before)
175  {
176  return true;
177  }
178 
179  if (_ControlBorrados)
180  {
181  string claveTab = "C_PEDIVE";
182  string where = " Where empresa = " + _extensionDocPedVentaDA.SQLString(toLineaDocumento._Empresa) +
183  " and numero = " + _extensionDocPedVentaDA.SQLString(toLineaDocumento._Numero, 10, tlIzquierda: true) +
184  " and letra = " + _extensionDocPedVentaDA.SQLString(toLineaDocumento._Letra, 2) +
185  " and linia = " + _extensionDocPedVentaDA.SQLString(toLineaDocumento._Linea);
186 
187  _offlineConfig.InsertDeleteNet(_DeleteNetID, claveTab, "GESTION", "D_PEDIVE", _TipoBorrado, cEjercicio, where);
188  }
189 
190  return llOk;
191  }
192 
198  public override bool _Save(bool tbForzarGuardarLineas = false)
199  {
200  bool llOk = base._Save(tbForzarGuardarLineas);
201 
202  if (_eBeforeAfter == TipoExecute.Before)
203  return true;
204 
205  if (_ControlBorrados)
206  {
207  List<string> newlisEntregas = new List<string>();
208  List<IEntregasDoc> lista = ((this as ExtensionDocPedVenta)._Documento as ewDocVentaPED)._Entregas.ToList();
209 
210  foreach (EntregaPedido item in lista)
211  {
212  newlisEntregas.Add(item._Asi);
213  }
214 
215  string claveTab = "C_PEDIVE";
216  int newORDEN = _offlineConfig.GetNewOrdenDeleteNet(claveTab); //repDeleteNet.NewId(del, "orden", 1, $@"clavetab = {_extensionDocPedVentaDA.SQLString(claveTab)}");
217  string where = string.Empty;
218 
219  foreach (string item in lisEntregas)
220  {
221  if (!newlisEntregas.Contains(item))
222  {
223  string lcEmpresa = _Documento._Empresa;
224 
225  where = $@" Where empresa = {_extensionDocPedVentaDA.SQLString(lcEmpresa)} and asi = {_extensionDocPedVentaDA.SQLString(item)}";
226  _offlineConfig.InsertDeleteNet(_DeleteNetID, claveTab, "GESTION", "ENTRE_PV", _TipoBorrado, newORDEN, cEjercicio, where);
227  newORDEN++;
228  }
229  }
230 
231  lisEntregas = newlisEntregas;
232  }
233 
234  return llOk;
235  }
236 
243  public override bool _Abandonar_Documento(bool tbNoValidarDocumento = false, bool tlSalirDocumento = false)
244  {
245  // Optimización del recálculo del riesgo
246  if (_eBeforeAfter == TipoExecute.After)
247  {
248  _offlineConfig._RecalcularRiesgoClienteOffline(((this as _ExtensionDocVentaDocumento)._Documento as ewDocVentaPED)._Empresa, ((this as _ExtensionDocVentaDocumento)._Documento as ewDocVentaPED)._Cabecera._Cliente);
249  }
250 
251  return base._Abandonar_Documento(tbNoValidarDocumento, tlSalirDocumento);
252  }
253 
258  public override bool _Validar_Solo_Lectura()
259  {
260  if (_eBeforeAfter == TipoExecute.After)
261  {
262  return _bSoloLectura;
263  }
264 
265  return false;
266  }
267 
268  #endregion Public Methods
269  }
270 }
override bool _Delete()
Método que se ejecuta cuando el usuario borra un documento
DataAccess.Model.deletenet InsertDeleteNet(string id, string claveTab, string baseDatos, string tabla, int tipo, int orden, string ejercicio, string where)
Inserta un registro en la tabla DeleteNet a través de la creación de un objeto de la clase deletenet ...
Clase que permite extender la funcionalidad en los documentos de venta para PaM y nuevos módulos...
Clase que permite extender la funcionalidad en los pedidos de venta para PaM y nuevos módulos...
override bool _Load(string tcEmpresa, string tcNumero, string tcLetra="")
Override del _Load para consultar si el documento es o no de solo lectura segun prioridades ...
string GenerarRandomId()
Generar id aleatorio para la tabla delete net y otras futuras, de 10 caracteres
bool RevisarTablaControl(string tcTabla, string tcEmpresa, string tcNumero, string tcCampo3="", string tcValor3="")
Revisar tabla de control
object Retrieve(Type T)
Resuelve objeto de tipo T
override bool _Save(bool tbForzarGuardarLineas=false)
Método que se ejecuta cuando el usuario guarda un documento
string _Asi
_Asi : Asiento
Definition: DocsVen.cs:30018
bool CondicionPrioridadDocumentos(List< string > lisTabrels)
Condición de prioridad de documentos
Es como el tipo de entrada asientos pero por negocio, sin formulario, pq quiero que me haga las propu...
Interficie mínima de las líneas (Mantener lo mas reducida posible)
Definition: IDocument.cs:186
Campos de los que se compone el filtro para filtrar en tabla control (CTRL_). Máximo un campo ...
bool DeleteTablaControlManten(string tabla, string valorCodigo, string campoCodigo="codigo", string ejercicio="", string campo3="", string valor3="")
Método que borra de la tabla extendida CTRL_ el registro eliminado
bool CondicionControlDocumentos(List< string > lisTabrels)
Condición de control de documentos
override bool _Validar_Solo_Lectura()
Validación de sólo lectura
Clase documento de PEDIDOS
Definition: DocsPed.cs:39
ExtensionDocPedVenta(IBaseDA baseDA)
Inicializa una nueva instancia de la clase
Interfaz base de Acceso a datos
Definition: IBaseDA.cs:12
int GetNewOrdenDeleteNet(string claveTab)
Obtiene el siguiente orden del deletenet de la clave clavetab
EntregaPedido: Entrega a cuenta pedido de venta
Definition: DocsPed.cs:4078
TipoExecute
Tipos de ejecución de los métodos
Definition: IDocModulos.cs:16
Clase de negocio para la configuración del addon de offline
Extensión de documento para pedidos de venta
void _RecalcularRiesgoClienteOffline(string tcEmpresa, string tcCliente)
Recalcular el riesgo por cliente y empresa
override bool _Abandonar_Documento(bool tbNoValidarDocumento=false, bool tlSalirDocumento=false)
Abandonar documento. Descarga líneas y limpia valores de propiedades...
override bool _Delete_Linea(IDocumentLinea toLineaDocumento)
Método que se ejecuta cuando el usuario borra una línea del documento.
Clase Inyector de dependencias para resolver las dependencias