StocksDeSeries.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Data;
4 using System.Linq;
5 using sage.ew.db;
6 using sage.ew.global;
7 using sage.ew.listados.Clases;
8 using sage.ew.stocks;
9 
10 namespace sage.ew.serie
11 {
15  public partial class StocksDeSeries
16  {
17  #region Stocks series
18 
26  public DataTable _StockSerie(string tcWhere, Stock.TipoValoracion teValoracion = Stock.TipoValoracion.IncluyendoDepositos, DateTime? tdFecha = null)
27  {
28  DataTable ldtDataTable = null;
29 
30  DataTable ldtLtstini = new DataTable();
31  DataTable ldtLtregul = new DataTable();
32  DataTable ldtInventaris = new DataTable();
33  DataTable ldtDatosRevisados = new DataTable();
34 
35  DataTable ldtLtalbco = new DataTable();
36  DataTable ldtLtalbve = new DataTable();
37  DataTable ldtLtalbre = new DataTable();
38  DataTable ldtLtalbtrS = new DataTable();
39  DataTable ldtLtalbtrE = new DataTable();
40  DataTable ldtLtdepco = new DataTable();
41  DataTable ldtLtdepcoT = new DataTable();
42  DataTable ldtLtdepve = new DataTable();
43  DataTable ldtLtdepveT = new DataTable();
44  DataTable ldtLtcprod = new DataTable();
45  DataTable ldtLtdprod = new DataTable();
46  DataTable ldtLtctran = new DataTable();
47  DataTable ldtLtdtran = new DataTable();
48 
49  DataTable ldtCostemod = new DataTable();
50 
51  switch (teValoracion)
52  {
53  case Stock.TipoValoracion.DepositosVenta:
54  ldtLtdepve = _StockSerie_Depser(tcWhere, false);
55  ldtLtdepveT = _StockSerie_Depser_Trasp(tcWhere, false, tdFecha);
56  break;
57 
58  case Stock.TipoValoracion.DepositosCompra:
59  ldtLtdepco = _StockSerie_Depcser(tcWhere);
60  ldtLtdepcoT = _StockSerie_Depcser_Trasp(tcWhere, tdFecha);
61  break;
62 
63  case Stock.TipoValoracion.SinDepositos:
64  ldtLtstini = _StockSerie_Stockinser(tcWhere);
65  ldtLtregul = _StockSerie_Regulariser(tcWhere);
66 
67  // Tractar els datatables dels inventaris
68  ldtInventaris = _StockSerie_Unir_Inventarios(ldtLtstini, ldtLtregul);
69 
70  ldtLtalbco = _StockSerie_Comser(tcWhere);
71  ldtLtalbre = _StockSerie_Reguser(tcWhere);
72  ldtLtalbve = _StockSerie_Venser(tcWhere);
73  ldtLtalbtrS = _StockSerie_Traspser_Salidas(tcWhere);
74  ldtLtalbtrE = _StockSerie_Traspser_Entradas(tcWhere);
75  ldtLtcprod = _StockSerie_Prodser(tcWhere);
76  ldtLtdprod = _StockSerie_Produser(tcWhere);
77  ldtLtctran = _StockSerie_Transser(tcWhere);
78  ldtLtdtran = _StockSerie_Transer(tcWhere);
79  ldtCostemod = _StockSerie_Montajes(tcWhere);
80 
81  break;
82 
83  default:
84  ldtLtstini = _StockSerie_Stockinser(tcWhere);
85  ldtLtregul = _StockSerie_Regulariser(tcWhere);
86 
87  // Tractar els datatables dels inventaris
88  ldtInventaris = _StockSerie_Unir_Inventarios(ldtLtstini, ldtLtregul);
89 
90  ldtLtalbco = _StockSerie_Comser(tcWhere);
91  ldtLtalbre = _StockSerie_Reguser(tcWhere);
92  ldtLtalbve = _StockSerie_Venser(tcWhere);
93  ldtLtalbtrS = _StockSerie_Traspser_Salidas(tcWhere);
94  ldtLtalbtrE = _StockSerie_Traspser_Entradas(tcWhere);
95  ldtLtcprod = _StockSerie_Prodser(tcWhere);
96  ldtLtdprod = _StockSerie_Produser(tcWhere);
97  ldtLtctran = _StockSerie_Transser(tcWhere);
98  ldtLtdtran = _StockSerie_Transer(tcWhere);
99  ldtCostemod = _StockSerie_Montajes(tcWhere);
100 
101  ldtLtdepve = _StockSerie_Depser(tcWhere);
102  ldtLtdepveT = _StockSerie_Depser_Trasp(tcWhere, true, tdFecha);
103  ldtLtdepco = _StockSerie_Depcser(tcWhere);
104  ldtLtdepcoT = _StockSerie_Depcser_Trasp(tcWhere, tdFecha);
105 
106  break;
107  }
108 
109  // Una vegada tot paralelitzat, unim els cursors
110 
111  _StockSerie_Acumular(ref ldtDataTable, ldtLtalbco);
112  _StockSerie_Acumular(ref ldtDataTable, ldtLtalbre);
113  _StockSerie_Acumular(ref ldtDataTable, ldtLtalbve);
114 
115  _StockSerie_Acumular(ref ldtDataTable, ldtLtalbtrS);
116  _StockSerie_Acumular(ref ldtDataTable, ldtLtalbtrE);
117  _StockSerie_Acumular(ref ldtDataTable, ldtLtcprod);
118  _StockSerie_Acumular(ref ldtDataTable, ldtLtdprod);
119  _StockSerie_Acumular(ref ldtDataTable, ldtLtctran);
120  _StockSerie_Acumular(ref ldtDataTable, ldtLtdtran);
121 
122  _StockSerie_Acumular(ref ldtDataTable, ldtCostemod);
123 
124 
125  // Finalment, incorporem els diposits
126  _StockSerie_Acumular(ref ldtDataTable, ldtLtdepco);
127  _StockSerie_Acumular(ref ldtDataTable, ldtLtdepcoT);
128  _StockSerie_Acumular(ref ldtDataTable, ldtLtdepve);
129  _StockSerie_Acumular(ref ldtDataTable, ldtLtdepveT);
130 
131  // S'han de revisar els documents fins al moment
132  ldtDatosRevisados = _StockSerie_Revisar_Stock(ref ldtDataTable, ldtInventaris);
133 
134  // Inicialitzem el datatable de resultats, per poder acumular
135  ldtDataTable = _StockSerie_Estructura(tcWhere);
136 
137  _StockSerie_Acumular(ref ldtDataTable, ldtInventaris);
138  _StockSerie_Acumular(ref ldtDataTable, ldtDatosRevisados);
139 
140  // Ordenar i optimitzar les dades
141  _StockSerie_Ordenar(ref ldtDataTable);
142 
143 
144  return ldtDataTable;
145  }
146 
147  private DataTable _StockSerie_Estructura(string tcWhere)
148  {
149  String lcSql = string.Empty;
150  DataTable ldtCompras = new DataTable();
151 
152  tcWhere += " AND 1=2 ";
153 
154  lcSql = " SELECT d.articulo, d.talla, d.color, s.serie, c.almacen, c.fecha, (CASE WHEN d.unidades>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
155  lcSql += " FROM " + DB.SQLDatabase("GESTION", "c_albcom") + " c ";
156  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "d_albcom") + " d ON c.empresa = d.empresa AND c.proveedor = d.proveedor AND c.numero = d.numero ";
157  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "comser") + " s ON d.empresa = s.empresa AND d.proveedor = s.proveedor AND d.numero = s.albaran AND d.linia = s.linea ";
158  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
159  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
160  lcSql += " ORDER BY c.almacen, d.articulo, d.talla, d.color, s.serie ";
161 
162  DB.SQLExec(lcSql, ref ldtCompras);
163 
164  return ldtCompras;
165  }
166 
167  private DataTable _StockSerie_Comser(string tcWhere)
168  {
169  String lcSql = string.Empty;
170  DataTable ldtCompras = new DataTable();
171 
172  lcSql = " SELECT d.articulo, d.talla, d.color, s.serie, c.almacen, c.fecha, (CASE WHEN d.unidades>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
173  lcSql += " FROM " + DB.SQLDatabase("GESTION", "c_albcom") + " c ";
174  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "d_albcom") + " d ON c.empresa = d.empresa AND c.proveedor = d.proveedor AND c.numero = d.numero ";
175  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "comser") + " s ON d.empresa = s.empresa AND d.proveedor = s.proveedor AND d.numero = s.albaran AND d.linia = s.linea ";
176  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
177  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
178  lcSql += " ORDER BY c.almacen, d.articulo, d.talla, d.color, s.serie ";
179 
180  DB.SQLExec(lcSql, ref ldtCompras);
181 
182  return ldtCompras;
183  }
184 
185  private DataTable _StockSerie_Venser(string tcWhere)
186  {
187  String lcSql = string.Empty;
188  DataTable ldtVentas = new DataTable();
189 
190  lcSql = " SELECT d.articulo, d.talla, d.color, s.serie, c.almacen, c.fecha, (CASE WHEN d.unidades<0 THEN 1.00 ELSE -1.00 END) AS unidades ";
191  lcSql += " FROM " + DB.SQLDatabase("GESTION", "c_albven") + " c ";
192  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "d_albven") + " d ON c.empresa = d.empresa AND c.numero = d.numero AND c.letra = d.letra ";
193  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "venser") + " s ON d.empresa = s.empresa AND d.numero = s.albaran AND d.letra = s.letra AND d.linia = s.linea ";
194  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
195  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
196  lcSql += " ORDER BY c.almacen, d.articulo, d.talla, d.color, s.serie ";
197 
198  DB.SQLExec(lcSql, ref ldtVentas);
199 
200  return ldtVentas;
201  }
202 
203  private DataTable _StockSerie_Reguser(string tcWhere)
204  {
205  String lcSql = string.Empty;
206  DataTable ldtAlbaregu = new DataTable();
207 
208  lcSql = " SELECT d.articulo, d.talla, d.color, s.serie, c.almacen, c.fecha, (CASE WHEN d.unidades<0 THEN 1.00 ELSE -1.00 END) AS unidades ";
209  lcSql += " FROM " + DB.SQLDatabase("GESTION", "c_albare") + " c ";
210  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "d_albare") + " d ON c.empresa = d.empresa AND c.numero = d.numero ";
211  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "reguser") + " s ON d.empresa = s.empresa AND d.numero = s.albaran AND d.linia = s.linea ";
212  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
213  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
214  lcSql += " ORDER BY c.almacen, d.articulo, d.talla, d.color, s.serie ";
215 
216  DB.SQLExec(lcSql, ref ldtAlbaregu);
217 
218  return ldtAlbaregu;
219  }
220 
221  private DataTable _StockSerie_Traspser_Entradas(string tcWhere)
222  {
223  String lcSql = string.Empty;
224  DataTable ldtTraspasEnt = new DataTable();
225 
226  // tinc que canviar el camp pel qual es filtra el magatzem
227  tcWhere = tcWhere.Replace("almacen", "almdest");
228 
229  lcSql = " SELECT d.articulo, d.talla, d.color, s.serie, c.almdest as almacen, c.fecha, (CASE WHEN d.unidades>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
230  lcSql += " FROM " + DB.SQLDatabase("GESTION", "c_albatr") + " c ";
231  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "d_albatr") + " d ON c.empresa = d.empresa AND c.numero = d.numero ";
232  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "traspser") + " s ON d.empresa = s.empresa AND d.numero = s.albaran AND d.linia = s.linea ";
233  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
234  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
235  lcSql += " ORDER BY c.almdest, d.articulo, d.talla, d.color, s.serie ";
236 
237  DB.SQLExec(lcSql, ref ldtTraspasEnt);
238 
239  return ldtTraspasEnt;
240  }
241 
242  private DataTable _StockSerie_Traspser_Salidas(string tcWhere)
243  {
244  String lcSql = string.Empty;
245  DataTable ldtTraspasSal = new DataTable();
246 
247  // tinc que canviar el camp pel qual es filtra el magatzem
248  tcWhere = tcWhere.Replace("almacen", "almorig");
249 
250  lcSql = " SELECT d.articulo, d.talla, d.color, s.serie, c.almorig as almacen, c.fecha, (CASE WHEN d.unidades<0 THEN 1.00 ELSE -1.00 END) AS unidades ";
251  lcSql += " FROM " + DB.SQLDatabase("GESTION", "c_albatr") + " c ";
252  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "d_albatr") + " d ON c.empresa = d.empresa AND c.numero = d.numero ";
253  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "traspser") + " s ON d.empresa = s.empresa AND d.numero = s.albaran AND d.linia = s.linea ";
254  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
255  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
256  lcSql += " ORDER BY c.almorig, d.articulo, d.talla, d.color, s.serie ";
257 
258  DB.SQLExec(lcSql, ref ldtTraspasSal);
259 
260  return ldtTraspasSal;
261  }
262 
263  private DataTable _StockSerie_Depcser(string tcWhere)
264  {
265  String lcSql = string.Empty;
266  DataTable ldtDepoCom1 = new DataTable();
267 
268  lcSql = " SELECT d.articulo, d.talla, d.color, s.serie, c.almacen, c.fecha, (CASE WHEN d.unidades>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
269  lcSql += " FROM " + DB.SQLDatabase("GESTION", "c_depcom") + " c ";
270  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "d_depcom") + " d ON c.empresa = d.empresa AND c.numero = d.numero ";
271  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "depcser") + " s ON d.empresa = s.empresa AND d.numero = s.albaran AND d.linia = s.linea ";
272  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
273  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
274  lcSql += " AND s.traspaso = 0 ";
275  lcSql += " ORDER BY c.almacen, d.articulo, d.talla, d.color, s.serie ";
276 
277  DB.SQLExec(lcSql, ref ldtDepoCom1);
278 
279  return ldtDepoCom1;
280  }
281 
282  private DataTable _StockSerie_Depcser_Trasp(string tcWhere, DateTime? tdFecha = null)
283  {
284  String lcSql = string.Empty;
285  DataTable ldtDepoComTrasp = new DataTable();
286 
287  lcSql = " SELECT d.articulo, d.talla, d.color, s.serie, c.almacen, c.fecha, (CASE WHEN b.doc_unid>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
288  lcSql += " FROM " + DB.SQLDatabase("GESTION", "c_depcom") + " c ";
289  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "d_depcom") + " d ON c.empresa = d.empresa AND c.numero = d.numero ";
290  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "d_albcom") + " b ON d.empresa = b.empresa AND d.numero = b.doc_num AND d.proveedor = b.proveedor AND d.linia = b.doc_lin AND b.doc = 3 ";
291  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "depcser") + " s ON d.empresa = s.empresa AND d.numero = s.albaran AND d.linia = s.linea ";
292  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
293  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere + (tdFecha != null ? " AND b.fecha > " + DB.SQLString(tdFecha) : "") + " ";
294  lcSql += " AND s.traspaso = 1 ";
295  lcSql += " ORDER BY c.almacen, d.articulo, d.talla, d.color, s.serie ";
296 
297  DB.SQLExec(lcSql, ref ldtDepoComTrasp);
298 
299  return ldtDepoComTrasp;
300  }
301 
302  private DataTable _StockSerie_Depser(string tcWhere, bool tlNegativo = true)
303  {
304  String lcSql = string.Empty;
305  DataTable ldtDepoVen1 = new DataTable();
306 
307  string lcNegativo = string.Empty;
308 
309  if (tlNegativo)
310  {
311  lcNegativo = " (CASE WHEN d.unidades<0 THEN 1.00 ELSE -1.00 END) AS unidades ";
312  }
313  else
314  {
315  lcNegativo = " (CASE WHEN d.unidades>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
316  }
317 
318  lcSql = " SELECT d.articulo, d.talla, d.color, s.serie, c.almacen, c.fecha, " + lcNegativo;
319  lcSql += " FROM " + DB.SQLDatabase("GESTION", "c_albdep") + " c ";
320  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "d_albdep") + " d ON c.empresa = d.empresa AND c.numero = d.numero AND c.letra = d.letra ";
321  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "depser") + " s ON d.empresa = s.empresa AND d.numero = s.deposito AND c.letra = d.letra AND d.linia = s.linea ";
322  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
323  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
324  lcSql += " AND s.traspaso = 0 ";
325  lcSql += " ORDER BY c.almacen, d.articulo, d.talla, d.color, s.serie ";
326 
327  DB.SQLExec(lcSql, ref ldtDepoVen1);
328 
329  return ldtDepoVen1;
330  }
331 
332  private DataTable _StockSerie_Depser_Trasp(string tcWhere, bool tlNegativo = true, DateTime? tdFecha = null)
333  {
334  String lcSql = string.Empty;
335  DataTable ldtDepoVenTrasp = new DataTable();
336 
337  string lcNegativo = string.Empty;
338 
339  if (tlNegativo)
340  {
341  lcNegativo = " (CASE WHEN b.doc_unid<0 THEN 1.00 ELSE -1.00 END) AS unidades ";
342  }
343  else
344  {
345  lcNegativo = " (CASE WHEN b.doc_unid>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
346  }
347 
348  lcSql = " SELECT d.articulo, d.talla, d.color, s.serie, c.almacen, c.fecha, " + lcNegativo;
349  lcSql += " FROM " + DB.SQLDatabase("GESTION", "c_albdep") + " c ";
350  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "d_albdep") + " d ON c.empresa = d.empresa AND c.numero = d.numero AND c.letra = d.letra ";
351  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "d_albven") + " b ON d.empresa = b.empresa AND d.numero+d.letra = b.doc_num AND d.linia = b.doc_lin AND b.doc = 2 ";
352  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "depser") + " s ON d.empresa = s.empresa AND d.numero = s.deposito AND c.letra = d.letra AND d.linia = s.linea ";
353  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
354  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere + (tdFecha != null ? " AND b.fecha > " + DB.SQLString(tdFecha) : "") + " ";
355  lcSql += " AND s.traspaso = 1 ";
356  lcSql += " ORDER BY c.almacen, d.articulo, d.talla, d.color, s.serie ";
357 
358  DB.SQLExec(lcSql, ref ldtDepoVenTrasp);
359 
360  return ldtDepoVenTrasp;
361  }
362 
363  private DataTable _StockSerie_Prodser(string tcWhere)
364  {
365  String lcSql = string.Empty;
366  DataTable ldtCprod = new DataTable();
367 
368  lcSql = " SELECT d.articulo, d.talla, d.color, s.serie, c.almacen, c.fecha, (CASE WHEN d.entrada>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
369  lcSql += " FROM " + DB.SQLDatabase("GESTION", "c_prod") + " c ";
370  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "c_prod") + " d ON c.empresa = d.empresa AND c.numero = d.numero ";
371  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "produserc") + " s ON d.empresa = s.empresa AND d.numero = s.albaran ";
372  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
373  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
374  lcSql += " ORDER BY c.almacen, d.articulo, d.talla, d.color, s.serie ";
375 
376  DB.SQLExec(lcSql, ref ldtCprod);
377 
378  return ldtCprod;
379  }
380 
381  private DataTable _StockSerie_Produser(string tcWhere)
382  {
383  String lcSql = string.Empty;
384  DataTable ldtDprod = new DataTable();
385 
386  lcSql = " SELECT d.articulo, d.talla, d.color, s.serie, c.almacen, c.fecha, (CASE WHEN d.salida<0 THEN 1.00 ELSE -1.00 END) AS unidades ";
387  lcSql += " FROM " + DB.SQLDatabase("GESTION", "c_prod") + " c ";
388  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "d_prod") + " d ON c.empresa = d.empresa AND c.numero = d.numero ";
389  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "produser") + " s ON d.empresa = s.empresa AND d.numero = s.albaran AND d.linea = s.linea ";
390  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
391  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
392  lcSql += " ORDER BY c.almacen, d.articulo, d.talla, d.color, s.serie ";
393 
394  DB.SQLExec(lcSql, ref ldtDprod);
395 
396  return ldtDprod;
397  }
398 
399  private DataTable _StockSerie_Transser(string tcWhere)
400  {
401  String lcSql = string.Empty;
402  DataTable ldtCtran = new DataTable();
403 
404  lcSql = " SELECT d.articulo, d.talla, d.color, s.serie, c.almacen, c.fecha, (CASE WHEN d.salida<0 THEN 1.00 ELSE -1.00 END) AS unidades ";
405  lcSql += " FROM " + DB.SQLDatabase("GESTION", "c_trans") + " c ";
406  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "c_trans") + " d ON c.empresa = d.empresa AND c.numero = d.numero ";
407  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "transser") + " s ON d.empresa = s.empresa AND d.numero = s.albaran ";
408  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
409  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
410  lcSql += " ORDER BY c.almacen, d.articulo, d.talla, d.color, s.serie ";
411 
412  DB.SQLExec(lcSql, ref ldtCtran);
413 
414  return ldtCtran;
415 
416  }
417 
418  private DataTable _StockSerie_Transer(string tcWhere)
419  {
420  String lcSql = string.Empty;
421  DataTable ldtDtran = new DataTable();
422 
423  lcSql = " SELECT d.articulo, d.talla, d.color, s.serie, c.almacen, c.fecha, (CASE WHEN d.entrada>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
424  lcSql += " FROM " + DB.SQLDatabase("GESTION", "c_trans") + " c ";
425  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "d_trans") + " d ON c.empresa = d.empresa AND c.numero = d.numero ";
426  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "transer") + " s ON d.empresa = s.empresa AND d.numero = s.albaran AND d.linea = s.linea ";
427  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
428  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
429  lcSql += " ORDER BY c.almacen, d.articulo, d.talla, d.color, s.serie ";
430 
431  DB.SQLExec(lcSql, ref ldtDtran);
432 
433  return ldtDtran;
434 
435  }
436 
437  private DataTable _StockSerie_Stockinser(string tcWhere)
438  {
439  string lcSql = string.Empty;
440  DataTable ldtInicial = new DataTable();
441 
442  //Task 168604 Volver a habilitar stock inicial con series
443  //lcSql = " SELECT d.articulo, d.talla, d.color, s.serie, c.almacen, c.fecha, (CASE WHEN d.unidades>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
444  //lcSql += " FROM " + DB.SQLDatabase("GESTION", "stockini") + " c ";
445  //lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "stockini") + " d ON c.empresa = d.empresa AND c.almacen = d.almacen AND c.fecha = d.fecha AND c.linia = d.linia AND c.articulo = d.articulo ";
446  //lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "stockinser") + " s ON d.almacen = s.almacen AND d.articulo = s.articulo ";
447  //lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
448  //lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
449  //lcSql += " AND c.fecha >= " + DB.SQLString(Convert.ToDateTime(EW_GLOBAL._GetVariable("wd_periodoini")));
450  //lcSql += " AND c.fecha <= " + DB.SQLString(Convert.ToDateTime(EW_GLOBAL._GetVariable("wd_periodofin")));
451  //lcSql += " ORDER BY c.almacen, d.articulo, d.talla, d.color, s.serie ";
452 
453  //Task 168604 Volver a habilitar stock inicial con series
455  lcSql = " SELECT d.articulo, d.talla, d.color, s.serie, c.almacen, c.fecha, (CASE WHEN s.baja = 0 THEN 1.00 ELSE -1.00 END) AS unidades " + Environment.NewLine; //Task 164754 => La serie de baja o no marca el signo
456  lcSql += " FROM " + DB.SQLDatabase("GESTION", "stockini") + " c " + Environment.NewLine;
457  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "stockini") + " d " +
458  "ON c.empresa = d.empresa AND c.almacen = d.almacen AND c.fecha = d.fecha AND c.linia = d.linia AND c.articulo = d.articulo " + Environment.NewLine;
459  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "inicialser") + " s " +
460  "ON d.almacen = s.almacen AND d.articulo = s.articulo and s.deposito = 0 " + Environment.NewLine; //Task 164754
461  //lcSql += " INNER JOIN " + DB.SQLDatabase("COMUNES", "compras") + " s ON d.almacen = s.almacen AND d.articulo = s.articulo AND s.baja = '' AND s.fecha < " + DB.SQLString(Convert.ToDateTime(EW_GLOBAL._GetVariable("wd_periodoini")));
462  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a " +
463  "ON d.articulo = a.codigo AND a.stock = 0 " + Environment.NewLine;
464  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
465  lcSql += " AND c.fecha >= " + DB.SQLString(Convert.ToDateTime(EW_GLOBAL._GetVariable("wd_periodoini")));
466  lcSql += " AND c.fecha <= " + DB.SQLString(Convert.ToDateTime(EW_GLOBAL._GetVariable("wd_periodofin"))) + Environment.NewLine;
467  lcSql += " ORDER BY c.almacen, d.articulo, d.talla, d.color, s.serie ";
468 
469 
470  DB.SQLExec(lcSql, ref ldtInicial);
471 
472  return ldtInicial;
473  }
474 
475  private DataTable _StockSerie_Regulariser(string tcWhere)
476  {
477  string lcSql = string.Empty;
478  DataTable ldtRegul1 = new DataTable();
479  DataTable ldtRegul2 = new DataTable();
480 
481  lcSql = " SELECT d.articulo, d.talla, d.color, s.serie, c.almacen, c.fecha, (CASE WHEN d.unidades>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
482  lcSql += " FROM " + DB.SQLDatabase("GESTION", "regulari") + " c ";
483  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "regulari") + " d ON c.empresa = d.empresa AND c.almacen = d.almacen AND c.fecha = d.fecha AND c.linia = d.linia AND c.documento = d.documento ";
484  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "regulariser") + " s ON d.empresa = s.empresa AND d.almacen = s.almacen AND d.fecha = s.fecha AND d.linia = s.linea AND d.documento = s.documento and s.baja = 0 ";
485  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
486  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
487  lcSql += " AND c.fecha >= " + DB.SQLString(Convert.ToDateTime(EW_GLOBAL._GetVariable("wd_periodoini")));
488  lcSql += " AND c.fecha <= " + DB.SQLString(Convert.ToDateTime(EW_GLOBAL._GetVariable("wd_periodofin")));
489  lcSql += " UNION ALL ";
490  lcSql += " SELECT d.articulo, d.talla, d.color, s.serie, c.almacen, c.fecha, 0.00 AS unidades ";
491  lcSql += " FROM " + DB.SQLDatabase("GESTION", "regulari") + " c ";
492  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "regulari") + " d ON c.empresa = d.empresa AND c.almacen = d.almacen AND c.fecha = d.fecha AND c.linia = d.linia AND c.documento = d.documento ";
493  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "regulariser") + " s ON d.empresa = s.empresa AND d.almacen = s.almacen AND d.fecha = s.fecha AND d.linia = s.linea AND d.documento = s.documento and s.baja = 1 ";
494  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
495  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
496  lcSql += " AND c.fecha >= " + DB.SQLString(Convert.ToDateTime(EW_GLOBAL._GetVariable("wd_periodoini")));
497  lcSql += " AND c.fecha <= " + DB.SQLString(Convert.ToDateTime(EW_GLOBAL._GetVariable("wd_periodofin")));
498 
499  DB.SQLExec(lcSql, ref ldtRegul1);
500 
501  lcSql = " SELECT MAX(d.articulo) as articulo, MAX(d.talla) as talla, MAX(d.color) as color, MAX(s.serie) as serie, c.almacen, MAX(c.fecha) as fecha ";
502  lcSql += " FROM " + DB.SQLDatabase("GESTION", "regulari") + " c ";
503  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "regulari") + " d ON c.empresa = d.empresa AND c.almacen = d.almacen AND c.fecha = d.fecha AND c.linia = d.linia AND c.documento = d.documento ";
504  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "regulariser") + " s ON d.empresa = s.empresa AND d.almacen = s.almacen AND d.fecha = s.fecha AND d.linia = s.linea AND d.documento = s.documento ";
505  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
506  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
507  lcSql += " GROUP BY c.almacen, d.articulo, d.talla, d.color, s.serie ";
508 
509  DB.SQLExec(lcSql, ref ldtRegul2);
510 
511 
512  var ldtRegul = (from a in ldtRegul1.AsEnumerable()
513  join b in ldtRegul2.AsEnumerable()
514  on new
515  {
516  almacen = a.Field<string>("almacen"),
517  articulo = a.Field<string>("articulo"),
518  talla = a.Field<string>("talla"),
519  color = a.Field<string>("color"),
520  serie = a.Field<string>("serie"),
521  fecha = a.Field<DateTime>("fecha")
522  }
523  equals new
524  {
525  almacen = b.Field<string>("almacen"),
526  articulo = b.Field<string>("articulo"),
527  talla = b.Field<string>("talla"),
528  color = b.Field<string>("color"),
529  serie = b.Field<string>("serie"),
530  fecha = b.Field<DateTime>("fecha")
531  }
532  group a by new
533  {
534  almacen = a.Field<string>("almacen"),
535  articulo = a.Field<string>("articulo"),
536  talla = a.Field<string>("talla"),
537  color = a.Field<string>("color"),
538  serie = a.Field<string>("serie")
539  }
540  into g
541  select new
542  {
543  g.Key.articulo,
544  g.Key.talla,
545  g.Key.color,
546  g.Key.serie,
547  g.Key.almacen,
548  fecha = g.Max(x => x.Field<DateTime>("fecha")),
549  unidades = g.Sum(x => x.Field<decimal>("unidades"))
550  }).__CopyToDataTable();
551 
552  return ldtRegul;
553  }
554 
555  private DataTable _StockSerie_Montajes(string tcWhere)
556  {
557  String lcSql = string.Empty;
558  DataTable ldtMontajes = new DataTable();
559 
560  // tinc que canviar el camp pel qual es filtra el magatzem
561  tcWhere = tcWhere.Replace("fecha", "montaje");
562 
563  lcSql = " SELECT c.articulo, c.talla, c.color, c.codigo as serie, c.almacen, c.montaje as fecha, 1.00 AS unidades ";
564  lcSql += " From " + DB.SQLDatabase("COMUNES", "modelo") + " c ";
565  lcSql += " INNER JOIN " + DB.SQLDatabase("COMUNES", "modelo") + " d ON c.codigo = d.codigo ";
566  lcSql += " INNER JOIN " + DB.SQLDatabase("COMUNES", "costemod") + " S ON S.modelo = C.codigo "; // AND C.tipo = 1
567  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " A On C.ARTICULO = A.CODIGO AND a.stock = 0 ";
568  lcSql += " WHERE " + EW_GLOBAL._Consolida("c.stockemp") + tcWhere;
569  lcSql += " AND c.montaje >= " + DB.SQLString(Convert.ToDateTime(EW_GLOBAL._GetVariable("wd_periodoini")));
570  lcSql += " AND c.montaje <= " + DB.SQLString(Convert.ToDateTime(EW_GLOBAL._GetVariable("wd_periodofin")));
571  lcSql += " ORDER BY c.almacen, c.articulo, c.talla, c.color, c.codigo ";
572 
573  DB.SQLExec(lcSql, ref ldtMontajes);
574 
575  return ldtMontajes;
576  }
577 
578  private void _StockSerie_Acumular(ref DataTable tdtDataTable1, DataTable tdtDataTable2)
579  {
580  bool llOrdenar = false; // PARTE 92477. Si no hay registros tenemos de crear al menos la estructura o puede que si no hay movimientos al final el resultado se null
581 
582  // Faig els unions de tots els cursors existents.
583  if (tdtDataTable2 != null && tdtDataTable2.Rows.Count > 0)
584  {
585  if (tdtDataTable1 == null)
586  {
587  tdtDataTable1 = tdtDataTable2;
588  llOrdenar = true;
589  }
590  else
591  {
592  if (tdtDataTable2.Rows.Count > 0)
593  {
594  DBfunctions.SQLUnionDatatable(ref tdtDataTable1, tdtDataTable2);
595  llOrdenar = true;
596  }
597  }
598 
599  if (llOrdenar)
600  {
601  //Ordenem per almacen, articulo, lote
602  tdtDataTable1.DefaultView.Sort = "almacen ASC, articulo ASC, serie ASC ";
603  tdtDataTable1 = tdtDataTable1.DefaultView.ToTable();
604  }
605  }
606  }
607 
608  private void _StockSerie_Ordenar(ref DataTable tdtDataTable1)
609  {
610 
611  // si no hi ha cap moviment, retorno tot l'inventari
612  if (tdtDataTable1 == null)
613  return;
614 
615  var ldtDades = (from item in tdtDataTable1.AsEnumerable()
616  group item by new
617  {
618  almacen = item.Field<string>("almacen"),
619  articulo = item.Field<string>("articulo"),
620  talla = item.Field<string>("talla"),
621  color = item.Field<string>("color"),
622  serie = item.Field<string>("serie")
623  }
624  into g
625  where g.Sum(x => x.Field<decimal>("unidades")) > 0
626  select new
627  {
628  g.Key.articulo,
629  g.Key.talla,
630  g.Key.color,
631  g.Key.serie,
632  g.Key.almacen,
633  fecha = g.Max(x => x.Field<DateTime>("fecha")),
634  unidades = g.Sum(x => x.Field<decimal>("unidades"))
635  }).__CopyToDataTable();
636 
637  tdtDataTable1 = ldtDades;
638  ldtDades = null;
639 
640  //Ordenem per articulo
641  tdtDataTable1.DefaultView.Sort = "almacen ASC, articulo ASC, serie ASC ";
642  tdtDataTable1 = tdtDataTable1.DefaultView.ToTable();
643  }
644 
645  private DataTable _StockSerie_Revisar_Stock(ref DataTable tdtDataTable1, DataTable tdtInventaris)
646  {
647  // si no hi ha cap moviment, retorno tot l'inventari
648  if (tdtDataTable1 == null)
649  return tdtDataTable1;
650 
651  var ldtDatosRevisados = (from a in tdtDataTable1.AsEnumerable()
652  join b in tdtInventaris.AsEnumerable()
653  on new
654  {
655  almacen = a.Field<string>("almacen"),
656  articulo = a.Field<string>("articulo"),
657  talla = a.Field<string>("talla"),
658  color = a.Field<string>("color"),
659  serie = a.Field<string>("serie")
660  }
661  equals new
662  {
663  almacen = b.Field<string>("almacen"),
664  articulo = b.Field<string>("articulo"),
665  talla = b.Field<string>("talla"),
666  color = b.Field<string>("color"),
667  serie = b.Field<string>("serie")
668  }
669  into leftJoin
670  from c in leftJoin.DefaultIfEmpty()
671  where (c != null ? a.Field<DateTime>("fecha") > c.Field<DateTime>("fecha") : true)
672  select new
673  {
674  articulo = a.Field<string>("articulo"),
675  talla = a.Field<string>("talla"),
676  color = a.Field<string>("color"),
677  serie = a.Field<string>("serie"),
678  almacen = a.Field<string>("almacen"),
679  fecha = a.Field<DateTime>("fecha"),
680  unidades = a.Field<decimal>("unidades")
681  }).__CopyToDataTable();
682 
683  // Omplo el dataTable
684  return ldtDatosRevisados;
685  }
686 
687  private DataTable _StockSerie_Unir_Inventarios(DataTable tdtInicial, DataTable tdtRegulari)
688  {
689  if (tdtInicial != null && tdtInicial.Rows.Count > 0 && tdtRegulari != null && tdtRegulari.Rows.Count == 0)
690  DBfunctions.SQLUnionDatatable(ref tdtRegulari, tdtInicial);
691 
692 
693  var ldtInventaris = (from a in tdtRegulari.AsEnumerable()
694  join b in tdtInicial.AsEnumerable()
695  on new
696  {
697  almacen = a.Field<string>("almacen"),
698  articulo = a.Field<string>("articulo"),
699  talla = a.Field<string>("talla"),
700  color = a.Field<string>("color"),
701  serie = a.Field<string>("serie")
702  }
703  equals new
704  {
705  almacen = b.Field<string>("almacen"),
706  articulo = b.Field<string>("articulo"),
707  talla = b.Field<string>("talla"),
708  color = b.Field<string>("color"),
709  serie = b.Field<string>("serie")
710  }
711  into leftJoin
712  from c in leftJoin.DefaultIfEmpty()
713  where (c != null ? a.Field<DateTime>("fecha") >= c.Field<DateTime>("fecha") : true)
714  select new
715  {
716  articulo = a.Field<string>("articulo"),
717  talla = a.Field<string>("talla"),
718  color = a.Field<string>("color"),
719  serie = a.Field<string>("serie"),
720  almacen = a.Field<string>("almacen"),
721  fecha = a.Field<DateTime>("fecha"),
722  unidades = a.Field<decimal>("unidades")
723  }).__CopyToDataTable();
724 
725  return ldtInventaris;
726  }
727 
735  public DataTable _InventaSeries_Comser(string tcWhere, string tcEjercicio, bool incluirOrigenDeposito = true)
736  {
737 
738  string lcSql = string.Empty;
739  DataTable ldtCompras = new DataTable();
740 
741  if (string.IsNullOrWhiteSpace(tcEjercicio))
742  tcEjercicio = Convert.ToString(EW_GLOBAL._GetVariable("wc_any"));
743 
744  string lcOrigenEnDeposito = string.Empty;
745  if (incluirOrigenDeposito)
746  lcOrigenEnDeposito = ", (CASE WHEN d.doc = 3 THEN Cast(1 as bit) ELSE Cast(0 as bit) END) AS origendeposito ";
747 
748  lcSql = " SELECT c.almacen, d.articulo, d.talla, d.color, s.serie, (CASE WHEN d.unidades>0 THEN 1.00 ELSE -1.00 END) AS unidades " + lcOrigenEnDeposito;
749  lcSql += " FROM " + DB.SQLDatabase("", "C_ALBCOM") + " c ";
750  lcSql += " INNER JOIN " + DB.SQLDatabase("", "D_ALBCOM") + " d ON c.empresa = d.empresa AND c.numero = d.numero AND c.proveedor = d.proveedor ";
751  lcSql += " INNER JOIN " + DB.SQLDatabase("", "COMSER") + " s ON d.empresa = s.empresa AND d.numero = s.albaran AND d.proveedor = s.proveedor AND d.linia = s.linea ";
752  lcSql += " INNER JOIN " + DB.SQLDatabase("", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
753  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
754 
755  DB.SQLExecEjer(lcSql, ref ldtCompras, new string[] { tcEjercicio });
756 
757  return ldtCompras;
758  }
759 
768  public DataTable _InventaSeries_Venser(string tcWhere, string tcEjercicio, bool tlNegativo = true, bool incluirOrigenDeposito = false)
769  {
770  string lcSql = string.Empty;
771  DataTable ldtVentas = new DataTable();
772 
773  if (string.IsNullOrWhiteSpace(tcEjercicio))
774  tcEjercicio = Convert.ToString(EW_GLOBAL._GetVariable("wc_any"));
775 
776  string lcNegativo = string.Empty;
777  string lcOrigenEnDeposito = string.Empty;
778 
779  if (tlNegativo)
780  {
781  lcNegativo = " , (CASE WHEN d.unidades<0 THEN 1.00 ELSE -1.00 END) AS unidades ";
782  }
783  else
784  {
785  lcNegativo = " , (CASE WHEN d.unidades>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
786  }
787 
788  if (incluirOrigenDeposito)
789  lcOrigenEnDeposito = ", (CASE WHEN d.doc = 2 THEN Cast(1 as bit) ELSE Cast(0 as bit) END) AS origendeposito ";
790 
791  lcSql = " SELECT c.almacen, d.articulo, d.talla, d.color, s.serie" + lcOrigenEnDeposito + lcNegativo;
792  lcSql += " FROM " + DB.SQLDatabase("", "C_ALBVEN") + " c ";
793  lcSql += " INNER JOIN " + DB.SQLDatabase("", "D_ALBVEN") + " d ON c.empresa = d.empresa AND c.numero = d.numero AND c.letra = d.letra ";
794  lcSql += " INNER JOIN " + DB.SQLDatabase("", "VENSER") + " s ON d.empresa = s.empresa AND d.numero = s.albaran AND c.letra = s.letra AND d.linia = s.linea ";
795  lcSql += " INNER JOIN " + DB.SQLDatabase("", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
796  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
797 
798  DB.SQLExecEjer(lcSql, ref ldtVentas, new string[] { tcEjercicio } );
799 
800  return ldtVentas;
801  }
802 
808  public DataTable _InventaSeries_Montajes(string tcWhere)
809  {
810  String lcSql = string.Empty;
811  string lcFiltro = string.Empty;
812  DataTable ldtMontajes = new DataTable();
813 
814  // tinc que canviar el camp pel qual es filtra el magatzem
815  lcFiltro = tcWhere.Replace("c.fecha", "e.montaje").Replace("c.empresa", "e.stockemp").Replace("d.articulo", "c.articulo");
816  lcFiltro = lcFiltro.Replace("d.talla", "''").Replace("d.color", "''");
817 
818  lcSql = " (SELECT e.almacen, c.articulo, '' AS talla, '' AS color, c.serie, (CASE WHEN c.unidades < 0 THEN 1.00 ELSE - 1.00 END) AS unidades ";
819  lcSql += " FROM " + DB.SQLDatabase("COMUNES", "modelo") + " e ";
820  lcSql += " INNER JOIN " + DB.SQLDatabase("COMUNES", "costemod") + " c ON e.codigo = c.modelo "; // AND c.tipo = 1
821  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a ON c.articulo = a.codigo AND a.stock = 0 ";
822  lcSql += " WHERE " + _EmpStock("e.stockemp") + lcFiltro + " ) ";
823 
824  lcSql += " UNION ALL ";
825 
826  lcFiltro = tcWhere.Replace("c.fecha", "e.montaje").Replace("c.empresa", "e.stockemp").Replace("d.articulo", "e.articulo");
827  lcFiltro = lcFiltro.Replace("d.talla", "e.talla").Replace("d.color", "e.color").Replace("c.modelo", "e.codigo");
828 
829  lcSql += " (SELECT DISTINCT e.almacen, e.articulo, e.talla, e.color, e.codigo as serie, 1.00 AS unidades ";
830  lcSql += " FROM " + DB.SQLDatabase("COMUNES", "modelo") + " e ";
831  lcSql += " INNER JOIN " + DB.SQLDatabase("GESTION", "ARTICULO") + " a ON e.articulo = a.codigo AND a.stock = 0 ";
832  lcSql += " WHERE " + _EmpStock("e.stockemp") + lcFiltro + " ) ";
833 
834  DB.SQLExec(lcSql, ref ldtMontajes);
835 
836  ldtMontajes.DefaultView.Sort = "almacen ASC, articulo ASC, talla ASC, color ASC, serie ASC ";
837  ldtMontajes = ldtMontajes.DefaultView.ToTable();
838 
839  return ldtMontajes;
840  }
841 
849  public DataTable _InventaSeries_Reguser(string tcWhere, string tcEjercicio, bool tlNegativo = true)
850  {
851  String lcSql = string.Empty;
852  DataTable ldtAlbaregu = new DataTable();
853 
854  if (string.IsNullOrWhiteSpace(tcEjercicio))
855  tcEjercicio = Convert.ToString(EW_GLOBAL._GetVariable("wc_any"));
856 
857  string lcNegativo = string.Empty;
858 
859  if (tlNegativo)
860  {
861  lcNegativo = " , (CASE WHEN d.unidades<0 THEN 1.00 ELSE -1.00 END) AS unidades ";
862  }
863  else
864  {
865  lcNegativo = " , (CASE WHEN d.unidades>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
866  }
867 
868  lcSql = " SELECT c.almacen, d.articulo, d.talla, d.color, s.serie " + lcNegativo;
869  lcSql += " FROM " + DB.SQLDatabase("", "C_ALBARE") + " c ";
870  lcSql += " INNER JOIN " + DB.SQLDatabase("", "D_ALBARE") + " d ON c.empresa = d.empresa AND c.numero = d.numero ";
871  lcSql += " INNER JOIN " + DB.SQLDatabase("", "REGUSER") + " s ON d.empresa = s.empresa AND d.numero = s.albaran AND d.linia = s.linea ";
872  lcSql += " INNER JOIN " + DB.SQLDatabase("", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
873  lcSql += " WHERE " + this._EmpStock("c.Empresa") + tcWhere;
874 
875  DB.SQLExecEjer(lcSql, ref ldtAlbaregu, new string[] { tcEjercicio });
876 
877  return ldtAlbaregu;
878  }
879 
886  public DataTable _InventaSeries_Traspser_Entradas(string tcWhere, string tcEjercicio)
887  {
888  String lcSql = string.Empty;
889  DataTable ldtTraspasEnt = new DataTable();
890 
891  if (string.IsNullOrWhiteSpace(tcEjercicio))
892  tcEjercicio = Convert.ToString(EW_GLOBAL._GetVariable("wc_any"));
893 
894  // tinc que canviar el camp pel qual es filtra el magatzem
895  tcWhere = tcWhere.Replace("almacen", "almdest");
896 
897 
898  lcSql = " SELECT c.almdest as almacen, d.articulo, d.talla, d.color, s.serie, (CASE WHEN d.unidades>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
899  lcSql += " FROM " + DB.SQLDatabase("", "C_ALBATR") + " c ";
900  lcSql += " INNER JOIN " + DB.SQLDatabase("", "D_ALBATR") + " d ON c.empresa = d.empresa AND c.numero = d.numero ";
901  lcSql += " INNER JOIN " + DB.SQLDatabase("", "TRASPSER") + " s ON d.empresa = s.empresa AND d.numero = s.albaran AND d.linia = s.linea ";
902  lcSql += " INNER JOIN " + DB.SQLDatabase("", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
903  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
904 
905  DB.SQLExecEjer(lcSql, ref ldtTraspasEnt, new string[] { tcEjercicio });
906 
907  return ldtTraspasEnt;
908  }
909 
917  public DataTable _InventaSeries_Traspser_Salidas(string tcWhere, string tcEjercicio, bool tlNegativo = true)
918  {
919  string lcSql = string.Empty;
920  DataTable ldtTraspasSal = new DataTable();
921 
922  if (string.IsNullOrWhiteSpace(tcEjercicio))
923  tcEjercicio = Convert.ToString(EW_GLOBAL._GetVariable("wc_any"));
924 
925  // tinc que canviar el camp pel qual es filtra el magatzem
926  tcWhere = tcWhere.Replace("almacen", "almorig");
927 
928  string lcNegativo = string.Empty;
929 
930  if (tlNegativo)
931  {
932  lcNegativo = " , (CASE WHEN d.unidades<0 THEN 1.00 ELSE -1.00 END) AS unidades ";
933  }
934  else
935  {
936  lcNegativo = " , (CASE WHEN d.unidades>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
937  }
938 
939  lcSql = " SELECT c.almorig as almacen, d.articulo, d.talla, d.color, s.serie " + lcNegativo;
940  lcSql += " FROM " + DB.SQLDatabase("", "C_ALBATR") + " c ";
941  lcSql += " INNER JOIN " + DB.SQLDatabase("", "D_ALBATR") + " d ON c.empresa = d.empresa AND c.numero = d.numero ";
942  lcSql += " INNER JOIN " + DB.SQLDatabase("", "TRASPSER") + " s ON d.empresa = s.empresa AND d.numero = s.albaran AND d.linia = s.linea ";
943  lcSql += " INNER JOIN " + DB.SQLDatabase("", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
944  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
945 
946  DB.SQLExecEjer(lcSql, ref ldtTraspasSal, new string[] { tcEjercicio });
947 
948  return ldtTraspasSal;
949  }
950 
957  public DataTable _InventaSeries_Depcser(string tcWhere, string tcEjercicio)
958  {
959  string lcSql = string.Empty;
960  DataTable ldtDepoCom = new DataTable();
961 
962  if (string.IsNullOrWhiteSpace(tcEjercicio))
963  tcEjercicio = Convert.ToString(EW_GLOBAL._GetVariable("wc_any"));
964 
965  lcSql = " SELECT c.almacen, d.articulo, d.talla, d.color, s.serie, (CASE WHEN d.unidades>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
966  lcSql += " FROM " + DB.SQLDatabase("", "C_DEPCOM") + " c ";
967  lcSql += " INNER JOIN " + DB.SQLDatabase("", "D_DEPCOM") + " d ON c.empresa = d.empresa AND c.numero = d.numero ";
968  lcSql += " INNER JOIN " + DB.SQLDatabase("", "DEPCSER") + " s ON d.empresa = s.empresa AND d.numero = s.albaran AND d.linia = s.linea ";
969  lcSql += " INNER JOIN " + DB.SQLDatabase("", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
970  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
971  //lcSql += " AND s.traspaso = 0 ";
972 
973  DB.SQLExecEjer(lcSql, ref ldtDepoCom, new string[] { tcEjercicio });
974 
975  return ldtDepoCom;
976  }
977 
985  private DataTable _InventaSeries_Depcser_Trasp(string tcWhere, string tcEjercicio, DateTime? tdFecha = null)
986  {
987  string lcSql = string.Empty;
988  DataTable ldtDepoComTrasp = new DataTable();
989 
990  if (string.IsNullOrWhiteSpace(tcEjercicio))
991  tcEjercicio = Convert.ToString(EW_GLOBAL._GetVariable("wc_any"));
992 
993  lcSql = " SELECT d.articulo, d.talla, d.color, s.serie, c.almacen, c.fecha, (CASE WHEN b.doc_unid>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
994  lcSql += " FROM " + DB.SQLDatabase("", "c_depcom") + " c ";
995  lcSql += " INNER JOIN " + DB.SQLDatabase("", "d_depcom") + " d ON c.empresa = d.empresa AND c.numero = d.numero ";
996  lcSql += " INNER JOIN " + DB.SQLDatabase("", "d_albcom") + " b ON d.empresa = b.empresa AND d.numero = b.doc_num AND d.proveedor = b.proveedor AND d.linia = b.doc_lin AND b.doc = 3 ";
997  lcSql += " INNER JOIN " + DB.SQLDatabase("", "depcser") + " s ON d.empresa = s.empresa AND d.numero = s.albaran AND d.linia = s.linea ";
998  lcSql += " INNER JOIN " + DB.SQLDatabase("", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
999  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere + (tdFecha != null ? " AND b.fecha > " + DB.SQLString(tdFecha) : "") + " ";
1000  lcSql += " AND s.traspaso = 1 ";
1001  lcSql += " ORDER BY c.almacen, d.articulo, d.talla, d.color, s.serie ";
1002 
1003  DB.SQLExecEjer(lcSql, ref ldtDepoComTrasp, new string[] { tcEjercicio });
1004 
1005  return ldtDepoComTrasp;
1006  }
1007 
1015  public DataTable _InventaSeries_Depser(string tcWhere, string tcEjercicio, bool tlNegativo = true)
1016  {
1017  string lcSql = string.Empty;
1018  DataTable ldtDepoVen = new DataTable();
1019 
1020  if (string.IsNullOrWhiteSpace(tcEjercicio))
1021  tcEjercicio = Convert.ToString(EW_GLOBAL._GetVariable("wc_any"));
1022 
1023  string lcNegativo = string.Empty;
1024 
1025  if (tlNegativo)
1026  {
1027  lcNegativo = " , (CASE WHEN d.unidades<0 THEN 1.00 ELSE -1.00 END) AS unidades ";
1028  }
1029  else
1030  {
1031  lcNegativo = " , (CASE WHEN d.unidades>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
1032  }
1033 
1034  lcSql = " SELECT c.almacen, d.articulo, d.talla, d.color, s.serie " + lcNegativo;
1035  lcSql += " FROM " + DB.SQLDatabase("", "C_ALBDEP") + " c ";
1036  lcSql += " INNER JOIN " + DB.SQLDatabase("", "D_ALBDEP") + " d ON c.empresa = d.empresa AND c.numero = d.numero AND c.letra = d.letra ";
1037  lcSql += " INNER JOIN " + DB.SQLDatabase("", "DEPSER") + " s ON d.empresa = s.empresa AND d.numero = s.deposito AND c.letra = d.letra AND d.linia = s.linea ";
1038  lcSql += " INNER JOIN " + DB.SQLDatabase("", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
1039  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
1040  //lcSql += " AND s.traspaso = 0 ";
1041 
1042  DB.SQLExecEjer(lcSql, ref ldtDepoVen, new string[] { tcEjercicio });
1043 
1044  return ldtDepoVen;
1045  }
1046 
1047  private DataTable _InventaSeries_Depser_Trasp(string tcWhere, string tcEjercicio, bool tlNegativo = true, DateTime? tdFecha = null)
1048  {
1049  string lcSql = string.Empty;
1050  DataTable ldtDepoVenTrasp = new DataTable();
1051 
1052  if (string.IsNullOrWhiteSpace(tcEjercicio))
1053  tcEjercicio = Convert.ToString(EW_GLOBAL._GetVariable("wc_any"));
1054 
1055  string lcNegativo = string.Empty;
1056 
1057  if (tlNegativo)
1058  {
1059  lcNegativo = " (CASE WHEN b.doc_unid<0 THEN 1.00 ELSE -1.00 END) AS unidades ";
1060  }
1061  else
1062  {
1063  lcNegativo = " (CASE WHEN b.doc_unid>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
1064  }
1065 
1066  lcSql = " SELECT d.articulo, d.talla, d.color, s.serie, c.almacen, c.fecha, " + lcNegativo;
1067  lcSql += " FROM " + DB.SQLDatabase("", "c_albdep") + " c ";
1068  lcSql += " INNER JOIN " + DB.SQLDatabase("", "d_albdep") + " d ON c.empresa = d.empresa AND c.numero = d.numero AND c.letra = d.letra ";
1069  lcSql += " INNER JOIN " + DB.SQLDatabase("", "d_albven") + " b ON d.empresa = b.empresa AND d.numero+d.letra = b.doc_num AND d.linia = b.doc_lin AND b.doc = 2 ";
1070  lcSql += " INNER JOIN " + DB.SQLDatabase("", "depser") + " s ON d.empresa = s.empresa AND d.numero = s.deposito AND c.letra = d.letra AND d.linia = s.linea ";
1071  lcSql += " INNER JOIN " + DB.SQLDatabase("", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
1072  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere + (tdFecha != null ? " AND b.fecha > " + DB.SQLString(tdFecha) : "") + " ";
1073  lcSql += " AND s.traspaso = 1 ";
1074  lcSql += " ORDER BY c.almacen, d.articulo, d.talla, d.color, s.serie ";
1075 
1076  DB.SQLExecEjer(lcSql, ref ldtDepoVenTrasp, new string[] { tcEjercicio });
1077 
1078  return ldtDepoVenTrasp;
1079  }
1080 
1087  public DataTable _InventaSeries_Prodser(string tcWhere, string tcEjercicio)
1088  {
1089  string lcSql = string.Empty;
1090  DataTable ldtCprod = new DataTable();
1091 
1092  if (string.IsNullOrWhiteSpace(tcEjercicio))
1093  tcEjercicio = Convert.ToString(EW_GLOBAL._GetVariable("wc_any"));
1094 
1095  tcWhere += " AND c.acabado = 1 ";
1096 
1097  lcSql = " SELECT c.almacen, d.articulo, d.talla, d.color, s.serie, (CASE WHEN d.entrada>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
1098  lcSql += " FROM " + DB.SQLDatabase("", "C_PROD") + " c ";
1099  lcSql += " INNER JOIN " + DB.SQLDatabase("", "C_PROD") + " d ON c.empresa = d.empresa AND c.numero = d.numero ";
1100  lcSql += " INNER JOIN " + DB.SQLDatabase("", "PRODUSERC") + " s ON d.empresa = s.empresa AND d.numero = s.albaran ";
1101  lcSql += " INNER JOIN " + DB.SQLDatabase("", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
1102  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
1103 
1104  DB.SQLExecEjer(lcSql, ref ldtCprod, new string[] { tcEjercicio });
1105 
1106  return ldtCprod;
1107  }
1108 
1116  public DataTable _InventaSeries_Produser(string tcWhere, string tcEjercicio, bool tlNegativo = true)
1117  {
1118  string lcSql = string.Empty;
1119  DataTable ldtDprod = new DataTable();
1120 
1121  if (string.IsNullOrWhiteSpace(tcEjercicio))
1122  tcEjercicio = Convert.ToString(EW_GLOBAL._GetVariable("wc_any"));
1123 
1124  tcWhere += " AND c.acabado = 1 ";
1125 
1126  string lcNegativo = string.Empty;
1127 
1128  if (tlNegativo)
1129  {
1130  lcNegativo = " , (CASE WHEN d.salida<0 THEN 1.00 ELSE -1.00 END) AS unidades ";
1131  }
1132  else
1133  {
1134  lcNegativo = " , (CASE WHEN d.salida>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
1135  }
1136 
1137  lcSql = " SELECT c.almacen, d.articulo, d.talla, d.color, s.serie " + lcNegativo;
1138  lcSql += " FROM " + DB.SQLDatabase("", "C_PROD") + " c ";
1139  lcSql += " INNER JOIN " + DB.SQLDatabase("", "D_PROD") + " d ON c.empresa = d.empresa AND c.numero = d.numero ";
1140  lcSql += " INNER JOIN " + DB.SQLDatabase("", "PRODUSER") + " s ON d.empresa = s.empresa AND d.numero = s.albaran AND d.linea = s.linea ";
1141  lcSql += " INNER JOIN " + DB.SQLDatabase("", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
1142  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
1143 
1144  DB.SQLExecEjer(lcSql, ref ldtDprod, new string[] { tcEjercicio });
1145 
1146  return ldtDprod;
1147  }
1148 
1156  public DataTable _InventaSeries_Transser(string tcWhere, string tcEjercicio, bool tlNegativo = true)
1157  {
1158  String lcSql = string.Empty;
1159  DataTable ldtCtran = new DataTable();
1160 
1161  if (string.IsNullOrWhiteSpace(tcEjercicio))
1162  tcEjercicio = Convert.ToString(EW_GLOBAL._GetVariable("wc_any"));
1163 
1164  string lcNegativo = string.Empty;
1165 
1166  if (tlNegativo)
1167  {
1168  lcNegativo = " , (CASE WHEN d.salida<0 THEN 1.00 ELSE -1.00 END) AS unidades ";
1169  }
1170  else
1171  {
1172  lcNegativo = " , (CASE WHEN d.salida>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
1173  }
1174 
1175  lcSql = " SELECT c.almacen, d.articulo, d.talla, d.color, s.serie " + lcNegativo;
1176  lcSql += " FROM " + DB.SQLDatabase("", "C_TRANS") + " c ";
1177  lcSql += " INNER JOIN " + DB.SQLDatabase("", "C_TRANS") + " d ON c.empresa = d.empresa AND c.numero = d.numero ";
1178  lcSql += " INNER JOIN " + DB.SQLDatabase("", "TRANSSER") + " s ON d.empresa = s.empresa AND d.numero = s.albaran ";
1179  lcSql += " INNER JOIN " + DB.SQLDatabase("", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
1180  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
1181 
1182  DB.SQLExecEjer(lcSql, ref ldtCtran, new string[] { tcEjercicio });
1183 
1184  return ldtCtran;
1185  }
1186 
1194  public DataTable _InventaSeries_Transer(string tcWhere, string tcEjercicio, bool tlNegativo = true)
1195  {
1196  string lcSql = string.Empty;
1197  DataTable ldtDtran = new DataTable();
1198 
1199  if (string.IsNullOrWhiteSpace(tcEjercicio))
1200  tcEjercicio = Convert.ToString(EW_GLOBAL._GetVariable("wc_any"));
1201 
1202  lcSql = " SELECT c.almacen, d.articulo, d.talla, d.color, s.serie, (CASE WHEN d.entrada>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
1203  lcSql += " FROM " + DB.SQLDatabase("", "C_TRANS") + " c ";
1204  lcSql += " INNER JOIN " + DB.SQLDatabase("", "D_TRANS") + " d ON c.empresa = d.empresa AND c.numero = d.numero ";
1205  lcSql += " INNER JOIN " + DB.SQLDatabase("", "TRANSER") + " s ON d.empresa = s.empresa AND d.numero = s.albaran AND d.linea = s.linea ";
1206  lcSql += " INNER JOIN " + DB.SQLDatabase("", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
1207  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
1208 
1209  DB.SQLExecEjer(lcSql, ref ldtDtran, new string[] { tcEjercicio });
1210 
1211  return ldtDtran;
1212 
1213  }
1214 
1221  public DataTable _InventaSeries_Inicialser(string tcWhere, string tcEjercicio)
1222  {
1223  string lcSql = string.Empty;
1224  DataTable ldtInicial = new DataTable();
1225 
1226  if (string.IsNullOrWhiteSpace(tcEjercicio))
1227  tcEjercicio = Convert.ToString(EW_GLOBAL._GetVariable("wc_any"));
1228 
1229  lcSql = " SELECT c.almacen, d.articulo, d.talla, d.color, s.serie, (CASE WHEN s.baja = 0 THEN 1.00 ELSE -1.00 END) AS unidades "; //Task 164754 => El detalle de series guarda si es alta o baja
1230  lcSql += " FROM " + DB.SQLDatabase("", "STOCKINI") + " c ";
1231  lcSql += " INNER JOIN " + DB.SQLDatabase("", "STOCKINI") + " d ON c.empresa = d.empresa AND c.almacen = d.almacen AND c.fecha = d.fecha AND c.linia = d.linia AND c.articulo = d.articulo ";
1232  lcSql += " INNER JOIN " + DB.SQLDatabase("", "INICIALSER") + " s ON d.almacen = s.almacen AND d.articulo = s.articulo AND s.baja = 0 "; //Task 164754
1233  lcSql += " INNER JOIN " + DB.SQLDatabase("", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
1234  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
1235 
1236  DB.SQLExecEjer(lcSql, ref ldtInicial, new string[] { tcEjercicio });
1237 
1238  return ldtInicial;
1239  }
1240 
1247  public DataTable _InventaSeries_Regulariser(string tcWhere, string tcEjercicio)
1248  {
1249  String lcSql = string.Empty;
1250  DataTable ldtRegul = new DataTable();
1251 
1252  if (string.IsNullOrWhiteSpace(tcEjercicio))
1253  tcEjercicio = Convert.ToString(EW_GLOBAL._GetVariable("wc_any"));
1254 
1255  lcSql = " SELECT c.almacen, d.articulo, d.talla, d.color, s.serie, (CASE WHEN d.unidades>0 THEN 1.00 ELSE -1.00 END) AS unidades ";
1256  lcSql += " FROM " + DB.SQLDatabase("", "REGULARI") + " c ";
1257  lcSql += " INNER JOIN " + DB.SQLDatabase("", "REGULARI") + " d ON c.empresa = d.empresa AND c.almacen = d.almacen AND c.fecha = d.fecha AND c.linia = d.linia AND c.documento = d.documento ";
1258  lcSql += " INNER JOIN " + DB.SQLDatabase("", "REGULARISER") + " s ON d.empresa = s.empresa AND d.almacen = s.almacen AND d.fecha = s.fecha AND d.linia = s.linea AND d.documento = s.documento AND s.baja = 0 ";
1259  lcSql += " INNER JOIN " + DB.SQLDatabase("", "ARTICULO") + " a ON d.articulo = a.codigo AND a.stock = 0 ";
1260  lcSql += " WHERE " + _EmpStock("c.Empresa") + tcWhere;
1261 
1262  DB.SQLExecEjer(lcSql, ref ldtRegul, new string[] { tcEjercicio });
1263 
1264  return ldtRegul;
1265  }
1266 
1267 
1273  public string _EmpStock(string tcCampo)
1274  {
1275  string lcResul = string.Empty;
1276  int lnRegs = 0;
1277  DataTable ldtResult = new DataTable();
1278 
1279  if (Convert.ToBoolean(EW_GLOBAL._GetVariable("wl_normal")))
1280  {
1281  if (string.IsNullOrWhiteSpace(Convert.ToString(EW_GLOBAL._GetVariable("wc_empstock"))))
1282  DB.SQLExec("select empresa from " + DB.SQLDatabase("GESTION", "factucnf") + " where emp_stock='" + Convert.ToString(EW_GLOBAL._GetVariable("wc_EmpStockConsolida")) + "'", ref ldtResult);
1283  else
1284  DB.SQLExec("select empresa from " + DB.SQLDatabase("GESTION", "factucnf") + " where emp_stock='" + Convert.ToString(EW_GLOBAL._GetVariable("wc_EmpStock")) + "'", ref ldtResult);
1285 
1286  if (ldtResult != null)
1287  {
1288  lnRegs = ldtResult.Rows.Count;
1289  if (lnRegs == 1)
1290  {
1291  lcResul = tcCampo + "=" + DB.SQLString(ldtResult.Rows[0]["empresa"]);
1292  }
1293  else if (lnRegs == 0)
1294  {
1295  lcResul = tcCampo + "=" + DB.SQLString(Convert.ToString(EW_GLOBAL._GetVariable("wc_EmpStock")));
1296  }
1297  else if (lnRegs > 1)
1298  {
1299  lcResul = "(";
1300  foreach (DataRow ldr in ldtResult.Rows)
1301  {
1302  lcResul += " " + tcCampo + "=" + DB.SQLString(ldr["empresa"]) + " OR";
1303  }
1304  lcResul = lcResul.Substring(0, lcResul.Length - 2) + ")";
1305  }
1306  }
1307  }
1308  else
1309  {
1310  lcResul = EW_GLOBAL._Consolida(tcCampo);
1311  }
1312  return lcResul;
1313  }
1314 
1315  #endregion Stocks series
1316  }
1317 }
DataTable _InventaSeries_Venser(string tcWhere, string tcEjercicio, bool tlNegativo=true, bool incluirOrigenDeposito=false)
Nos devuelve las series de los albaranes de venta que cumplen la condición
string _EmpStock(string tcCampo)
Sacada del modulo de LOTES : stocklote.emp_stock
DataTable _InventaSeries_Reguser(string tcWhere, string tcEjercicio, bool tlNegativo=true)
Nos devuelve las series de los albaranes de regularización que cumplen la condición ...
DataTable _StockSerie(string tcWhere, Stock.TipoValoracion teValoracion=Stock.TipoValoracion.IncluyendoDepositos, DateTime? tdFecha=null)
Devuelve un datatable con todos los movimientos de los lotes, en funció del parametro ...
Calcula l&#39;stock de tots els articles, segons els filtres Pot calcular - stock normal + PMS i PMC ...
Definition: clsStocks.cs:33
TipoValoracion
Enumeració dels diferents tipos de valoración
Definition: clsStocks.cs:331
DataTable _InventaSeries_Transser(string tcWhere, string tcEjercicio, bool tlNegativo=true)
Nos devuelve las series de la cabecera de las transformaciones que cumplen la condición ...
DataTable _InventaSeries_Transer(string tcWhere, string tcEjercicio, bool tlNegativo=true)
Nos devuelve las series del detalle de las transformaciones que cumplen la condición ...
DataTable _InventaSeries_Inicialser(string tcWhere, string tcEjercicio)
Nos devuelve las series de los inventarios iniciales que cumplen la condición
DataTable _InventaSeries_Comser(string tcWhere, string tcEjercicio, bool incluirOrigenDeposito=true)
Nos devuelve las series de los albaranes de compra que cumplen la condición
DataTable _InventaSeries_Prodser(string tcWhere, string tcEjercicio)
Nos devuelve las series de la cabecera de las producciones que cumplen la condición ...
DataTable _InventaSeries_Regulariser(string tcWhere, string tcEjercicio)
Nos devuelve las series de los inventarios de regularización que cumplen la condición ...
Código stocks para series
DataTable _InventaSeries_Depser(string tcWhere, string tcEjercicio, bool tlNegativo=true)
Nos devuelve las series de los depósitos de venta que cumplen la condición
DataTable _InventaSeries_Montajes(string tcWhere)
Nos devuelve las series de los montajes que cumplen la condición
DataTable _InventaSeries_Traspser_Entradas(string tcWhere, string tcEjercicio)
Nos devuelve las series de los albaranes de traspaso que cumplen la condición
DataTable _InventaSeries_Produser(string tcWhere, string tcEjercicio, bool tlNegativo=true)
Nos devuelve las series del detalle de las producciones que cumplen la condición
DataTable _InventaSeries_Traspser_Salidas(string tcWhere, string tcEjercicio, bool tlNegativo=true)
Nos devuelve las series de los albaranes de traspaso que cumplen la condición
DataTable _InventaSeries_Depcser(string tcWhere, string tcEjercicio)
Nos devuelve las series de los depósitos de compra que cumplen la condición