Esempio n. 1
0
 public Korisno()
 {
     PCPOS.Until.classFukcijeZaUpravljanjeBazom baza = new Until.classFukcijeZaUpravljanjeBazom("CAFFE", "DB");
     GodinaKojaSeKoristiUbazi = baza.UzmiGodinuKojaSeKoristi();
 }
Esempio n. 2
0
        private List <DataTable> UzmiKolicineIzOveIprosleGodine()
        {
            DataSet DS = new DataSet();

            string sql = @"SELECT sifra,naziv,
                    /*PRIMKA*/
                    ROUND((coalesce((SELECT SUM(kolicina) AS kol FROM primka_stavke
                    LEFT JOIN primka ON primka.broj_primke=primka_stavke.broj_primke AND primka.is_kalkulacija='False'
                    WHERE roba_prodaja.sifra=primka_stavke.sifra AND primka.is_kalkulacija='False' AND datum<'@datum'),0)
                    /*KALKULACIJA*/
                    +coalesce((SELECT SUM(kolicina) AS kol FROM primka_stavke
                    LEFT JOIN primka ON primka.broj_primke=primka_stavke.broj_primke AND primka.is_kalkulacija='True'
                    WHERE roba_prodaja.sifra=primka_stavke.sifra AND primka.is_kalkulacija='True' AND datum<'@datum'),0)
                    /*OTPIS*/
                    -coalesce((SELECT SUM(CAST(REPLACE(kolicina,',','.') AS numeric)) AS kol FROM povrat_robe_stavke
                    LEFT JOIN povrat_robe ON povrat_robe.broj=povrat_robe_stavke.broj
                    WHERE roba_prodaja.sifra=povrat_robe_stavke.sifra AND datum<'@datum'),0)
                    /*RAČUNI*/
                    -coalesce((
                    SELECT SUM(CAST(REPLACE(caffe_normativ.kolicina,',','.') AS numeric)*coalesce((CAST(REPLACE(racun_stavke.kolicina,',','.') AS numeric))))
                    FROM racun_stavke
                    LEFT JOIN racuni ON racuni.broj_racuna=racun_stavke.broj_racuna AND racuni.godina=racun_stavke.godina AND racuni.id_ducan=racun_stavke.id_ducan AND racuni.id_kasa=racun_stavke.id_blagajna
                    LEFT JOIN caffe_normativ ON caffe_normativ.sifra=racun_stavke.sifra_robe
                    WHERE caffe_normativ.sifra_normativ=roba_prodaja.sifra AND racuni.datum_racuna<'@datum'
                    ),0)
                    /*MS IZLAZ*/
                    -coalesce((SELECT SUM(medu_poslovnice.kolicina) as kolicina FROM medu_poslovnice
                    WHERE medu_poslovnice.iz_poslovnice='DU' AND medu_poslovnice.sifra=roba_prodaja.sifra AND datum<'@datum'),0)
                    /*MS ULAZ*/
                    +coalesce((SELECT SUM(medu_poslovnice.kolicina) as kolicina FROM medu_poslovnice
                    WHERE medu_poslovnice.u_poslovnicu='DU' AND medu_poslovnice.sifra=roba_prodaja.sifra AND datum<'@datum'),0)),4)  as kol
                    FROM roba_prodaja ORDER BY naziv;";

            sql = sql.Replace("@datum", datumInventure.ToString("yyyy-MM-dd H:mm:ss")).Replace("+", "zbroj");
            DataTable DTovaGodina = classSQL.select(sql, "Artikli").Tables[0];

            sql = @"SELECT sifra,naziv,
                    /*PRIMKA*/
                    ROUND((coalesce((SELECT SUM(kolicina) AS kol FROM primka_stavke
                    LEFT JOIN primka ON primka.broj_primke=primka_stavke.broj_primke AND primka.is_kalkulacija='False'
                    WHERE roba_prodaja.sifra=primka_stavke.sifra AND primka.is_kalkulacija='False' AND datum>'@datum'),0)
                    /*KALKULACIJA*/
                    +coalesce((SELECT SUM(kolicina) AS kol FROM primka_stavke
                    LEFT JOIN primka ON primka.broj_primke=primka_stavke.broj_primke AND primka.is_kalkulacija='True'
                    WHERE roba_prodaja.sifra=primka_stavke.sifra AND primka.is_kalkulacija='True' AND datum>'@datum'),0)
                    /*OTPIS*/
                    -coalesce((SELECT SUM(CAST(REPLACE(kolicina,',','.') AS numeric)) AS kol FROM povrat_robe_stavke
                    LEFT JOIN povrat_robe ON povrat_robe.broj=povrat_robe_stavke.broj
                    WHERE roba_prodaja.sifra=povrat_robe_stavke.sifra AND datum>'@datum'),0)
                    /*RAČUNI*/
                    -coalesce((
                    SELECT SUM(CAST(REPLACE(caffe_normativ.kolicina,',','.') AS numeric)*coalesce((CAST(REPLACE(racun_stavke.kolicina,',','.') AS numeric))))
                    FROM racun_stavke
                    LEFT JOIN racuni ON racuni.broj_racuna=racun_stavke.broj_racuna AND racuni.godina=racun_stavke.godina AND racuni.id_ducan=racun_stavke.id_ducan AND racuni.id_kasa=racun_stavke.id_blagajna
                    LEFT JOIN caffe_normativ ON caffe_normativ.sifra=racun_stavke.sifra_robe
                    WHERE caffe_normativ.sifra_normativ=roba_prodaja.sifra AND racuni.datum_racuna>'@datum'
                    ),0)

                    /*MS IZLAZ*/
                    -coalesce((SELECT SUM(medu_poslovnice.kolicina) as kolicina FROM medu_poslovnice
                    WHERE medu_poslovnice.iz_poslovnice='DU' AND medu_poslovnice.sifra=roba_prodaja.sifra AND datum>'@datum'),0)

                    /*MS ULAZ*/
                    +coalesce((SELECT SUM(medu_poslovnice.kolicina) as kolicina FROM medu_poslovnice
                    WHERE medu_poslovnice.u_poslovnicu='DU' AND medu_poslovnice.sifra=roba_prodaja.sifra AND datum>'@datum'),0)),4)  as kol
                    FROM roba_prodaja ORDER BY naziv;";

            sql = sql.Replace("@datum", datumInventure.ToString("yyyy-MM-dd H:mm:ss")).Replace("+", "zbroj");

            #region OVAJ DIO RADI KONEKCIJU NA BAZU IZ PRETHODNE GODINE

            Until.classFukcijeZaUpravljanjeBazom B = new Until.classFukcijeZaUpravljanjeBazom("CAFFE", "DB");
            string _trenutna_baza    = B.UzmiBazuKojaSeKoristi();
            string _prethodna_godina = "";

            if (_trenutna_baza.Length == 6)
            {
                int godina;
                if (int.TryParse(_trenutna_baza.Remove(0, 2), out godina))
                {
                    _prethodna_godina = _trenutna_baza.Remove(2) + (godina - 1).ToString();
                }
            }

            //U ovaj dio ulazi samo ako postoji baza koja je u varijabli "_prethodna_godina"
            DataTable DTprethodna_godina = new DataTable();
            DataSet   DStemp             = new DataSet();
            if (B.GodinaPostoji(_prethodna_godina))
            {
                if (classSQL.remoteConnection.State.ToString() != "Closed")
                {
                    classSQL.remoteConnection.Close();
                }
                NpgsqlConnection remoteConnection = new NpgsqlConnection(classSQL.remoteConnectionString.Replace(_trenutna_baza, _prethodna_godina));
                if (remoteConnection.State.ToString() == "Closed")
                {
                    remoteConnection.Open();
                }
                NpgsqlDataAdapter da = new NpgsqlDataAdapter(sql.Replace("+", "||").Replace("[", "\"").Replace("]", "\"").Replace("zbroj", "+"), remoteConnection);
                DStemp.Reset();
                da.Fill(DStemp);
                remoteConnection.Close();
                DTprethodna_godina = DStemp.Tables[0];
            }

            #endregion OVAJ DIO RADI KONEKCIJU NA BAZU IZ PRETHODNE GODINE

            List <DataTable> Ldt = new List <DataTable>();
            Ldt.Add(DTovaGodina);
            Ldt.Add(DTprethodna_godina);
            return(Ldt);
        }