minor update
Aggiunta di una TermClass.cs in versione embrionale git-svn-id: https://keyhammer.ath.cx/svn/GMW/trunk@151 365432ac-a1b5-4ffd-bb28-6d3099d32164
This commit is contained in:
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -82,6 +82,7 @@
|
||||
<Compile Include="reportExporter.cs" />
|
||||
<Compile Include="reportPrinter.cs" />
|
||||
<Compile Include="selData.cs" />
|
||||
<Compile Include="TermClass.cs" />
|
||||
<Compile Include="Type\ArtInProd.cs" />
|
||||
<Compile Include="Type\Bilancia.cs" />
|
||||
<Compile Include="Type\BlockMap.cs" />
|
||||
|
||||
@@ -14,7 +14,6 @@ namespace GMW_data
|
||||
#region area table adapters
|
||||
|
||||
// variabile di tipo table adapter
|
||||
|
||||
public DS_magazzinoTableAdapters.AnagMagTableAdapter taAnagMag;
|
||||
public DS_magazzinoTableAdapters.BlocchiTableAdapter taBlocchi;
|
||||
public DS_magazzinoTableAdapters.CelleTableAdapter taCelle;
|
||||
|
||||
@@ -0,0 +1,869 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using SteamWare;
|
||||
|
||||
namespace GMW_data
|
||||
{
|
||||
/// <summary>
|
||||
/// classe gestione operazioni con terminalino
|
||||
/// </summary>
|
||||
public class TermClass
|
||||
{
|
||||
#region area table adapters
|
||||
|
||||
// variabile di tipo table adapter
|
||||
#if false
|
||||
public DS_magazzinoTableAdapters.AnagMagTableAdapter taAnagMag;
|
||||
public DS_magazzinoTableAdapters.BlocchiTableAdapter taBlocchi;
|
||||
public DS_magazzinoTableAdapters.CelleTableAdapter taCelle;
|
||||
public DS_magazzinoTableAdapters.TipoCellaTableAdapter taTipoCella;
|
||||
public DS_magazzinoTableAdapters.ElencoCartelliniTableAdapter taCartellini;
|
||||
public DS_magazzinoTableAdapters.PosizioneUdcCorrenteTableAdapter taPosUdcCorr;
|
||||
public DS_magazzinoTableAdapters.PosizioneUdcStoricoTableAdapter taPosUdcStorico;
|
||||
public DS_magazzinoTableAdapters.V_MagazziniOverviewTableAdapter taMagOverw;
|
||||
public DS_magazzinoTableAdapters.V_DettMagPartTableAdapter taDettMagPart;
|
||||
public DS_magazzinoTableAdapters.v_UdcDetailTableAdapter taDettUDC;
|
||||
public DS_magazzinoTableAdapters.ElencoListePrelievoTableAdapter taElencoListePrelievo;
|
||||
public DS_magazzinoTableAdapters.ElencoCartelliniTableAdapter taElencoCartellini;
|
||||
public DS_magazzinoTableAdapters.RigheListePrelievoTableAdapter taRigheListePrelievo;
|
||||
public DS_magazzinoTableAdapters.TipoListaPrelievoTableAdapter taTipoListaPrelievo;
|
||||
public DS_magazzinoTableAdapters.V_ParticolariOverviewTableAdapter taVParticolariOverwiew;
|
||||
public DS_magazzinoTableAdapters.v_particolariEsponenteFiguraTableAdapter taPartExpFig;
|
||||
#endif
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// init dei table adapters
|
||||
/// </summary>
|
||||
protected void initTA()
|
||||
{
|
||||
// istanzio oggetto
|
||||
#if false
|
||||
taAnagMag = new GMW_data.DS_magazzinoTableAdapters.AnagMagTableAdapter();
|
||||
taBlocchi = new GMW_data.DS_magazzinoTableAdapters.BlocchiTableAdapter();
|
||||
taCelle = new GMW_data.DS_magazzinoTableAdapters.CelleTableAdapter();
|
||||
taTipoCella = new GMW_data.DS_magazzinoTableAdapters.TipoCellaTableAdapter();
|
||||
taCartellini = new GMW_data.DS_magazzinoTableAdapters.ElencoCartelliniTableAdapter();
|
||||
taPosUdcCorr = new GMW_data.DS_magazzinoTableAdapters.PosizioneUdcCorrenteTableAdapter();
|
||||
taPosUdcStorico = new GMW_data.DS_magazzinoTableAdapters.PosizioneUdcStoricoTableAdapter();
|
||||
taMagOverw = new GMW_data.DS_magazzinoTableAdapters.V_MagazziniOverviewTableAdapter();
|
||||
taDettMagPart = new GMW_data.DS_magazzinoTableAdapters.V_DettMagPartTableAdapter();
|
||||
taDettUDC = new GMW_data.DS_magazzinoTableAdapters.v_UdcDetailTableAdapter();
|
||||
taElencoListePrelievo = new GMW_data.DS_magazzinoTableAdapters.ElencoListePrelievoTableAdapter();
|
||||
taElencoCartellini = new GMW_data.DS_magazzinoTableAdapters.ElencoCartelliniTableAdapter();
|
||||
taRigheListePrelievo = new GMW_data.DS_magazzinoTableAdapters.RigheListePrelievoTableAdapter();
|
||||
taTipoListaPrelievo = new GMW_data.DS_magazzinoTableAdapters.TipoListaPrelievoTableAdapter();
|
||||
taVParticolariOverwiew = new GMW_data.DS_magazzinoTableAdapters.V_ParticolariOverviewTableAdapter();
|
||||
taPartExpFig = new GMW_data.DS_magazzinoTableAdapters.v_particolariEsponenteFiguraTableAdapter();
|
||||
#endif
|
||||
}
|
||||
/// <summary>
|
||||
/// effettua setup dei connection strings da web.config delal singola applicazione
|
||||
/// </summary>
|
||||
protected virtual void setupConnectionStringBase()
|
||||
{
|
||||
// connections del db
|
||||
#if false
|
||||
taAnagMag.Connection.ConnectionString = memLayer.ML.confReadString("GMWConnectionString");
|
||||
taBlocchi.Connection.ConnectionString = memLayer.ML.confReadString("GMWConnectionString");
|
||||
taCelle.Connection.ConnectionString = memLayer.ML.confReadString("GMWConnectionString");
|
||||
taTipoCella.Connection.ConnectionString = memLayer.ML.confReadString("GMWConnectionString");
|
||||
taCartellini.Connection.ConnectionString = memLayer.ML.confReadString("GMWConnectionString");
|
||||
taPosUdcCorr.Connection.ConnectionString = memLayer.ML.confReadString("GMWConnectionString");
|
||||
taPosUdcStorico.Connection.ConnectionString = memLayer.ML.confReadString("GMWConnectionString");
|
||||
taMagOverw.Connection.ConnectionString = memLayer.ML.confReadString("GMWConnectionString");
|
||||
taDettMagPart.Connection.ConnectionString = memLayer.ML.confReadString("GMWConnectionString");
|
||||
taDettUDC.Connection.ConnectionString = memLayer.ML.confReadString("GMWConnectionString");
|
||||
taElencoListePrelievo.Connection.ConnectionString = memLayer.ML.confReadString("GMWConnectionString");
|
||||
taElencoCartellini.Connection.ConnectionString = memLayer.ML.confReadString("GMWConnectionString");
|
||||
taRigheListePrelievo.Connection.ConnectionString = memLayer.ML.confReadString("GMWConnectionString");
|
||||
taTipoListaPrelievo.Connection.ConnectionString = memLayer.ML.confReadString("GMWConnectionString");
|
||||
taVParticolariOverwiew.Connection.ConnectionString = memLayer.ML.confReadString("GMWConnectionString");
|
||||
taPartExpFig.Connection.ConnectionString = memLayer.ML.confReadString("GMWConnectionString");
|
||||
#endif
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Inizializzazione
|
||||
|
||||
protected TermClass()
|
||||
{
|
||||
initTA();
|
||||
setupConnectionStringBase();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// oggetto static per fare chiamate sul magazzino
|
||||
/// </summary>
|
||||
public static TermClass termin = new TermClass();
|
||||
|
||||
#endregion
|
||||
|
||||
#region metodi protected
|
||||
|
||||
#if false
|
||||
/// <summary>
|
||||
/// aggiunge le righe liste di prelievo necessarie a soddisfare la richiesta in logica FIFO dato un elenco di cartellini, la qta totale da allocare e la lista attuale
|
||||
/// </summary>
|
||||
/// <param name="QtaTot"></param>
|
||||
/// <param name="codListaAttuale"></param>
|
||||
/// <param name="tabellaElencoCartellini"></param>
|
||||
private void allocaRigheListaPrelievo(decimal QtaTot, string codListaAttuale, DS_magazzino.ElencoCartelliniDataTable tabellaElencoCartellini)
|
||||
{
|
||||
//ricavo il valore UDC della riga del più vecchio
|
||||
string udcAttuale;
|
||||
bool qtaOk = false;
|
||||
bool dataFinished = false;
|
||||
int progrUdc = 0;
|
||||
int numUdcDisponibili = tabellaElencoCartellini.Rows.Count;
|
||||
// contiene la quantità della riga attuale
|
||||
decimal qtaRiga;
|
||||
// somma progressiva della qta allocata - calcolo da db!
|
||||
decimal qtaAllocata = taElencoListePrelievo.getByCodLista(codListaAttuale)[0].Prelevato;
|
||||
//ciclo WHILE per lo riempimento FIFO con UDC secondo richiesta a partire da elenco fornito
|
||||
while (!qtaOk && !dataFinished)
|
||||
{
|
||||
/*
|
||||
* crea una riga in righelistaprelievo passando come valori
|
||||
* il codlista attuale ricavato da sopr
|
||||
* l'UDC dal primo della tabella getOlderUDC
|
||||
*
|
||||
*
|
||||
* recupero quantità dalla riga corrente;
|
||||
*
|
||||
* imposto proposto a 1;
|
||||
* imposto prelevato 0;
|
||||
* taRighelistePreliveo.Insert;
|
||||
*
|
||||
* qtaAllocata = qtaAllocata + Qta di questa riga (riuso il valore della colonna QTA
|
||||
* tabella[contatore]; contatore++;
|
||||
* qtaOk = (qtaAllocata >= qtaRichiesta)
|
||||
* dataFinished = (contatore >= numRighe);
|
||||
*
|
||||
* */
|
||||
// ricavo la riga più vecchia
|
||||
qtaRiga = tabellaElencoCartellini[progrUdc].Qta;
|
||||
udcAttuale = tabellaElencoCartellini[progrUdc].UDC;
|
||||
// eseguo query di insert
|
||||
taRigheListePrelievo.Insert(codListaAttuale, udcAttuale, qtaRiga, true, false);
|
||||
|
||||
//incremento qta allocata
|
||||
qtaAllocata = (qtaAllocata + qtaRiga);
|
||||
//incremento contatore
|
||||
progrUdc++;
|
||||
|
||||
// verifico le condizioni, false se non cambia nulla true se cambia e si esce dal while
|
||||
qtaOk = (qtaAllocata >= QtaTot);
|
||||
dataFinished = (progrUdc >= numUdcDisponibili);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#endregion
|
||||
|
||||
#region Metodi esposti
|
||||
|
||||
#if false
|
||||
/// <summary>
|
||||
/// effettua lo spostamento di un UDC tra 2 posizioni indicate
|
||||
/// </summary>
|
||||
/// <param name="CodCS">Codice company/sito</param>
|
||||
/// <param name="UDC">Codice UDC</param>
|
||||
/// <param name="IdxCellaFrom">Cella di origine</param>
|
||||
/// <param name="IdxCellaTo">Cella di destinazione</param>
|
||||
/// <returns>esito comando</returns>
|
||||
public bool spostaUDC(string CodCS, string UDC, int IdxCellaFrom, int IdxCellaTo)
|
||||
{
|
||||
bool answ = false;
|
||||
try
|
||||
{
|
||||
taPosUdcCorr.stp_spostaUdc(CodCS, UDC, IdxCellaFrom, IdxCellaTo);
|
||||
// cerco nuova posizione...
|
||||
if (taPosUdcCorr.getByCellaUdc(UDC, IdxCellaTo).Rows.Count > 0)
|
||||
{
|
||||
answ = true;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// effettua lo scaricamento di un UDC (x spedizione)
|
||||
/// </summary>
|
||||
/// <param name="CodCS">Codice company/sito</param>
|
||||
/// <param name="UDC">Codice UDC</param>
|
||||
/// <param name="IdxCellaFrom">Cella di origine</param>
|
||||
/// <param name="IdxPosizUdc">Codice posizione UDC finale</param>
|
||||
/// <returns>esito comando</returns>
|
||||
public bool scaricaUDC(string CodCS, string UDC, int IdxCellaFrom, int IdxPosizUdc)
|
||||
{
|
||||
bool answ = false;
|
||||
try
|
||||
{
|
||||
taPosUdcCorr.stp_scaricaUdc(CodCS, UDC, IdxCellaFrom, IdxPosizUdc);
|
||||
answ = true;
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// rettifica la qta di un UDC
|
||||
/// </summary>
|
||||
/// <param name="CodSoggetto">Codice soggetto/operatore</param>
|
||||
/// <param name="UDC">Codice UDC</param>
|
||||
/// <param name="qta">Nuova quantita associata</param>
|
||||
/// <returns>esito comando</returns>
|
||||
public bool rettificaQtaUDC(string CodSoggetto, string UDC, decimal qta)
|
||||
{
|
||||
bool answ = false;
|
||||
try
|
||||
{
|
||||
int fatti = 0;
|
||||
fatti = taCartellini.updateQty(UDC, CodSoggetto, "U", "UDC_QTY", qta).Rows.Count;
|
||||
if (fatti > 0)
|
||||
{
|
||||
answ = true;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// Crea una lista di prelievo andando a prenotare gli UDC del particolare richiesto in logica FIFO
|
||||
/// </summary>
|
||||
/// <param name="CodCS"></param>
|
||||
/// <param name="TipoListaPrelievo"></param>
|
||||
/// <param name="Particolare"></param>
|
||||
/// <param name="Esponente"></param>
|
||||
/// <param name="Figura"></param>
|
||||
/// <param name="QtaTot"></param>
|
||||
/// <param name="CodImballo"></param>
|
||||
/// <returns></returns>
|
||||
public string creaListaPrelievo(string CodCS, string TipoListaPrelievo, string Particolare, string Esponente, string Figura, decimal QtaTot, string CodImballo)
|
||||
{
|
||||
/*
|
||||
* - ordini gli UDC per data dal + vecchio (data fusione? direi di si!)
|
||||
*
|
||||
* - prenda 1 ad 1 gli UDC, e crei dall'UDC un record in RigheListePrelievo con
|
||||
* - CodLista (dal record appena generato)
|
||||
* - UDC (il + vecchio trovato)
|
||||
* - QTA (dell'UDC)
|
||||
* - Proposto = 1 (vero)
|
||||
* - Prelevato = 0 (falso)
|
||||
* - questo loop di prelievo va eseguito fino a quanto la somam delle qty sia maggiore o uguale alla qty richiesta, o fino a quando siano finiti gli UDC
|
||||
*
|
||||
* - potrebbe esser cambiato approccio e si potrebbe fare una query ceh seleziona i + vecchi UDC in numero corretto fin dall'inizio da includere facendo una cosa del tipo
|
||||
* - calcolo media qty degli UDC papabili x le condizioni dette prima
|
||||
* - dato il totale ottengo quanti UDC mi servono arrotondando x eccesso (se ho 200 richiesti, media 70, CEIL(200/70) = 3)
|
||||
* - faccio un SELECT TOP n (qui 3) * FROM ElencoCartellini WHERE ...
|
||||
* - e questa select la uso x farci un INSERT INTO in RigheListePrelievo
|
||||
*
|
||||
* - terminati questi step si aggiorna la lista di prelievo emttendo come qty quella data dalla somma degli UDC davvero proposti
|
||||
*
|
||||
* - la stored deve restituire il codice della lista di prelievo e passarla qui, che a sua volta passerà al chiamante il codice della lista
|
||||
* */
|
||||
|
||||
string answ = "K";
|
||||
|
||||
// variabile di tipo datetime per data corrente
|
||||
DateTime adesso = DateTime.Now;
|
||||
|
||||
// dati che mi servono...
|
||||
int idxPosizione = 20; // !!! Verificare parametrico - me lo faccio passare... // !!!FARE!!!
|
||||
|
||||
// non la valorizzo qui ma calcolo ... se non fa verificare
|
||||
string RagioneSociale = "";
|
||||
|
||||
// ricavo da session...
|
||||
string codSoggetto = "";
|
||||
try
|
||||
{
|
||||
codSoggetto = DataProxy.obj.taSogg2Oper.getBuUserDominio(user_std.UtSn.utente, user_std.UtSn.dominio)[0].CodSoggetto;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
logger.lg.scriviLog(string.Format("Non sono riuscito a recuperare il codice soggetto per l'utente loggato: {0}", user_std.UtSn.userNameAD), tipoLog.ERROR);
|
||||
}
|
||||
// proseguo SOLO se ho trovato cod soggetto...
|
||||
if (codSoggetto != "")
|
||||
{
|
||||
// li ricavo da db successivamente
|
||||
string disegnoGrezzo = "";
|
||||
string descParticolare = "";
|
||||
string codCliente = "";
|
||||
|
||||
|
||||
// ricavo codCliente
|
||||
try
|
||||
{
|
||||
codCliente = DataProxy.obj.taAnagParticolari.getByParticolare(Particolare)[0].CodCliente;
|
||||
}
|
||||
catch { }
|
||||
|
||||
// ricavo disegnoGrezzo
|
||||
try
|
||||
{
|
||||
disegnoGrezzo = DataProxy.obj.taAnagParticolari.getByParticolare(Particolare)[0].DisegnoGrezzo;
|
||||
}
|
||||
catch { }
|
||||
|
||||
try
|
||||
{
|
||||
descParticolare = DataProxy.obj.taAnagParticolari.getByParticolare(Particolare)[0].DescParticolare;
|
||||
}
|
||||
catch { }
|
||||
|
||||
// dato codcliente ricavo la ragione sociale
|
||||
try
|
||||
{
|
||||
RagioneSociale = DataProxy.obj.taAnagClienti.getRagioneSocialeByCodCliente(codCliente)[0].RagSociale;
|
||||
}
|
||||
catch { }
|
||||
|
||||
|
||||
string codListaAttuale = "";
|
||||
try
|
||||
{
|
||||
// eseguo soltanto la query (meglio con try catch così se non c'è non dà errore...)
|
||||
DS_magazzino.ElencoListePrelievoDataTable tabellaElencoListe = taElencoListePrelievo.InsertQuery(string.Format("{0:yy}", adesso), string.Format("{0:MM}", adesso), idxPosizione, memLayer.ML.confReadString("CodCS"), codCliente, RagioneSociale, codSoggetto, Particolare, descParticolare, disegnoGrezzo, Esponente, Figura, CodImballo, QtaTot);
|
||||
|
||||
// ricavo prima (e unica) riga dalla select
|
||||
DS_magazzino.ElencoListePrelievoRow rigaElencoListe = tabellaElencoListe[0];
|
||||
|
||||
// ricavo valore del CodLista attuale appena inserito
|
||||
codListaAttuale = rigaElencoListe.CodLista;
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
if (codListaAttuale != "")
|
||||
{
|
||||
answ = codListaAttuale;
|
||||
// stored per ricavare il più vecchio in ordine ASC per Data Fusione - TABELLA
|
||||
//DS_magazzino.ElencoCartelliniDataTable tabellaElencoCartellini = taElencoCartellini.getOlderUDC(Esponente, Particolare, idxPosizione);
|
||||
DS_magazzino.ElencoCartelliniDataTable tabellaElencoCartellini = taElencoCartellini.getUdcUnusedOlder(codListaAttuale);
|
||||
allocaRigheListaPrelievo(QtaTot, codListaAttuale, tabellaElencoCartellini);
|
||||
}
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// indica come attivata in carico di una lista di prelievo
|
||||
/// </summary>
|
||||
/// <param name="CodCS">Codice company/sito</param>
|
||||
/// <param name="CodLista">codice della lista di prelievo</param>
|
||||
/// <param name="CodSoggetto">cod operatore carrellista</param>
|
||||
/// <returns></returns>
|
||||
public esitoOperazione attivaListaPrelievo(string CodCS, string CodLista, string CodSoggetto)
|
||||
{
|
||||
// da chiamare quando clicco e inizio lista prelievo .... vedi sopra
|
||||
esitoOperazione answ = esitoOperazione.errore;
|
||||
|
||||
try
|
||||
{
|
||||
// la query recupera la lista in base al CodLista
|
||||
DS_magazzino.ElencoListePrelievoDataTable tabella = taElencoListePrelievo.getByCodLista(CodLista);
|
||||
DS_magazzino.ElencoListePrelievoRow riga = tabella[0];
|
||||
|
||||
// se la lista esiste...
|
||||
if (tabella.Rows.Count > 0)
|
||||
{
|
||||
// se la lista è ancora non completata
|
||||
if (riga.CodStatoLista == (int)statoLista.bozza)
|
||||
{
|
||||
taElencoListePrelievo.updateStato(CodSoggetto, CodLista, (int)statoLista.generata);
|
||||
answ = esitoOperazione.ok;
|
||||
}
|
||||
// se è già completata o iniziata dà errore
|
||||
else
|
||||
{
|
||||
answ = esitoOperazione.errore_readOnly;
|
||||
}
|
||||
}
|
||||
// se la lista non esiste dai errore
|
||||
else
|
||||
{
|
||||
answ = esitoOperazione.errore;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// indica presa in carico di una lista di prelievo
|
||||
/// </summary>
|
||||
/// <param name="CodCS">Codice company/sito</param>
|
||||
/// <param name="CodLista">codice della lista di prelievo</param>
|
||||
/// <param name="CodSoggetto">cod operatore carrellista</param>
|
||||
/// <returns></returns>
|
||||
public esitoOperazione iniziaListaPrelievo(string CodCS, string CodLista, string CodSoggetto)
|
||||
{
|
||||
// da chiamare quando clicco e inizio lista prelievo .... vedi sopra
|
||||
esitoOperazione answ = esitoOperazione.errore;
|
||||
|
||||
try
|
||||
{
|
||||
// la query recupera la lista in base al CodLista
|
||||
DS_magazzino.ElencoListePrelievoDataTable tabella = taElencoListePrelievo.getByCodLista(CodLista);
|
||||
DS_magazzino.ElencoListePrelievoRow riga = tabella[0];
|
||||
|
||||
// se la lista esiste...
|
||||
if (tabella.Rows.Count > 0)
|
||||
{
|
||||
// se la lista è ancora non completata
|
||||
if (riga.CodStatoLista == (int)statoLista.generata)
|
||||
{
|
||||
taElencoListePrelievo.updateStato(CodSoggetto, CodLista, (int)statoLista.iniziata);
|
||||
answ = esitoOperazione.ok;
|
||||
}
|
||||
// se è già completata o iniziata dà errore
|
||||
else
|
||||
{
|
||||
answ = esitoOperazione.errore_readOnly;
|
||||
}
|
||||
}
|
||||
// se la lista non esiste dai errore
|
||||
else
|
||||
{
|
||||
answ = esitoOperazione.errore;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// indica come completata (da aprte del magazziniere) una lista di prelievo
|
||||
/// </summary>
|
||||
/// <param name="CodCS">Codice company/sito</param>
|
||||
/// <param name="CodLista">codice della lista di prelievo</param>
|
||||
/// <param name="CodSoggetto">cod operatore carrellista</param>
|
||||
/// <returns></returns>
|
||||
public esitoOperazione completaListaPrelievo(string CodCS, string CodLista, string CodSoggetto)
|
||||
{
|
||||
// da chiamare quando clicco e inizio lista prelievo .... vedi sopra
|
||||
esitoOperazione answ = esitoOperazione.errore;
|
||||
|
||||
try
|
||||
{
|
||||
// la query recupera la lista in base al CodLista
|
||||
DS_magazzino.ElencoListePrelievoDataTable tabella = taElencoListePrelievo.getByCodLista(CodLista);
|
||||
DS_magazzino.ElencoListePrelievoRow riga = tabella[0];
|
||||
|
||||
// se la lista esiste...
|
||||
if (tabella.Rows.Count > 0)
|
||||
{
|
||||
// se la lista è ancora non completata
|
||||
if (riga.CodStatoLista == (int)statoLista.iniziata)
|
||||
{
|
||||
// ricavo il codtipolista
|
||||
string codTipoListaAttuale = riga.CodTipoLista;
|
||||
|
||||
//leggo da tipoLista prelievo alcuni dati (es codcella di destinazione)
|
||||
DS_magazzino.TipoListaPrelievoDataTable tabellaTipoLista = taTipoListaPrelievo.getByCodTipoLista(codTipoListaAttuale);
|
||||
DS_magazzino.TipoListaPrelievoRow rigaTipoLista = tabellaTipoLista[0];
|
||||
|
||||
// leggo da righe lista prelievo il dato udc che mi serve
|
||||
DS_magazzino.RigheListePrelievoDataTable tabellaRigheListaPrelievo = taRigheListePrelievo.getByCodLista(CodLista);
|
||||
DS_magazzino.RigheListePrelievoRow rigaListaPrelievo = tabellaRigheListaPrelievo[0];
|
||||
|
||||
// leggo il codice della cella...
|
||||
string codCellaDestAttuale = rigaTipoLista.CodCella;
|
||||
// lo trasformo x avere la cella di destinazione...
|
||||
int idxCellaTo = taCelle.getByCodCella(codCellaDestAttuale)[0].IdxCella;
|
||||
|
||||
// sposto ("metto a terra") gli UDC
|
||||
foreach (DS_magazzino.RigheListePrelievoRow row in tabellaRigheListaPrelievo.Rows)
|
||||
{
|
||||
// ricavo il codice UDC...
|
||||
string UDC = row.UDC;
|
||||
// mi serve per posizione udc corrente
|
||||
DS_magazzino.PosizioneUdcCorrenteRow rigaUdcCorrente = taPosUdcCorr.getByUDC(UDC)[0];
|
||||
// il secondo idx che mi serve
|
||||
int idxCellaFrom = rigaUdcCorrente.IdxCella;
|
||||
// sposto UDC
|
||||
spostaUDC(CodCS, UDC, idxCellaFrom, idxCellaTo);
|
||||
}
|
||||
|
||||
taElencoListePrelievo.updateStato(CodSoggetto, CodLista, (int)statoLista.completata);
|
||||
answ = esitoOperazione.ok;
|
||||
}
|
||||
// se è già completata o NON iniziata dà errore
|
||||
else
|
||||
{
|
||||
answ = esitoOperazione.errore_readOnly;
|
||||
}
|
||||
}
|
||||
// se la lista non esiste dai errore
|
||||
else
|
||||
{
|
||||
answ = esitoOperazione.errore;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// Effettua lo scaricamento della lista di prelievo indicata, ovvero
|
||||
/// - toglie dalle posizioni di magazzino tutti gli UDC indicati come prelevati (liberando tali posizioni)
|
||||
/// - assegna tutti gli UDC prelevati alla cella indicata per il tipo di lista di prelievo interessata
|
||||
/// - elimina eventuali righe di prelievo della lista per UDC non effettivamente prelevate
|
||||
/// - chiude la lista di prelievo (completata = 1)
|
||||
/// </summary>
|
||||
/// <param name="CodCS">Codice company/sito</param>
|
||||
/// <param name="CodLista">codice della lista di prelievo</param>
|
||||
/// <param name="CodSoggetto">cod operatore carrellista</param>
|
||||
/// <returns>esito comando</returns>
|
||||
public esitoOperazione scaricaListaPrelievo(string CodCS, string CodLista, string CodSoggetto)
|
||||
{
|
||||
/*
|
||||
* Questa funzione serve ALLA FINE delle operazioni di prelievo, x chiudere la lista di prelievo
|
||||
* - controllo se la lista esiste, ed è ancora NON completata
|
||||
* - se risulta già completata errore xché è "readOnly" la lista essendo già completata (vedere l'enum in fondo al codice)
|
||||
* - se la lista è ok
|
||||
* - leggo da tipoLista prelievo alcuni dati (es codcella di destinazione)
|
||||
* - sposto TUTTI gli UDC delle righeListaPrelievo, da posizione attuale a posizione indicata da tipo lista
|
||||
* (quindi da codCella --> IdxCella --> spostamento
|
||||
* indico la lista come completata = 1 (true)
|
||||
* */
|
||||
|
||||
esitoOperazione answ = esitoOperazione.errore;
|
||||
int trovate = 0;
|
||||
DS_magazzino.ElencoListePrelievoDataTable tabella;
|
||||
DS_magazzino.ElencoListePrelievoRow riga;
|
||||
try
|
||||
{
|
||||
tabella = taElencoListePrelievo.getByCodLista(CodLista);
|
||||
riga = tabella[0];
|
||||
trovate = tabella.Rows.Count;
|
||||
|
||||
// se la lista esiste...
|
||||
if (trovate > 0)
|
||||
{
|
||||
// se la lista è completata
|
||||
if (riga.CodStatoLista == (int)statoLista.completata)
|
||||
{
|
||||
// ricavo il codtipolista
|
||||
string codTipoListaAttuale = riga.CodTipoLista;
|
||||
|
||||
//leggo da tipoLista prelievo alcuni dati (es codcella di destinazione)
|
||||
DS_magazzino.TipoListaPrelievoDataTable tabellaTipoLista = taTipoListaPrelievo.getByCodTipoLista(codTipoListaAttuale);
|
||||
DS_magazzino.TipoListaPrelievoRow rigaTipoLista = tabellaTipoLista[0];
|
||||
|
||||
// leggo da righe lista prelievo il dato udc che mi serve
|
||||
DS_magazzino.RigheListePrelievoDataTable tabellaRigheListaPrelievo = taRigheListePrelievo.getByCodLista(CodLista);
|
||||
DS_magazzino.RigheListePrelievoRow rigaListaPrelievo = tabellaRigheListaPrelievo[0];
|
||||
|
||||
// leggo il codice della cella...
|
||||
int idxPosizUdc = rigaTipoLista.IdxPosizioneFinal;
|
||||
|
||||
// scarico i vari UDC dal magazzino (come posizione corrente)
|
||||
foreach (DS_magazzino.RigheListePrelievoRow row in tabellaRigheListaPrelievo.Rows)
|
||||
{
|
||||
// ricavo il codice UDC...
|
||||
string UDC = row.UDC;
|
||||
// mi serve per posizione udc corrente
|
||||
DS_magazzino.PosizioneUdcCorrenteRow rigaUdcCorrente = taPosUdcCorr.getByUDC(UDC)[0];
|
||||
// il secondo idx che mi serve
|
||||
int idxCellaFrom = rigaUdcCorrente.IdxCella;
|
||||
// sposto UDC
|
||||
scaricaUDC(CodCS, UDC, idxCellaFrom, idxPosizUdc);
|
||||
}
|
||||
// segna come scaricata la lista prelievo
|
||||
taElencoListePrelievo.updateStato(CodSoggetto, CodLista, (int)statoLista.scaricata);
|
||||
// restituisce ok
|
||||
answ = esitoOperazione.ok;
|
||||
// ora eseguo stored x copiare in altra tabella (quella per AS...)
|
||||
taElencoListePrelievo.stp_LP_exportToAs400(CodLista);
|
||||
}
|
||||
// se è già completata dà errore
|
||||
else
|
||||
{
|
||||
answ = esitoOperazione.errore_readOnly;
|
||||
}
|
||||
}
|
||||
// se la lista non esiste dai errore
|
||||
else
|
||||
{
|
||||
answ = esitoOperazione.errore;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// Verifica la corrispondenza dati tra RigheListePrelievo ed ElencoCartellini
|
||||
/// </summary>
|
||||
/// <param name="CodLista"></param>
|
||||
/// <param name="UDC"></param>
|
||||
/// <returns></returns>
|
||||
public bool verificaDatiUdc(string CodLista, string UDC)
|
||||
{
|
||||
bool answ = false;
|
||||
|
||||
try
|
||||
{
|
||||
DS_magazzino.ElencoListePrelievoDataTable tabellaElenco = taElencoListePrelievo.getByCodLista(CodLista);
|
||||
DS_magazzino.ElencoListePrelievoRow rigaElenco = tabellaElenco[0];
|
||||
|
||||
DS_magazzino.ElencoCartelliniDataTable tabellaUDC = taElencoCartellini.getDetailsUdcByUdc(UDC);
|
||||
DS_magazzino.ElencoCartelliniRow rigaUDC = tabellaUDC[0];
|
||||
|
||||
// ricavo dati da confrontare - da Lista ricavo particolare/esponente/figura
|
||||
string particolareLista = rigaElenco.Particolare;
|
||||
string esponenteLista = rigaElenco.Esponente;
|
||||
string figuraLista = rigaElenco.Figura;
|
||||
string codImballoLista = rigaElenco.CodImballo;
|
||||
|
||||
//stessi dati da UDC
|
||||
string particolareUDC = rigaUDC.Particolare;
|
||||
string esponenteUDC = rigaUDC.Esponente;
|
||||
string figuraUDC = rigaUDC.Figura;
|
||||
string codImballoUDC = rigaUDC.CodImballo;
|
||||
|
||||
// condizioni di uguaglianza...
|
||||
bool particolareOk = false;
|
||||
bool esponenteOk = false;
|
||||
bool figuraOk = false;
|
||||
bool codImballoOk = false;
|
||||
// verifico le condizioni 1 ad 1...
|
||||
particolareOk = (particolareLista == particolareUDC);
|
||||
if (esponenteLista == "*")
|
||||
{
|
||||
esponenteOk = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
esponenteOk = (esponenteLista == esponenteUDC);
|
||||
}
|
||||
if (figuraLista == "*")
|
||||
{
|
||||
figuraOk = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
figuraOk = (figuraLista == figuraUDC);
|
||||
}
|
||||
if (codImballoLista == "*")
|
||||
{
|
||||
codImballoOk = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
codImballoOk = (codImballoLista == codImballoUDC);
|
||||
}
|
||||
|
||||
// verifica finale del risultato uguaglianza...
|
||||
answ = (particolareOk && esponenteOk && figuraOk && codImballoOk);
|
||||
}
|
||||
catch
|
||||
{
|
||||
answ = false;
|
||||
}
|
||||
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// Conferma che un dato UDC è stato prelevato per soddisfare la lista di prelievo ed aggiorna o aggiunge riga in RigheListePrelievo
|
||||
/// </summary>
|
||||
/// <param name="CodLista">codice della lista di prelievo</param>
|
||||
/// <param name="UDC">Codice UDC</param>
|
||||
/// <returns>esito comando</returns>
|
||||
public esitoOperazione confermaUdcPrelevatoPerLista(string CodLista, string UDC)
|
||||
{
|
||||
esitoOperazione answ = esitoOperazione.errore;
|
||||
|
||||
// verifico che i dati corrispondano con il metodo relativo (vedi sopra)
|
||||
bool datiUdcOk = verificaDatiUdc(CodLista, UDC);
|
||||
|
||||
if (datiUdcOk)
|
||||
{
|
||||
// richiamo stored di upsert e dò risposta positiva
|
||||
taRigheListePrelievo.upsertPrelevato(CodLista, UDC);
|
||||
answ = esitoOperazione.ok;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// altrimenti dò errore mismatch e non proseguo
|
||||
return answ = esitoOperazione.errore_mismatch;
|
||||
}
|
||||
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// annulla il prelievo di un UDC, aggiornando RigheListePrelievo (solo preventivato...)
|
||||
/// </summary>
|
||||
/// <param name="CodLista">codice della lista di prelievo</param>
|
||||
/// <param name="UDC">Codice UDC</param>
|
||||
/// <returns>esito comando</returns>
|
||||
public esitoOperazione annullaUdcPrelevatoPerLista(string CodLista, string UDC)
|
||||
{
|
||||
esitoOperazione answ = esitoOperazione.errore;
|
||||
|
||||
/*
|
||||
* Questa funzione va chiamata da web o da terminalino ogni volta che si fa un annullamento di avvenuto prelievo, ovvero il carrellista ha ANNULLATO un prelievo di un UDC associato ad una lista
|
||||
*
|
||||
* - in primis controllo: esiste questa riga di prelievo udc/lista?
|
||||
* - se i dati non corrispondono esco e mando falso --> vedere l'enum in fondo al codice ed
|
||||
* usare esitoOperazione.errore_mismatch
|
||||
* - se i dati corrispondono allora
|
||||
* - cerco riga e tolgo check come prelevato
|
||||
* - se tutto ok passo esito ok
|
||||
*
|
||||
* */
|
||||
try
|
||||
{
|
||||
// ricavo dati
|
||||
DS_magazzino.RigheListePrelievoDataTable tabella = taRigheListePrelievo.getByCodLista(CodLista);
|
||||
DS_magazzino.RigheListePrelievoRow riga = tabella[0];
|
||||
|
||||
// se i dati esistono procedo - eseguo stored che setta non prelevato = false per la riga selezionata
|
||||
if (tabella.Rows.Count > 0)
|
||||
{
|
||||
taRigheListePrelievo.setAnnullaUdcPrelevato(CodLista, UDC);
|
||||
answ = esitoOperazione.ok;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
answ = esitoOperazione.errore_mismatch;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// Rigenera una Lista di prelievo togliendo gli UDC non ancora prelevati rimettendo in logica FIFO gli UDC "liberi" disponibili
|
||||
/// </summary>
|
||||
/// <param name="CodLista">codice della lista di prelievo</param>
|
||||
/// <returns>esito comando</returns>
|
||||
public esitoOperazione scambiaUdcPerLista(string CodLista)
|
||||
{
|
||||
esitoOperazione answ = esitoOperazione.errore;
|
||||
|
||||
/*
|
||||
* Questa funzione va chiamata da web o da terminalino ogni volta che si fa una richiesta di cambio per un UDC già prelevato, ovvero un altro carrellista prelevato un UDC associato alla mia lista corrente - rigenera UDC da prelevare
|
||||
* */
|
||||
try
|
||||
{
|
||||
// ricavo dati
|
||||
DS_magazzino.ElencoListePrelievoRow riga = taElencoListePrelievo.getByCodLista(CodLista)[0];
|
||||
// svuoto PRIMA gli UDC non prelevati
|
||||
taRigheListePrelievo.stp_RigheListePrelievo_eliminaNonPrelevate(CodLista);
|
||||
// rigenero righe UDC da prelevare
|
||||
DS_magazzino.ElencoCartelliniDataTable tabellaElencoCartellini = taElencoCartellini.getUdcUnusedOlder(CodLista);
|
||||
allocaRigheListaPrelievo(riga.QtaTot, CodLista, tabellaElencoCartellini);
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
return answ;
|
||||
}
|
||||
#endif
|
||||
/// <summary>
|
||||
/// Verifica il login utente andando a controllare il CodSoggetto da RilPro e salvando in sessione un oggetto user_std x l'utente corrispondente al cod soggetto secondo la tab soggetti2utente
|
||||
/// </summary>
|
||||
/// <param name="CodSoggetto"></param>
|
||||
/// <returns>tipo di errore codificato</returns>
|
||||
public esitoLoginTerm doUserLogin(string CodSoggetto)
|
||||
{
|
||||
esitoLoginTerm answ = esitoLoginTerm.errore;
|
||||
try
|
||||
{
|
||||
answ = esitoLoginTerm.ok; //!!! FARE!!! vero controllo e user forced login!
|
||||
}
|
||||
catch
|
||||
{
|
||||
// !!! FARE logging tentativo connesisone con IP provenienza
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
/// <summary>
|
||||
/// verifica il codice barcode letto e restituisce il tipo di valore corrisponente
|
||||
/// </summary>
|
||||
/// <param name="barcodeIN"></param>
|
||||
/// <returns></returns>
|
||||
public tipoCodiceBarcode riconosciBarcode(string barcodeIN)
|
||||
{
|
||||
tipoCodiceBarcode answ = tipoCodiceBarcode.ND;
|
||||
switch (barcodeIN.Substring(0,1))
|
||||
{
|
||||
case "O":
|
||||
answ = tipoCodiceBarcode.Operatore;
|
||||
break;
|
||||
case "K":
|
||||
answ = tipoCodiceBarcode.ListaPrelievo;
|
||||
break;
|
||||
case "P":
|
||||
answ = tipoCodiceBarcode.Particolare;
|
||||
break;
|
||||
case "U":
|
||||
answ = tipoCodiceBarcode.UDC;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// definisce i tipi di codice che il barcode può leggere
|
||||
/// </summary>
|
||||
public enum tipoCodiceBarcode
|
||||
{
|
||||
/// <summary>
|
||||
/// Tipo non riconosciuto
|
||||
/// </summary>
|
||||
ND,
|
||||
/// <summary>
|
||||
/// [O] - il barcode rappresenta un codice operatore
|
||||
/// </summary>
|
||||
Operatore,
|
||||
/// <summary>
|
||||
/// [K] - il barcode rappresenta una lista di prelievo
|
||||
/// </summary>
|
||||
ListaPrelievo,
|
||||
/// <summary>
|
||||
/// [U] - il barcode rappresenta un UDC
|
||||
/// </summary>
|
||||
UDC,
|
||||
/// <summary>
|
||||
/// [P] - il barcode rappresenta un particolare
|
||||
/// </summary>
|
||||
Particolare
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// elenco degli esiti per una sessione di login da terminalino
|
||||
/// </summary>
|
||||
public enum esitoLoginTerm
|
||||
{
|
||||
/// <summary>
|
||||
/// tutto ok, come true
|
||||
/// </summary>
|
||||
ok,
|
||||
/// <summary>
|
||||
/// non è andata, errore generico
|
||||
/// </summary>
|
||||
errore,
|
||||
/// <summary>
|
||||
/// errore x mancanza record in tab operatori di RilPro x CodSoggetto
|
||||
/// </summary>
|
||||
errore_noCodSogg,
|
||||
/// <summary>
|
||||
/// errore mancanza username corrisponende all'operatore il cui cod soggetto è stato passato
|
||||
/// </summary>
|
||||
errore_noUser
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user