private static DateTime PredvidiDanNarudzbe(Sloj_pristupa_podacima.Artikli_na_skladistu ans, int sljedecaNarudzba, int kolicinaNarudzbe) { Sloj_pristupa_podacima.Artikl artikl = Sloj_pristupa_podacima.UpravljanjeSkladistem.UpravljanjeSkladistemDAL.DohvatiArtikl(ans.artikl); List <Sloj_pristupa_podacima.Stavke_dokumenta> stavke = Sloj_pristupa_podacima.UpravljanjeSkladistem.UpravljanjeSkladistemDAL.DohvatiStavkeDokumentaOdabranogArtikla(artikl, INTERVAL_NARUDZBE); if (stavke.Count > 0) { Sloj_pristupa_podacima.Dokument d3 = Sloj_pristupa_podacima.UpravljanjeSkladistem.UpravljanjeSkladistemDAL.DohvatiDokument(stavke.Last().dokument); DateTime vrijemeZadnjeNarudzbe = d3.datum_izdavanja; int trenutnaKolicina = ans.kolicina; while (true) { if (trenutnaKolicina - kolicinaNarudzbe >= MINIMALNA_KOLICINA) { trenutnaKolicina -= kolicinaNarudzbe; vrijemeZadnjeNarudzbe = vrijemeZadnjeNarudzbe.AddDays(sljedecaNarudzba); } else { break; } } return(vrijemeZadnjeNarudzbe); } else { return(DateTime.Now.AddDays(30)); } }
private static int ProsjecnoVrijemePoNarudzbi(Sloj_pristupa_podacima.Artikli_na_skladistu ans) { Sloj_pristupa_podacima.Artikl artikl = Sloj_pristupa_podacima.UpravljanjeSkladistem.UpravljanjeSkladistemDAL.DohvatiArtikl(ans.artikl); int ukupnoDanaProdaje = Sloj_pristupa_podacima.UpravljanjeSkladistem.UpravljanjeSkladistemDAL.BrojRacunaProdanogArtikala(artikl); int sumaIntervalaNarudzbe = 0; if (ukupnoDanaProdaje > 0) { List <Sloj_pristupa_podacima.Stavke_dokumenta> stavke = Sloj_pristupa_podacima.UpravljanjeSkladistem.UpravljanjeSkladistemDAL.DohvatiStavkeDokumentaOdabranogArtikla(artikl, INTERVAL_NARUDZBE); for (int i = stavke.Count - 1; i > 0; i--) { Sloj_pristupa_podacima.Dokument d1 = Sloj_pristupa_podacima.UpravljanjeSkladistem.UpravljanjeSkladistemDAL.DohvatiDokument(stavke[i].dokument); Sloj_pristupa_podacima.Dokument d2 = Sloj_pristupa_podacima.UpravljanjeSkladistem.UpravljanjeSkladistemDAL.DohvatiDokument(stavke[i - 1].dokument); int brojDana = d1.datum_izdavanja.Subtract(d2.datum_izdavanja).Days; sumaIntervalaNarudzbe += brojDana; } int kolicnik = sumaIntervalaNarudzbe /= ukupnoDanaProdaje; if (kolicnik > 0) { return(kolicnik); } else { return(1); } } return(10); }
private static int AverageKolicineNarudzbe(Sloj_pristupa_podacima.Artikli_na_skladistu ans) { Sloj_pristupa_podacima.Artikl artikl = Sloj_pristupa_podacima.UpravljanjeSkladistem.UpravljanjeSkladistemDAL.DohvatiArtikl(ans.artikl); int kolicina = Sloj_pristupa_podacima.UpravljanjeSkladistem.UpravljanjeSkladistemDAL.BrojProdanihArtikala(artikl); int brojRacuna = Sloj_pristupa_podacima.UpravljanjeSkladistem.UpravljanjeSkladistemDAL.BrojRacunaProdanogArtikala(artikl); if (kolicina > 0 && brojRacuna > 0) { return((int)kolicina / (int)brojRacuna); } return(1); }
public static string PredvidiVrijemeNarudzbe(Sloj_pristupa_podacima.Artikli_na_skladistu ans) { Sloj_pristupa_podacima.Artikl artikl = Sloj_pristupa_podacima.UpravljanjeSkladistem.UpravljanjeSkladistemDAL.DohvatiArtikl(ans.artikl); MINIMALNA_KOLICINA = artikl.minimalna_kolicina; MINIMALNA_DONJA_GRANICA_U_DANIMA = artikl.vrijeme_dostave; if (MINIMALNA_KOLICINA >= ans.kolicina) { return(DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss")); } else { int prosjecnoVrijemeNarudzbe = ProsjecnoVrijemePoNarudzbi(ans); int prosjecnaKolicinaNarudzbe = AverageKolicineNarudzbe(ans); DateTime vrijemeNarudzbe = PredvidiDanNarudzbe(ans, prosjecnoVrijemeNarudzbe, prosjecnaKolicinaNarudzbe); if (vrijemeNarudzbe.AddDays(-MINIMALNA_DONJA_GRANICA_U_DANIMA) <= DateTime.Now) { return(DateTime.Now.ToString()); } else { return(vrijemeNarudzbe.AddDays(-MINIMALNA_DONJA_GRANICA_U_DANIMA).ToString("dd.MM.yyyy HH:mm:ss")); } } }
public static void DodajRed(Form forma, Sloj_pristupa_podacima.Artikli_na_skladistu ans, string datum, Korisnik korisnik) { Sloj_pristupa_podacima.Artikl artikl = Sloj_pristupa_podacima.UpravljanjeSkladistem.UpravljanjeSkladistemDAL.DohvatiArtikl(ans.artikl); Label lblNaziv = new Label(); lblNaziv.ForeColor = Color.LightGray; lblNaziv.Text = artikl.naziv_artikla; lblNaziv.Location = new Point(20, INITIAL_VERT + VERT_SPACE); Label lblDatum = new Label(); lblDatum.ForeColor = Color.LightGray; lblDatum.Text = datum; lblDatum.Location = new Point(INITIAL_HORIZ + HORIZ_SPACE, INITIAL_VERT + VERT_SPACE); Button btnNaruci = new Button(); btnNaruci.Text = "Naruči"; btnNaruci.ForeColor = Color.LightGray; btnNaruci.FlatStyle = FlatStyle.Flat; btnNaruci.FlatAppearance.BorderSize = 0; if (ProvjeriDaLiJeMoguceNaruciti(datum)) { btnNaruci.Enabled = true; } else { btnNaruci.Enabled = false; } btnNaruci.Click += (s, e) => { Sloj_pristupa_podacima.Dokument narudzba = new Sloj_pristupa_podacima.Dokument(); try { narudzba.datum_izdavanja = DateTime.Now; narudzba.opis_dokumenta = "Narudzba za " + artikl.naziv_artikla; narudzba.ukupni_saldo = artikl.cijena_artikla; narudzba.tip_dokumenta = 2; narudzba.korisnik = korisnik.id_korisnik; narudzba.zaposlenik = Sesija.PrijavljenKorisnik.id_korisnik; Sloj_pristupa_podacima.UpravljanjeNarudzbama.UpravljanjeNarudzbamaDAL.KreirajNarudzbu(narudzba); Sloj_pristupa_podacima.Usluga usluga = new Sloj_pristupa_podacima.Usluga(); usluga.naziv_usluge = narudzba.opis_dokumenta; usluga.vrsta_usluge = 1; Sloj_pristupa_podacima.Upravljanje_uslugama.UpravljanjeUslugamaDAL.KreiranjeUsluge(usluga); Sloj_pristupa_podacima.Stavke_dokumenta stavke_Dokumenta = new Sloj_pristupa_podacima.Stavke_dokumenta(); stavke_Dokumenta.usluga = Sloj_pristupa_podacima.Upravljanje_uslugama.UpravljanjeUslugamaDAL.VratiZadnjiUnos(usluga.naziv_usluge).id_usluga; stavke_Dokumenta.dokument = Sloj_pristupa_podacima.UpravljanjeNarudzbama.UpravljanjeNarudzbamaDAL.VratiZadnjiRacun(narudzba).id_dokument; stavke_Dokumenta.artikl = artikl.id_artikl; Sloj_pristupa_podacima.UpravljanjeNarudzbama.UpravljanjeNarudzbamaDAL.KreiranjeStavkeDokumenta(stavke_Dokumenta); Sloj_pristupa_podacima.Obavijest obavijest = new Sloj_pristupa_podacima.Obavijest(); obavijest.Korisnik = korisnik.id_korisnik; obavijest.Naslov = "Kreirana narudzba"; obavijest.Opis = narudzba.opis_dokumenta; obavijest.Procitano = 0; obavijest.Vrijeme_kreiranja = DateTime.Now; obavijest.Zaposlenik = Sesija.PrijavljenKorisnik.id_korisnik; Sloj_pristupa_podacima.UpravljanjeObavijestima.UpravljanjeObavijestimaDAL.KreirajObavijest(obavijest); Mailer.PosaljiObavijestNaMail(korisnik, narudzba.opis_dokumenta, "Kreirana narudzba"); } catch (Exception) { MessageBox.Show("Mail nije poslan!"); } }; btnNaruci.Location = new Point(INITIAL_HORIZ + 400, INITIAL_VERT + VERT_SPACE); INITIAL_VERT += VERT_SPACE; forma.Controls.Add(lblNaziv); sveKontrolePredikcije.Add(lblNaziv); forma.Controls.Add(lblDatum); sveKontrolePredikcije.Add(lblDatum); forma.Controls.Add(btnNaruci); sveKontrolePredikcije.Add(btnNaruci); }