Example #1
0
    public string[] PllUpisiStavku(string skladisteOznaka, int godina, string broj, string robaBarkod, string lokacijaOznakaIzlaz, float kolicinaIzlaz, string lokacijaOznakaUlaz, float kolicinaUlaz, string mac, string matBroj, string lozinka)
    {
        int id = 0;
        string strGreska = "OK";
        float fltGreska = 0;

        // Kontrola jel PLL zaprti. Okay, zakrpa je JADNA zbog GOTO naredbe, ali mi se nije dalo zafrkavat s ifovima.
        //DataSet kontrolaPLLDS = PllDajPoSkladistu(skladisteOznaka);
        //if (kontrolaPLLDS != null)
        //{
        //    if (kontrolaPLLDS.Tables[0].Rows.Count != 1)
        //    {
        //        strGreska = "GreskaPriUpisu";
        //        kontrolaPLLDS.Dispose();
        //        goto Kraj;
        //    }
        //}
        //else
        //{
        //    strGreska = "GreskaPriUpisu";
        //    kontrolaPLLDS.Dispose();
        //    goto Kraj;
        //}
        // Kraj kontrole

        // - - Nova kontrola jel PLL zaprti, 8.1.2009 - -
        strGreska = PllProvjeri(skladisteOznaka, broj);
        if (strGreska != "OK")
        {
            goto Kraj;
        }
        // - - - - - - - - - - - - -

        if (JeAutenticiran(matBroj, lozinka, mac))
        {
            MobTransLokStaTA mobTransLokStaTA = new MobTransLokStaTA();
            decimal? decID = null;
            decimal? decKapacitet = null;

            #region Priprema parametara
            string lokIzlaz = null;
            if (lokacijaOznakaIzlaz != null && lokacijaOznakaIzlaz != String.Empty)
            {
                lokIzlaz = lokacijaOznakaIzlaz;
            }
            float? kolIzlaz = null;
            if (lokIzlaz != null)
            {
                kolIzlaz = kolicinaIzlaz;
            }

            string lokUlaz = null;
            if (lokacijaOznakaUlaz != null && lokacijaOznakaUlaz != String.Empty)
            {
                lokUlaz = lokacijaOznakaUlaz;
            }
            float? kolUlaz = null;
            if (lokUlaz != null)
            {
                kolUlaz = kolicinaUlaz;
            }
            #endregion

            #region Izlaz
            // Ako se radi o izlazu, treba provjeriti postoji li uopæe roba na toj lokaciji.
            if (lokIzlaz != null && lokUlaz == null)
            {
                DataSet ds = RobaDajLokacije(skladisteOznaka, robaBarkod, null);
                if (ds != null)
                {
                    DataView dv = new DataView(ds.Tables[0], "LokacijaOznaka='" + lokIzlaz + "'", "LokacijaOznaka", DataViewRowState.CurrentRows);
                    if (dv.Count == 1)
                    {
                        float fltRobaStanje = 0;
                        if (dv[0]["RobaStanje"].ToString() != String.Empty && dv[0]["RobaStanje"].ToString() != null)
                        {
                            fltRobaStanje = Convert.ToSingle(dv[0]["RobaStanje"]);
                        }
                        // Ako robe ima na lokaciji, treba provjeriti kolièinu za skidanje...
                        if (kolicinaIzlaz > fltRobaStanje)
                        {
                            strGreska = "PrevelikoIzuzimanje";
                            fltGreska = kolicinaIzlaz - fltRobaStanje;
                        }
                    }
                    else if (dv.Count == 0)
                    {
                        strGreska = "NemaNaLokaciji";
                    }
                    else
                    {
                        strGreska = "PogresanBrojLokacija";
                    }
                    dv.Dispose();
                }
                else
                {
                    strGreska = "GreskaPriDohvatuLokacija";
                }
                ds.Dispose();
            }
            #endregion

            #region Ulaz
            // Ako se radi o ulazu, treba provjeriti da li je roba prethodno izuzeta.
            else if (lokIzlaz == null && lokUlaz != null)
            {
                //string[] stanje = PllIzmjestenaRobaDajStanje(skladisteOznaka, godina, broj, null, robaBarkod, matBroj);
                string[] stanje = PllIzmjestenaRobaDajStanje(skladisteOznaka, godina, broj, null, robaBarkod, null);
                if (stanje[0] == "1")
                {
                    if (stanje[2] != String.Empty)
                    {
                        float fltStanje1 = 0;
                        if (stanje[1] != String.Empty)
                        {
                            fltStanje1 = Convert.ToSingle(stanje[1]);
                        }
                        if (kolicinaUlaz > Convert.ToSingle(stanje[2]) - fltStanje1)
                        {
                            strGreska = "PrevelikUlaz";
                            fltGreska = kolicinaUlaz - (Convert.ToSingle(stanje[2]) - fltStanje1);
                        }
                    }
                    else
                    {
                        strGreska = "NepostojeciIzlaz";
                    }
                }
                else
                {
                    strGreska = "GreskaPriDohvatuStanja";
                }
            }
            #endregion

            if (strGreska == "OK")
            {
                try
                {
                    mobTransLokStaTA.Insert(skladisteOznaka, godina.ToString(), broj, lokIzlaz, kolIzlaz, lokUlaz, kolUlaz, robaBarkod, mac, matBroj, out decID, out decKapacitet);
                    if (Convert.ToInt32(decID) == -2)
                    {
                        strGreska = "KapacitarnaGreska";
                    }
                }
                catch (Exception)
                {
                    strGreska = "GreskaPriUpisu";
                    decID = null;
                }
                finally
                {
                    mobTransLokStaTA.Dispose(); // Za otpuštanje table adaptera se brine garbage collector, ali ne šteti ako ga ruèno anuliramo.
                }
                if (decID != null)
                {
                    id = Convert.ToInt32(decID);
                }
                if (decKapacitet != null)
                {
                    fltGreska = Convert.ToSingle(decKapacitet);
                }
            }
        }

        Kraj:
        string[] upis = new string[3];
        upis[0] = strGreska;
        upis[1] = fltGreska.ToString();
        upis[2] = id.ToString();

        // < Štoperica>
        //TimeSpan intervalWS = DateTime.Now.Subtract(pocetakWS);
        //Kraj(id2, intervalWS.TotalMilliseconds, dogodilaSeGreska);
        // </štoperica>

        return upis;
    }