public Korisno() { PCPOS.Until.classFukcijeZaUpravljanjeBazom baza = new Until.classFukcijeZaUpravljanjeBazom("CAFFE", "DB"); GodinaKojaSeKoristiUbazi = baza.UzmiGodinuKojaSeKoristi(); }
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); }