Advertisement
Guest User

Untitled

a guest
May 7th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 107.69 KB | None | 0 0
  1. <?php
  2.  
  3. class DokumentBaza extends DB {
  4.  
  5. private $conn;
  6.  
  7. /**
  8. * Uzima sve oblasti u dokumentu, npr. zaglavlje, stavke1, stavke2...
  9. *
  10. * @param string $ime_dok
  11. * @param string $param
  12. * @return array
  13. */
  14. public function __construct($config = null) {
  15. parent::__construct($config);
  16. }
  17.  
  18. function uzmi_oblasti_dok($ime_dok, $param) {
  19. $oblasti = array();
  20.  
  21. $sql_query = "SELECT u.Ime, u.TUD, u.Tabela, webBrojRedova as MaxHeight, u.levo as WebLeft, u.vrh as WebTop,u.Width,u.height "
  22. . " FROM Upiti as u WHERE NazivDokumenta='$ime_dok' AND Ime LIKE '{$param}%' ORDER BY u.TUD";
  23. $rezultat = $this->query($sql_query);
  24. while ($red = $this->fetch($rezultat)) {
  25. $tmp = array();
  26. $ime_oblasti = str_replace($param, '', $red[0]);
  27.  
  28. $tmp["tabela"] = $red['Tabela'];
  29. $tmp["TUD"] = $red['TUD'];
  30. $tmp["MaxHeight"] = $red['MaxHeight'];
  31. $tmp["WebLeft"] = $red['WebLeft'];
  32. $tmp["WebTop"] = $red['WebTop'];
  33. $tmp["Width"] = $red['Width'];
  34. $tmp["height"] = $red['height'];
  35. $tmp["BrojVidljivih"] = $this->uzmi_broj_vidljivih($ime_dok, $ime_oblasti);
  36. $selekt = $this->uzmi_select_za_oblast($ime_dok, $param . $ime_oblasti);
  37. $tmp["SELECT"] = $selekt;
  38. $tmp["ImeOblasti"] = $ime_oblasti;
  39. $tmp["OblastOriginalno"] = $red['Ime'];
  40. $oblasti[$ime_oblasti] = $tmp;
  41. }
  42. if (empty($oblasti)) {
  43. Log::DATABASE_FATAL_ERROR($sql_query);
  44. throw new Exception('Greska u funkciji uzmi oblasti dok!');
  45. }
  46. return $oblasti;
  47. }
  48.  
  49. /**
  50. * Uzima sve oblasti u dokumentu, npr. zaglavlje, stavke1, stavke2...
  51. *
  52. * @param string $ime_dok
  53. * @param string $param
  54. * @return array
  55. */
  56. function uzmi_oblast_dok($ime_dok, $param, $TUD) {
  57. $oblasti = array();
  58.  
  59. $sql_query = "SELECT u.Ime,u.Upit, u.TUD, u.Tabela "
  60. . " FROM Upiti as u WHERE NazivDokumenta='$ime_dok' AND TUD=$TUD AND Ime LIKE '{$param}%' ORDER BY u.TUD";
  61.  
  62. $rezultat = $this->query($sql_query);
  63. while ($red = $this->fetch($rezultat)) {
  64. $ime_oblasti = str_replace($param, '', $red[0]);
  65. $oblasti["ImeOblasti"] = $ime_oblasti;
  66. $oblasti["tabela"] = $red['Tabela'];
  67. $oblasti["TUD"] = $red['TUD'];
  68. $oblasti["upit"] = $red['Upit'];
  69.  
  70. // $tmp["MaxHeight"] = $red['MaxHeight'];
  71. // $tmp["WebLeft"] = $red['WebLeft'];
  72. // $tmp["WebTop"] = $red['WebTop'];
  73. // $tmp["Width"] = $red['Width'];
  74. // $tmp["height"] = $red['height'];
  75. // $tmp["BrojVidljivih"] = $this->uzmi_broj_vidljivih($ime_dok, $ime_oblasti);
  76. // $selekt = $this->uzmi_select_za_oblast($ime_dok, $param . $ime_oblasti);
  77. // $tmp["SELECT"] = $selekt;
  78. // $oblasti[$ime_oblasti] = $tmp;
  79. }
  80. if (empty($oblasti)) {
  81. Log::DATABASE_FATAL_ERROR($sql_query);
  82. throw new Exception('Greska u funkciji uzmi oblasti dok!');
  83. }
  84. return $oblasti;
  85. }
  86.  
  87. /**
  88. * Uzima oblasti u dokumentu koje se odnose na stavke
  89. *
  90. * @param string $ime_dok
  91. * @return array
  92. */
  93. function uzmi_tabele_dok($ime_dok) {
  94. $sql_query = "SELECT Substring(u.Ime,5,len(u.Ime)-4) as Ime,Upit as selekt,TUD,idDok FROM Upiti as u,RefreshGrida as rg
  95. where NazivDokumenta='$ime_dok' AND TUD>0 AND Dokument=NazivDokumenta AND ImeUpita like'%Stavke%' AND Ime LIKE 'GgRr%'
  96. AND Substring(u.Ime,5,len(u.Ime)-4)=ImeUpita ORDER BY TUD";
  97. $rezultat = $this->query($sql_query);
  98. $tbl = array();
  99. while ($red = $this->fetch_object($rezultat)) {
  100. $tmp = array();
  101. $tmp["ImeTabele"] = str_replace("GgRr", "", $red->Ime);
  102. $tmp["SELEKT"] = $red->selekt;
  103. $tmp["IdSegment"] = $red->idDok;
  104. $tbl["$red->TUD"] = $tmp;
  105. }
  106. if (empty($tbl)) {
  107. Log::DATABASE_FATAL_ERROR($sql_query);
  108. throw new Exception('Greska u funkciji uzmi tabele dok!');
  109. }
  110. return $tbl;
  111. }
  112.  
  113. /**
  114. * Vraca podatke o sifarniku
  115. *
  116. * @param string $naziv_dok
  117. * @return array
  118. */
  119. function init_sif_dok($naziv_dok) {
  120. $data = array();
  121. $sql_query = "SELECT ID_SifarnikDokumenta, Vrsta, NacinRegistracije, KnjiziSe, UlazniIzlazni FROM SifarnikDokumenta where Naziv='$naziv_dok'";
  122. $rezultat = $this->query($sql_query);
  123. while ($red = $this->fetch_Assoc($rezultat)) {
  124. $data = $red;
  125. }
  126. if (empty($data)) {
  127. Log::DATABASE_FATAL_ERROR($sql_query);
  128. throw new Exception('Greska u funkciji init sif dok!');
  129. }
  130. return $data;
  131. }
  132.  
  133. /**
  134. * Uzima dozvole za dati dokument
  135. *
  136. * @param string $naziv_dok
  137. * @param integer $idke
  138. * @return array
  139. */
  140. function provera_dozvola($naziv_dok, $idke) {
  141. $idorg = $_SESSION[idorg]; ///$this->uzmi_idorg_rad($idke);
  142. $dozvole = array();
  143. $dozvole["Proknjizen"] = 0;
  144. $dozvole["Unos"] = 0;
  145. $dozvole["Izmena"] = 0;
  146. $dozvole["Brisanje"] = 0;
  147. $dozvole["Storno"] = 0;
  148. $dozvole["Knjizenje"] = 0;
  149.  
  150. $sql_query = "select Proknjizen,Unos,Izmena,Brisanje,Storno,Knjizenje from grupa as g "
  151. . " where g.Naziv = '" . $naziv_dok . "' and g.id_kadrovskaevidencija=" . $idke;
  152. $rezultat = $this->query($sql_query);
  153. $red = $this->fetch($rezultat);
  154. if (empty($red)) {
  155. $sql_query = "select Proknjizen,Unos,Izmena,Brisanje,Storno,Knjizenje from grupa as g "
  156. . " where g.ID_OrganizacionaStruktura=" . $idorg . " AND g.Naziv = '" . $naziv_dok . "'";
  157. $rezultat = $this->query($sql_query);
  158. $red = $this->fetch($rezultat);
  159. }
  160. if (!empty($red)) {
  161. $dozvole["Proknjizen"] = (int) $red[0];
  162. $dozvole["Unos"] = (int) $red[1];
  163. $dozvole["Izmena"] = (int) $red[2];
  164. $dozvole["Brisanje"] = (int) $red[3];
  165. $dozvole["Storno"] = (int) $red[4];
  166. $dozvole["Knjizenje"] = (int) $red[5];
  167. }
  168.  
  169. return $dozvole;
  170. }
  171.  
  172. /**
  173. * Proverava stanje za dati dokument
  174. *
  175. * @param string $naziv_dok
  176. * @param integer $id_dok
  177. * @return string
  178. */
  179. function proveristanje($naziv_dok, $id_dok, $TrebaProvera) {
  180. if (strpos($naziv_dok, "Lot") > 0 && $TrebaProvera != 3) {
  181. $this->sp_proverastanja($naziv_dok, $id_dok);
  182. $PrStanja = "Select dbo.ProveraStanjaF() as Stanje";
  183. $rezultat = $this->query($PrStanja);
  184. $red = $this->fetch($rezultat);
  185. if (trim($red[0]) == "") {
  186. $this->sp_proverastanjalot($naziv_dok, $id_dok);
  187. $PrStanjaLot = "Select dbo.LotProveraStanjaF() as Stanje";
  188. }
  189. } elseif (strpos($naziv_dok, "Lot") > 0 && $TrebaProvera == 3) {
  190. $this->sp_proverastanjalot($naziv_dok, $id_dok);
  191. $PrStanjaLot = "Select dbo.LotProveraStanjaF() as Stanje";
  192. } else {
  193. $this->sp_proverastanja($naziv_dok, $id_dok);
  194. $PrStanja = "Select dbo.ProveraStanjaF() as Stanje";
  195. }
  196. $rezultat = $this->query($PrStanja);
  197. $red = $this->fetch($rezultat);
  198. return $red[0];
  199. }
  200.  
  201. /**
  202. * Vraca decimalni broj u tekstualnom formatu
  203. *
  204. * @param float $KojiBroj
  205. * @param string $KojaValuta
  206. * @return string
  207. */
  208. public function BrojSlovima($KojiBroj, $KojaValuta) {
  209. $U = $KojiBroj;
  210. $CeoDeo = ($U - fmod($U, 100)) / 100;
  211. if ($CeoDeo < 0) {
  212. $Broj = -1 * $CeoDeo;
  213. } else {
  214. $Broj = $CeoDeo;
  215. }
  216.  
  217. $Ceo = ($Broj - fmod($Broj, 1000)) / 1000;
  218. $k = 1;
  219. $Ostatak = fmod($Broj, 1000);
  220.  
  221. while ($Broj != 0) {
  222. $OstOst = fmod($Ostatak, 100);
  223. $CeoOst = ($Ostatak - fmod($Ostatak, 100)) / 100;
  224. if ($OstOst < 10) {
  225. $kveri = " SELECT * FROM Brojevi Where BR=" . $OstOst;
  226. $rez = $this->query($kveri);
  227. $red = $this->fetch($rez);
  228. if ($k == 1) {
  229. if ($OstOst != 0) {
  230. $Slovima = $red[$k];
  231. }
  232. } else {
  233. $Slovima = $red[$k] . $Slovima;
  234. }
  235. } else // ostatak nije<10 {
  236. if ($OstOst < 20 && $OstOst > 10) {
  237. $kveri = " SELECT * FROM Brojevi Where BR=" . $OstOst;
  238. $rez = $this->query($kveri);
  239. $red = $this->fetch($rez);
  240. if ($k == 1) {
  241. $Slovima = $red[1]; //Pretraga!jedinica;
  242. } else {
  243. $Slovima = $red[$k] . $Slovima;
  244. }
  245. } else // ostost nije izmedju 10 i 20 {
  246. if ($k == 1) {
  247. $pom = fmod($OstOst, 10);
  248. if ($pom != 0) {
  249. $kveri = " SELECT * FROM Brojevi Where BR=" . $pom;
  250. $rez = $this->query($kveri);
  251. $red = $this->fetch($rez);
  252. $Slovima = $red[$k];
  253. }
  254. $pom = ($OstOst - fmod($OstOst, 10)) / 10;
  255. $kveri = " SELECT * FROM Brojevi Where BR=" . $pom;
  256. $rez = $this->query($kveri);
  257. $red = $this->fetch($rez);
  258. $Slovima = $red[2] . $Slovima;
  259. } else {
  260. $pom = fmod($OstOst, 10);
  261. if ($pom !== 0) {
  262. $kveri = " SELECT * FROM Brojevi Where BR=" . $pom;
  263. $rez = $this->query($kveri);
  264. $red = $this->fetch($rez);
  265. $Slovima = $red[$k] . $Slovima;
  266. }
  267. $pom = ($OstOst - fmod($OstOst, 10)) / 10;
  268. if ($k != 1 && fmod($OstOst, 10) == 0) {
  269. $kveri = " SELECT * FROM Brojevi Where BR=0";
  270. $rez = $this->query($kveri);
  271. $red = $this->fetch($rez);
  272. $Slovima = $red[$k] . $Slovima;
  273. }
  274. $kveri = " SELECT * FROM Brojevi Where BR=" . $pom;
  275. $rez = $this->query($kveri);
  276. $red = $this->fetch($rez);
  277. $Slovima = $red[2] . $Slovima; //Pretraga!desetica + $Slovima;
  278. }
  279. if ($CeoOst == -1) {
  280. $CeoOst = 0;
  281. }
  282. if ($CeoOst != 0) {
  283. $kveri = " SELECT * FROM Brojevi Where BR=" . $CeoOst;
  284. $rez = $this->query($kveri);
  285. $red = $this->fetch($rez);
  286. $Slovima = $red[3] . $Slovima; //Pretraga!STOTINA + $Slovima;
  287. }
  288. if ($k == 1) {
  289. $k = $k + 3;
  290. } else if ($k == 4) {
  291. $k++;
  292. } else {
  293. $k = 1;
  294. }
  295. $Broj = $Ceo;
  296. $Ostatak = fmod($Ceo, 1000);
  297. $Ceo = ($Ceo - fmod($Ceo, 1000)) / 1000;
  298. } // kraj while
  299. $Slovima = $Slovima . " " . $KojaValuta . " i " . round(fmod($U, 100)) . "/100";
  300. return $Slovima;
  301. }
  302.  
  303. /**
  304. * Vrsi proveru dozvola za otvaranje dokumenta i povlacenje sa prethodnika za dokumenta
  305. *
  306. * @param string $naziv_dok $float = 0.123; $string = sprintf("%.3f", $float);
  307. * @param integer $iddok
  308. * @return boolean
  309. */
  310. public function dokumentstablo($naziv_dok, $iddok) {
  311. //Podaci o dokumentu koji otvaramo
  312. $Dokument = $naziv_dok;
  313. $ProveraDok = "select distinct d.* from dokumentatotali as d WITH(NOLOCK)
  314. where d.id_dokumentatotali=$iddok";
  315. $rezultat_prethodni = $this->query($ProveraDok);
  316. while ($red = $this->fetch_object($rezultat_prethodni)) {
  317. $Predhodnik = $red->Predhodni;
  318. $ID_Predhodnik = $red->ID_Predhodni;
  319. }
  320. $rssifdok = "Select NacinRegistracije,Vrsta,ulazniizlazni,OdakleSePreuzima From SifarnikDokumenta Where naziv = '$naziv_dok'";
  321. $rezultat = $this->query($rssifdok);
  322. $red = $this->fetch_object($rezultat);
  323. $NazivKlona = $red->ulazniizlazni;
  324. $NacinRegistracije = $red->NacinRegistracije;
  325. $OdakleSePreuzima = trim($red->OdakleSePreuzima);
  326.  
  327. $poruka = $this->provera_dozvola($Dokument, $_SESSION[idke]);
  328. if (!$poruka) { // BORKA dodati proveru sadrzaja dozvola
  329. alertporuka("Nije dozvoljen pristup");
  330. return $poruka;
  331. } else {
  332. if ($NacinRegistracije == "B") {
  333. $TrebaProvera = 0;
  334. $postojiuzaglavlju = true;
  335. $RsRecnikPodataka = "Select OOrderBy as TrebaProvera from RecnikPodataka where dokument = '$NazivKlona' and OOrderBy>0 and OOrderBy<4"; //treba provera stanja
  336. $rezultat = $this->query($RsRecnikPodataka);
  337. $red = $this->fetch($rezultat);
  338. if (!empty($red)) {
  339. $TrebaProvera = $red[0];
  340. }
  341. // $postojiuzaglavlju = true;
  342. if ($Dokument == "OpisTransakcije") {
  343. $rsDaLiPostojiUZaglavlju = "select * from OpisTransakcije where ID_DokumentaView = $iddok";
  344. } else {
  345. if ($Dokument == "NaklogGlavneKnjige") {
  346. $rsDaLiPostojiUZaglavlju = "select * from NalogGlavneKnjige where ID_DokumentaView = $iddok";
  347. } else {
  348. $rsDaLiPostojiUZaglavlju = "select * from {$NazivKlona}Totali where ID_{$NazivKlona}Totali = $iddok";
  349. }
  350. }
  351. $rezultat = $this->query($rsDaLiPostojiUZaglavlju);
  352. $red = $this->fetch($rezultat);
  353. if (empty($red)) {
  354. $postojiuzaglavlju = false;
  355. }
  356. }
  357.  
  358. if (!$postojiuzaglavlju) {
  359. if ($NacinRegistracije == "B" || trim($OdakleSePreuzima) != "") {
  360. switch (trim($OdakleSePreuzima)) {
  361. case "P":
  362. if ($Predhodnik != "" && $ID_Predhodnik > 1) {
  363. $Poruka = "Da li preuzimate podatke sa predhodnog dokumenta ?";
  364. $Predhodi = false;
  365. if (!isset($_REQUEST["odgovor"])) {
  366. confirmporuka($Poruka);
  367. die();
  368. } else if ($_REQUEST["odgovor"] == 1) {
  369. $Predhodi = True;
  370. }
  371. if ($Predhodi) {
  372. $IdDP = "select ds.naziv as Dokument , d.*,sd.ulazniizlazni from dokumenta as d, dokumentastablo as ds,SifarnikDokumenta as sd
  373. where ds.id_dokumentaStablo=d.id_DokumentaStablo and d.id_dokumenta= $ID_Predhodnik And sd.naziv = ds.naziv";
  374. $rezultatp = $this->query($IdDP);
  375. $redp = $this->fetch_object($rezultatp);
  376.  
  377. $naziv_dok_preth = $redp->ulazniizlazni;
  378. $id_dok_preth = $redp->ID_Dokumenta;
  379. // povlacenja podataka iz prethodnika
  380. $this->conn = $this->get_link();
  381. $this->conn->beginTransaction();
  382.  
  383. $this->sp_povucisapredhodnika($naziv_dok_preth, $NazivKlona, $id_dok_preth, $iddok);
  384. if ($naziv_dok == "KonacniRacun" || $naziv_dok == "PDVIzlazniRacunZaUsluge") {
  385. $ret = $this->conn->exec("update Racun set ID_Avansi = 1 Where ID_DokumentaView = $iddok");
  386. $ret = $this->conn->exec("update RacunZaUsluge set ID_AvansiIzvodi = 1 Where ID_DokumentaView = $iddok");
  387. }
  388. if ($naziv_dok == "KonacniUlazniRacun" || $naziv_dok == "UlazniAvansniRacun") {
  389. $ret = $this->conn->exec("update Racun set BrUr = '' Where ID_DokumentaView = $iddok");
  390. }
  391. if (strpos($naziv_dok, "lazniJCI") > 0) {
  392. $ret = $this->conn->exec("update JCI set ID_RacunTotali = $id_dok_preth where id_DokumentaView = $iddok");
  393. }
  394. // provera stanja nakon povlacenja slogova sa predhodnika
  395. $provera = '';
  396. if ($TrebaProvera == 1) {
  397. $provera = $this->proveristanje($naziv_dok, $iddok);
  398. }
  399. if ($provera == '') {
  400. $this->commit();
  401.  
  402. $poruka = $this->sp_totali($NazivKlona, $iddok);
  403. if ($poruka) {
  404. $poruka = $this->sp_cene_i_stanje($iddok);
  405. }
  406. } else {
  407. $this->rollback();
  408. alertporuka($provera);
  409. return true;
  410. }
  411. return $poruka;
  412. } // kraj ima predhodnika
  413. }
  414. break;
  415. case "F":
  416. case "M":
  417. // if Not Proveri(IdDokView, NazivKlona) Then
  418. // pNalog = NazivKlona
  419. // pPrikaceniFajl = rssifdok!PutanjaZaCuvanje
  420. // Izvod.Label1.Caption = Dokument
  421. // Izvod.Label2.Caption = ProveraDok!Datum
  422. // Izvod.Tag = Str(IdDokView)
  423. // Izvod.Show
  424. // otvoren = True
  425. // Do
  426. // DoEvents
  427. // Loop Until Not (otvoren)
  428. // if trim(PorukaIzIzvoda) = "" Then
  429. // if Dokument = "KursnaLista" Then
  430. // AzurirajCarinskiKurs ProveraDok!Datum
  431. // End if
  432. // cnn1.Execute "TotaliZaDokument '" + trim(NazivKlona) + "', " + Str(IdDokView), adCmdStoredProc
  433. // Predhodi = True
  434. // else
  435. // DokumentStablo = False
  436. // End if
  437. break;
  438. } // kraj switch
  439. }
  440. } // kraj postoji u zaglavlju=false
  441. }
  442. // } // kraj postoji kursna lista
  443. return true;
  444. }
  445.  
  446. // public function DoradiPotrosnju($Fiddokview, $DatumP = null) {
  447. /**
  448. * @todo COMMENT
  449. *
  450. * @param integer $Fiddokview
  451. */
  452. public function DoradiPotrosnju($Fiddokview) {
  453. $rsd = "delete from NalogKooperantaSirovineStavke where id_Dokumentaview=" . $Fiddokview;
  454. $this->query($rsd);
  455. $rsd = "delete from NalogKooperantaSirovineUkupnoStavke where id_Dokumentaview=" . $Fiddokview;
  456. $this->query($rsd);
  457. $rsi = " insert into NalogKooperantaSirovineStavke(id_DokumentaView, ID_SirovinaView, Kolicina, ID_NormativView)"
  458. . " select " . $Fiddokview . " as id_DokumentaView, r.ID_SirovinaView,"
  459. . " (r.Kolicina*n.kolicina) as Kolicina, n.ID_NormativView"
  460. . " from NalogKooperantaStavke as n, ReceptiStavke as r,Recepti as rr "
  461. . " where n.ID_DokumentaView=" . $Fiddokview
  462. . " and n.id_normativview=r.id_DokumentaView"
  463. . " and n.id_normativview=rr.id_DokumentaView";
  464. $this->query($rsi);
  465. $rsu = " update NalogKooperantaSirovineStavke set ProsecnaNabavnaCena=c.ProsecnaNabavnaCena "
  466. . " from ceneartikalanaskladistimapred as c,NalogKooperanta as r,"
  467. . " NalogKooperantaSirovineStavke as rs, dokumenta as d "
  468. . " where r.ID_DokumentaView=d.ID_Dokumenta And"
  469. . " r.ID_DokumentaView=rs.ID_DokumentaView And "
  470. . " c.ID_ArtikliView=ID_SirovinaView And "
  471. . " c.Id_skladiste=r.ID_SkladisteIz and"
  472. . " c.Datum =(SELECT MAX(datum) from CeneArtikalanaskladistimaPred "
  473. . " Where CeneArtikalanaskladistimaPred.ID_ArtikliView = c.ID_ArtikliView "
  474. . " AND (Skl = C.Skl) AND datum <= d.Datum AND CeneArtikalanaskladistimaPred.ID_DokumentaView<>" . $Fiddokview . ") "
  475. . " and ID_CeneArtikalaNaSkladistimapred=(SELECT max(ID_CeneArtikalaNaSkladistimapred) "
  476. . " FROM CeneArtikalanaskladistimaPred WHERE CeneArtikalanaskladistimaPred.ID_ArtikliView = C.ID_ArtikliView "
  477. . " AND (Skl = C.Skl) AND datum = c.Datum ) AND "
  478. . " r.ID_DokumentaView=" . $Fiddokview;
  479. $this->query($rsu);
  480. $rsi = " insert into NalogKooperantaSirovineUkupnoStavke(id_DokumentaView, ID_SirovinaView,ProsecnaNabavnaCena ,Kolicina)"
  481. . " select " . $Fiddokview . " as id_DokumentaView, ID_SirovinaView,ProsecnaNabavnaCena ,sum(Kolicina)"
  482. . " from NalogKooperantaSirovineStavke as n where n.ID_DokumentaView=" . $Fiddokview
  483. . " group by id_DokumentaView, ID_SirovinaView,ProsecnaNabavnaCena";
  484. $this->query($rsi);
  485. $rsu = "update NalogKooperantaSirovineStavke set Uuser=" . $_SESSION[idke] . " where Id_DokumentaView=" . $Fiddokview;
  486. $this->query($rsu);
  487. $rsu = "update NalogKooperantaSirovineUkupnoStavke set Uuser=" . $_SESSION[idke] . " where Id_DokumentaView=" . $Fiddokview;
  488. $this->query($rsu);
  489. }
  490.  
  491. /**
  492. * Azurira carinski kurs
  493. *
  494. * @param string $ZaDatum
  495. */
  496. public function AzurirajCarinskiKurs($ZaDatum) {
  497. $numberOfWeeks = 1;
  498. $d = strtotime("+2 day", strtotime($ZaDatum));
  499. $d->modify('-' . $numberOfWeeks . ' weeks');
  500. $rsc = "Select id_sifrarnikValuta,Srednji from kursnalista where datum = '" . $d . "'";
  501. $rez = $this->query($rsc);
  502. while ($red = $this->fetch_object($rez)) {
  503. $rsu = "Update kursnalista set carinski=" . $red->Srednji
  504. . " where id_sifrarnikValuta=" . $red->ID_SifrarnikValuta . " AND datum='" + $ZaDatum + "'";
  505. $this->query($rsu);
  506. }
  507. }
  508.  
  509. /**
  510. * Provera dozvolu za rad sa proknjizenim dokumentima
  511. *
  512. * @param string $naziv_dok
  513. * @param integer $idke
  514. * @return integer
  515. */
  516. function provera_proknjizeno($naziv_dok, $idke) {
  517. $idorg = $this->uzmi_idorg_rad($idke);
  518. // $proknjizeno = 0;
  519. $sql_query = "select Proknjizen from grupa where Naziv = '$naziv_dok'
  520. and ID_OrganizacionaStruktura=$idorg";
  521. // $i = 0;
  522. $rezultat = $this->query($sql_query);
  523. $red = $this->fetch($rezultat);
  524. $proknjizeno = $red[0];
  525. return $proknjizeno;
  526. }
  527.  
  528. /**
  529. * @todo COMMENT
  530. *
  531. * @param string $operacija
  532. * @param integer $iddokview
  533. * @param string $unesenidatum
  534. * @return boolean
  535. */
  536. function provera_dokumentaidatuma($operacija, $iddokview, $unesenidatum) {
  537. $sql_query = "select s.ulazniizlazni as NazivDokumenta,d.BrojDokumenta as BrDok,NacinRegistracije as nr,
  538. d.Proknjizeno as p ,Knjizise,d.Datum,d.ttime
  539. from Dokumenta as d WITH(NOLOCK), DokumentaStablo as ds WITH(NOLOCK), SifarnikDokumenta as s WITH(NOLOCK)
  540. where s.naziv=ds.Naziv and d.ID_DokumentaStablo = ds.ID_DokumentaStablo and d.ID_Dokumenta=$iddokview";
  541.  
  542. $rezultat = $this->query($sql_query);
  543. if (!$rezultat) { // ne postoji u dokumentima vec samo u totalima
  544. jsonPoruka("Dokument je arhiviran ne moze se menjati");
  545. return false;
  546. }
  547. $red = $this->fetch_object($rezultat);
  548. $BrojDokumenta = $red->BrDok;
  549. $status = trim($red->p);
  550. $NazivDokumenta = $red->NazivDokumenta;
  551.  
  552. if ($operacija == 'Brisanje' || $operacija == 'Izmena') {
  553. if ($status === 'Proknjizen') {
  554. $proknjizeno = $this->provera_proknjizeno($NazivDokumenta, $_SESSION['idke']);
  555. if ($proknjizeno == 0) { // nije dozvoljen rad sa proknjizenim dokumentima
  556. if ($operacija == 'Brisanje') {
  557. $Poruka = "Dokument proknjizen nije vam dozvoljena operacija:" . $operacija;
  558. jsonPoruka($Poruka);
  559. return false;
  560. }
  561. }
  562. }
  563. $findme = 'S';
  564. $n = strpos($BrojDokumenta, $findme);
  565. if ($n > 0) { // postoji S u broju dokumenta
  566. jsonPoruka("Nije dozvoljena operacija za storno dokument!");
  567. return false;
  568. }
  569. }
  570. //POKUSAJ PREMESTANJA DOKUMENTA IZ GODINE U GODINU ILI IZMENE-BRISANJE DOKUMENTA IZ PREDHODNE GODINE A PROSAO JE 01.03. tekuce godine
  571. // $n = 0;
  572. $findme = 'tvaranje';
  573. $n = strpos($status, $findme);
  574. if ($NazivDokumenta == "Normativ" || $NazivDokumenta == "SemaBilansa" || $NazivDokumenta == "OpisTransakcije" || $n > 0) {
  575.  
  576. } else { // dokumenta za koja se proverava godina
  577. if (strlen($unesenidatum) > 0) {
  578. $tekucagodina = intval(date("y"));
  579. $tekucimesec = intval(date("m"));
  580. $s11 = explode('.', $unesenidatum);
  581. $unesenagodina = intval($s11[2]);
  582. if ($unesenagodina < $tekucagodina && $tekucimesec > 2) {
  583. jsonPoruka("Zakljucena godina nije dozvoljena obrada !!!");
  584. die();
  585. }
  586. }
  587. if ($operacija == 'Izmena') {
  588. if (strlen($unesenidatum) > 0) {
  589. $s1 = explode('/', $BrojDokumenta);
  590. $s2 = explode('-', $s1[1]);
  591. $godinadokumenta = $s2[0];
  592. if (strlen($godinadokumenta) > 2) {
  593. $godinadokumenta = cint(subst($godinadokumenta, 2, 2));
  594. }
  595. if ($godinadokumenta <> $unesenagodina) {
  596. $Poruka = "Nije dozvoljena izmena datuma !!";
  597. jsonPoruka($Poruka);
  598. return false;
  599. }
  600. }
  601. }
  602. }
  603.  
  604. if ($status != 'Proknjizen' && $operacija == 'Storno') {
  605. jsonPoruka("Dokument nije proknjizen ne moze storno!!");
  606. return false;
  607. }
  608.  
  609. if ($operacija == 'Brisanje') {
  610. if ($status == 'Proknjizen') {
  611. jsonPoruka("Dokument je proknjizen ne moze brisanje!!");
  612. die();
  613. }
  614. // da li je predhodnik u nekom dokumentu
  615.  
  616. $sql_query = "select BrojDokumenta from dokumenta WITH (NOLOCK) where id_Predhodni=" . $iddokview;
  617. $rezultat = $this->query($sql_query);
  618. if ($rezultat) { // dokument jeste predhodnik
  619. while ($red = $this->fetch_object($rezultat)) {
  620. $Poruka = "Nije dozvoljeno brisanje, dokument je predhodnik dokumentu: " . $red->BrojDokumenta;
  621. jsonPoruka($Poruka);
  622. return false;
  623. }
  624. }
  625. // da li brisemo racune ukljucene u kalkulacij
  626. $sql_query = " SELECT BrojDokumenta as BD,ID_KalkulacijaUfStavke as IDK "
  627. . " FROM KalkulacijaUfStavke as r WITH (NOLOCK), Dokumenta as d WITH (NOLOCK)"
  628. . " WHERE d.ID_Dokumenta=r.ID_DokumentaView and "
  629. . " r.ID_UlazniRacunZaUslugeCeo=" . $iddokview
  630. . " union "
  631. . " SELECT BrojDokumenta as BD,ID_KalkulacijaUf as IDK "
  632. . " FROM KalkulacijaUf as r WITH (NOLOCK), Dokumenta as d WITH (NOLOCK)"
  633. . " WHERE d.ID_Dokumenta=r.ID_DokumentaView and "
  634. . " r.ID_UlazniRacunCeo=" . $iddokview;
  635. $rezultat = $this->query($sql_query);
  636. if ($rezultat) { // dokument jeste ukljucen u kalkulaciju
  637. while ($red = $this->fetch_object($rezultat)) {
  638. $Poruka = "Nije dozvoljeno brisanje, dokument je ukljucen u kalkulaciju : " . $red->BrojDokumenta;
  639. jsonPoruka($Poruka);
  640. return false;
  641. }
  642. }
  643. //provera ako je NalogGlavneKnjige dali je prazan
  644. $sql_query = "select * from NalogGlavneKnjigeStavke WITH (NOLOCK) where ID_DokumentaView=" . $iddokview;
  645. $rezultat = $this->query($sql_query);
  646. if ($rezultat) { // dokument jeste ukljucen u kalkulaciju
  647. while ($red = $this->fetch_object($rezultat)) {
  648. jsonPoruka("Nalog nije prazan, zabranjeno brisanje!!!");
  649. return false;
  650. }
  651. }
  652. }
  653. return true;
  654. }
  655.  
  656. /**
  657. * Uzima sve oblasti u dokumentu, npr. zaglavlje, stavke1, stavke2...
  658. *
  659. * @param string $ime_dok
  660. * @return array
  661. */
  662. function uzmi_segmente_dok($ime_dok) {
  663. $segmenti = array();
  664. $sql_query = "SELECT ImeUpita, TotaliDaNe, GridVezanDaNe, IdDok, Id_RefreshGrida FROM RefreshGrida where Dokument='$ime_dok'";
  665. $rezultat = $this->query($sql_query);
  666. while ($red = $this->fetch_Assoc($rezultat)) {
  667. $oblast = $red['ImeUpita'];
  668. $segmenti[$oblast] = $red;
  669. }
  670. if (empty($segmenti)) {
  671. throw new Exception("Prazni segmenti! Uzmi_segmente_dok!");
  672. }
  673. return $segmenti;
  674. }
  675.  
  676. /**
  677. * Uzima sve oblasti u dokumentu, npr. zaglavlje, stavke1, stavke2...
  678. *
  679. * @param string $ime_dok
  680. * @return array
  681. */
  682. function uzmi_segment_dok($ime_dok, $imesegmenta) {
  683. $segmenti = array();
  684. $sql_query = "SELECT ImeUpita, TotaliDaNe, GridVezanDaNe, IdDok, Id_RefreshGrida FROM RefreshGrida where Dokument='$ime_dok' And ImeUpita='$imesegmenta'";
  685. $rezultat = $this->query($sql_query);
  686. while ($red = $this->fetch_Assoc($rezultat)) {
  687. $segmenti = $red;
  688. }
  689. if (empty($segmenti)) {
  690. throw new Exception("Prazni segmenti! Uzmi_segmente_dok!");
  691. }
  692. return $segmenti;
  693. }
  694.  
  695. /**
  696. * Uzima select za datu oblast
  697. *
  698. * @param string $ime_dok
  699. * @param string $ime_oblasti
  700. * @return string
  701. */
  702. function uzmi_select_za_oblast($ime_dok, $ime_oblasti) {
  703. $rezultat = $this->query("SELECT Upit FROM Upiti where NazivDokumenta='$ime_dok' and Ime='$ime_oblasti'");
  704. $red = $this->fetch($rezultat);
  705. $selekt = $red[0];
  706.  
  707. if ($selekt === '') {
  708. throw new Exception("Prazan select! Uzmi select za oblast!");
  709. }
  710. return $selekt;
  711. }
  712.  
  713. /**
  714. * @todo COMMENT
  715. *
  716. * @param string $kveri
  717. * @return array
  718. */
  719. public function citaj_podatke($kveri) {
  720. try {
  721. $rez = $this->query($kveri);
  722. } catch (Exception $e) {
  723. return array();
  724. }
  725. $tmp = array();
  726. $red = $this->fetch($rez);
  727. if (!$red) {
  728. return $tmp;
  729. }
  730.  
  731. foreach ($red as $key => $value) {
  732. if (!is_int($key)) {
  733. $tmp[$key] = trim(konverzija_iz_yuscii($value));
  734. }
  735. }
  736. return array_change_key_case($tmp);
  737. }
  738.  
  739. /**
  740. * @todo COMMENT
  741. *
  742. * @return array
  743. */
  744. public function uzmi_vrste_dok() {
  745. $kveri = "SELECT SifarnikDokumenta.ID_SifarnikDokumenta, SifarnikDokumenta.Naziv
  746. FROM SifarnikDokumenta, DokumentaStablo
  747. WHERE SifarnikDokumenta.Naziv = DokumentaStablo.Naziv
  748. AND DokumentaStablo.CCopy = 0
  749. AND SifarnikDokumenta.NacinRegistracije = 'B' ORDER BY SifarnikDokumenta.Naziv";
  750. $data = array();
  751. $brojac = 0;
  752. $rez = $this->query($kveri);
  753. while ($red = $this->fetch($rez)) {
  754. $data [$brojac]["id"] = $red[0];
  755. $data [$brojac]["ime"] = $red[1];
  756. $brojac++;
  757. }
  758. return $brojac === 0 ? '' : $data;
  759. }
  760.  
  761. /**
  762. * Vraca nacin registracije dokumenta
  763. *
  764. * @param string $naziv_dokumenta
  765. * @return string
  766. */
  767. public function uzmi_nacin_reg($naziv_dokumenta) {
  768. $kveri = "SELECT NacinRegistracije FROM SifarnikDokumenta
  769. WHERE SifarnikDokumenta.Naziv = '" . $naziv_dokumenta . "'";
  770. $nacinreg = '';
  771. $rez = $this->query($kveri);
  772. while ($red = $this->fetch($rez)) {
  773. $nacinreg = $red[0];
  774. }
  775. return $nacinreg;
  776. }
  777.  
  778. /**
  779. * Vraca naziv klona datog dokumenta
  780. *
  781. * @param string $naziv_dokumenta
  782. * @return string
  783. */
  784. public function uzmi_naziv_klona($naziv_dokumenta) {
  785. $kveri = "SELECT UlazniIzlazni as klon FROM SifarnikDokumenta
  786. WHERE SifarnikDokumenta.Naziv = '" . $naziv_dokumenta . "'";
  787. $klon = '';
  788. $rez = $this->query($kveri);
  789. while ($red = $this->fetch($rez)) {
  790. $klon = $red[0];
  791. }
  792. return $klon;
  793. }
  794.  
  795. /**
  796. * Vraca format datog polja
  797. *
  798. * @param string $imesegmenta
  799. * @param string $polje
  800. * @return string
  801. */
  802. public function uzmi_format_polja($imesegmenta, $polje) {
  803. $kveri = "SELECT PHPFormat as format from TipoviPodataka as t,RecnikPodataka as r WHERE r.Tabelavview='$imesegmenta' and r.Alijaspolja='$polje' and r.ID_TipoviPodataka=t.ID_TipoviPodataka";
  804. $format = '$st=$broj;';
  805.  
  806. $rez = $this->query($kveri);
  807. while ($red = $this->fetch_object($rez)) {
  808. $format = $red->format;
  809. }
  810. return $format;
  811. }
  812.  
  813. /**
  814. * Vraca formulu za dato polje
  815. * @param string $imesegmenta
  816. * @param string $polje
  817. * @return string
  818. */
  819. public function uzmi_formulu_polja($imesegmenta, $polje) {
  820. $kveri = "SELECT FormulaForme as formula from RecnikPodataka WHERE Tabelavview='$imesegmenta' and Alijaspolja='$polje'";
  821. $rez = $this->query($kveri);
  822. $red = $this->fetch_object($rez);
  823. return isset($red->formula) ? $red->formula : null;
  824. }
  825.  
  826. /**
  827. * @todo COMMENT
  828. *
  829. * @param string $nazivdok
  830. * @param integer $iddok
  831. * @param array $parametri
  832. */
  833. public function azuriranje_vezanih($nazivdok, $iddok, $parametri) {
  834. // $sveok = true;
  835. switch ($nazivdok) {
  836. case "Artikli":
  837. $kveri = "select NazivArt as n from ArtikliTotali WITH(NOLOCK) "
  838. . " Where ID_ArtikliTotali=" . $iddok;
  839. $rezultat = $this->query($kveri);
  840. $kveri1 = "select NazivArtikla as n from Artikli WITH(NOLOCK) "
  841. . " Where ID_Artikli=" . $iddok;
  842. $rezultat1 = $this->query($kveri);
  843. $red = $this->fetch_object($rezultat);
  844. $StariNaziv = $red->n;
  845.  
  846. $red1 = $this->fetch_object($rezultat1);
  847. $NoviNaziv = $red1->n;
  848. break;
  849. case "Komitenti":
  850. $kveri = "select NazivKom as s from KomitentiTotali WITH(NOLOCK) "
  851. . " Where ID_KomitentiTotali=" . $iddok;
  852. $rezultat = $this->query($kveri);
  853. $kveri1 = "select NazivKomitenta as n from Komitenti WITH(NOLOCK) "
  854. . " Where ID_Komitenti=" . $iddok;
  855. $rezultat1 = $this->query($kveri1);
  856. $red = $this->fetch_object($rezultat);
  857. $StariNaziv = $red->s;
  858.  
  859. $red1 = $this->fetch_object($rezultat1);
  860. $NoviNaziv = $red1->n;
  861. break;
  862. case "Banka":
  863. $kveri = "select NazivRacuna as n from BankaStavkeview WITH(NOLOCK) "
  864. . " Where ID_BankaStavkeview=" . $iddok;
  865. $rezultat = $this->query($kveri);
  866. $red = $this->fetch_object($rezultat);
  867. $StariNaziv = $red->n;
  868. $NoviNaziv = $parametri['NazivRacuna']['sadrzaj'];
  869. break;
  870. case "Skladiste" :
  871. $kveri = "select NazivSkl as n from Skladiste WITH(NOLOCK) "
  872. . " Where ID_Skladiste=" . $iddok;
  873. $rezultat = $this->query($kveri);
  874. $red = $this->fetch_object($rezultat);
  875. $StariNaziv = $red->n;
  876. $NoviNaziv = $parametri['NazivSkl']['sadrzaj'];
  877. break;
  878. }
  879. if ($NoviNaziv != $StariNaziv) {
  880. $this->sp_azuriranje_vezanih($nazivdok, $iddok, $StariNaziv, $NoviNaziv);
  881. }
  882. }
  883.  
  884. /**
  885. * @todo COMMENT
  886. *
  887. * @param integer $iddok
  888. * @return PDOStatement
  889. */
  890. public function komitenti_komercijalisti($iddok) {
  891. $kveri = '';
  892. $rsKomitent = "Select ID_Komitenti,ID_OdgovornoLice1 from Komitenti where ID_Komitenti=" . $iddok;
  893. $rezultat = $this->query($rsKomitent);
  894. $red = $this->fetch_object($rezultat);
  895. $datumFormat = date("d.m.y");
  896. $rsKomitentKom = "Select Datum,ID_OdgovornoLice1,ID_VezaKomitentKomercijalisti from VezaKomitentKomercijalisti Where ID_KomitentiView=" . $red->ID_Komitenti
  897. . " AND ID_OdgovornoLice1=" . $red->ID_OdgovornoLice1 . " order by datum desc, id_VezaKomitentKomercijalisti";
  898. $rezultat1 = $this->query($rsKomitentKom);
  899. $red1 = $this->fetch_object($rezultat1);
  900. if (empty($red1)) { // ne postoji ili komitent ili komercijalista u VezaKomitentKomercijalisti
  901. $rsKomitentKom = "Select Datum,ID_OdgovornoLice1,ID_VezaKomitentKomercijalisti from VezaKomitentKomercijalisti Where ID_KomitentiView=" . $red->ID_Komitenti
  902. . " order by datum desc, id_VezaKomitentKomercijalisti";
  903. $rezultat1 = $this->query($rsKomitentKom);
  904. $red1 = $this->fetch_object($rezultat1);
  905. if (empty($red1)) { // ne postoji komitent u ID_VezaKomitentKomercijalisti UNECEMO GA
  906. $kveri = " insert into VezaKomitentKomercijalisti(Datum, ID_KomitentiView, ID_OdgovornoLice1 )"
  907. . " values('" . $datumFormat . "', " . $red->ID_Komitenti . ", " . $red->ID_OdgovornoLice1 . ")";
  908. } else { // postoji Komitent
  909. if ($red->ID_OdgovornoLice1 != $red1->ID_OdgovornoLice1) {
  910. $kveri = " insert into VezaKomitentKomercijalisti(Datum, ID_KomitentiView, ID_OdgovornoLice1 )"
  911. . " values('" . $datumFormat . "', " . $red->ID_Komitenti . ", " . $red->ID_OdgovornoLice1 . ")";
  912. }
  913. }
  914. }
  915. if ($kveri != '') {
  916. $this->query($kveri);
  917. }
  918. return true;
  919. }
  920.  
  921. /**
  922. * @todo COMMENT
  923. *
  924. * @param integer $iddok
  925. * @reutrns PDOStatement
  926. */
  927. public function artikli_porezi($iddok) {
  928. $kveri2 = '';
  929. $kveri = "Select ID_Artikli,ID_TarifaPoreza from Artikli WITH(NOLOCK) where ID_Artikli=" . $iddok;
  930. $rezultat1 = $this->query($kveri);
  931. $red = $this->fetch_object($rezultat1);
  932. $kveri1 = "Select ID_ArtikliView,ID_TarifaPoreza from ArtikliGrupaPoreza WITH(NOLOCK) Where ID_ArtikliView=" . $iddok
  933. . " AND ID_TarifaPoreza=" . $red->ID_TarifaPoreza;
  934. $rezultat = $this->query($kveri1);
  935. $red1 = $this->fetch_object($rezultat);
  936. if (empty($red1)) {
  937. $kveri1 = "Select ID_ArtikliView,ID_TarifaPoreza from ArtikliGrupaPoreza WITH(NOLOCK) Where ID_ArtikliView=" . $iddok;
  938. $rezultat = $this->query($kveri1);
  939. $red1 = $this->fetch_object($rezultat);
  940. if (empty($red1)) { // ne postoji artikal u ArtikliGrupaPoreza UBACUJEMO GA
  941. $kveri2 = "insert into ArtikliGrupaPoreza(DatumGrupe, ID_ArtikliView, ID_TarifaPoreza )"
  942. . " values('" . date("d.m.y") . "'," . $red->ID_Artikli . "," . $red->ID_TarifaPoreza . ")";
  943. } else { // postoji artikal u ArtikliGrupaPoreza
  944. if ($red->ID_TarifaPoreza != $red1->ID_TarifaPoreza) {
  945. $kveri2 = " insert into ArtikliGrupaPoreza(DatumGrupe, ID_ArtikliView, ID_TarifaPoreza )"
  946. . " values('" . "01.01." . date("y") . "', " . $red->ID_Artikli . ", "
  947. . $red->ID_TarifaPoreza . ")";
  948. }
  949. }
  950. }
  951. if ($kveri2 != '') {
  952. $this->query($kveri2);
  953. }
  954. return true;
  955. }
  956.  
  957. /**
  958. * @todo COMMENT
  959. *
  960. * @param string $naziv_dokumenta
  961. * @param integer $iddok
  962. */
  963. public function azuriraj_ulazni_racun($naziv_dokumenta, $iddok) {
  964. // $sred = 1;
  965. $kveri = " SELECT ID_UlazniRacunCeo AS IdUR FROM KalkulacijaUf WITH(NOLOCK)"
  966. . " WHERE ID_DokumentaView=" . $iddok;
  967. $rez = $this->query($kveri);
  968. while ($red = $this->fetch($rez)) {
  969. // id racuna za koga je pravljena kalkulacija
  970. $kveri1 = "Select datumcarinjenja,ID_SifrarnikValuta from racun WITH(NOLOCK) where ID_DokumentaView =" . $red[0];
  971. $rez1 = $this->query($kveri1);
  972. while ($red1 = $this->fetch($rez1)) {
  973. $kveri2 = "Select srednji from kursnalista where datum='" . $red1[0] . "' And ID_ID_SifrarnikValuta =" . $red1[1];
  974. $rez2 = $this->query($kveri2);
  975. while ($red2 = $this->fetch($rez2)) {
  976. ////vraca nabavnu cenu na cenu dobavljaca i eliminise zavisne troskove dodate obrisanom kalkulacijom
  977. $kveri3 = "Update RacunStavke set NabavnaCena=(ProdajnaCena*((100-ProcenatRabata)/100))*"
  978. . sred . " where ID_DokumentaView= " . $red[0];
  979. $this->query($kveri3);
  980. }
  981. }
  982. $aa = strtoupper(substr($naziv_dokumenta, 0, 3));
  983. if ($aa == "PDV") {
  984. $this->sp_totali('KonacniUlazniRacun', $red[0]);
  985. } else {
  986. $this->sp_totali('UlazniRacun', $red[0]);
  987. }
  988. $this->sp_cene_i_stanje($red[0]);
  989. }
  990. }
  991.  
  992. /**
  993. * Brise nalog glavne knjige za dati dokument
  994. *
  995. * @param integer $iddok
  996. * @return PDOStatement
  997. */
  998. public function brisanje_naloga_glavne_knjige($iddok) {
  999. $kveri = " Select KS.ID_DokumentZaKnj as IDDK from NalogGlavneKnjigeStavke as KS
  1000. where KS.ID_DokumentaView=$iddok";
  1001. $rez = $this->query($kveri);
  1002. while ($red = $this->fetch($rez)) {
  1003. //vracanje statusa dokumentima koji su bili u nalogu koji smo obrisali
  1004. $kveri1 = "Update Dokumenta set proknjizeno='NijeProknjizeno' where Id_Dokumenta=" . $red[0];
  1005. $sve_ok = $this->query($kveri1);
  1006. //totali za dokumenta kojima je promenjen status
  1007. // $this->sp_totali($imestabla, $red[0]);
  1008. $this->sp_totali("", $red[0]);
  1009. }
  1010. // brisanje slogova glavne knjige
  1011. $kveri1 = "delete from glavnaknjiga where ID_NalogGlavneKnjigeStavkePregledView=" . $iddok;
  1012. $sve_ok = $this->query($kveri1);
  1013. }
  1014.  
  1015. /**
  1016. * Vraca dato polje izvestaja
  1017. *
  1018. * @param string $naziv_izvestaj
  1019. * @param string $naziv_polja
  1020. * @return array
  1021. */
  1022. public function uzmi_polje_iz_izvestaja($naziv_izvestaj, $naziv_polja) {
  1023. $kveri = "SELECT Uslov, TotalVSubTotal, UslovOperacija, TUD,PoljeSaDok FROM Izvestaji WHERE Izvestaj = '" . $naziv_izvestaj .
  1024. "' AND Polje='" . $naziv_polja . "'";
  1025. $data = array();
  1026. $rez = $this->query($kveri);
  1027. while ($red = $this->fetch($rez)) {
  1028. $data ["uslov"] = $red[0];
  1029. $data ["total"] = trim($red[1]);
  1030. $data ["uslov_op"] = $red[2];
  1031. $data ["TUD"] = $red[3];
  1032. $data["PoljeSaDok"] = $red[4];
  1033. }
  1034. return $data;
  1035. }
  1036.  
  1037. public function uzmi_polje_iz_alijasa($naziv_izvestaj, $alijas_polja) {
  1038. $kveri = "SELECT Polje FROM RecnikPodataka WHERE Dokument = '" . $naziv_izvestaj . "' AND AlijasPolja='" . $alijas_polja . "'";
  1039. $data = array();
  1040. $rez = $this->query($kveri);
  1041. while ($red = $this->fetch($rez)) {
  1042. $data ["Polje"] = $red[0];
  1043. // $data ["total"] = trim($red[1]);
  1044. // $data ["uslov_op"] = $red[2];
  1045. // $data ["TUD"] = $red[3];
  1046. // $data["PoljeSaDok"] = $red[4];
  1047. }
  1048. return $data;
  1049. }
  1050.  
  1051. /**
  1052. * Vraca da li postoji naziv organizacije
  1053. *
  1054. * @param string $naziv_izvestaj
  1055. * @return boolean
  1056. */
  1057. public function postoji_li_nazivorg($naziv_izvestaj) {
  1058. $kveri = "SELECT Uslov, TotalVSubTotal, UslovOperacija, TUD,PoljeSaDok FROM Izvestaji WHERE Izvestaj = '" . $naziv_izvestaj . "' AND Uslov=4";
  1059. $rez = $this->query($kveri);
  1060. $red = $this->fetch($rez);
  1061. return !empty($red);
  1062. }
  1063.  
  1064. /**
  1065. * Vraca restrikciju za grid datog dokumenta, poziva se samo za izvestaje
  1066. *
  1067. * @param string $uslov_pocetni
  1068. * @param string $dokument
  1069. * @param string $tud
  1070. * @return string
  1071. */
  1072. public function uzmi_restrikciju_za_grid($uslov_pocetni, $dokument, $tud) {
  1073. $uslov = trim($uslov_pocetni);
  1074. if ($tud == 0) {
  1075. $sql = "SELECT restrikcije FROM recnikpodataka WHERE dokument=:dokument AND ltrim(rtrim(restrikcije)) <> '' AND restrikcije NOT LIKE '%BrDok%'";
  1076. $sth = $this->prepare($sql);
  1077. $sth->bindValue(':dokument', $dokument);
  1078. } else {
  1079. $sql = "SELECT restrikcije FROM recnikpodataka WHERE dokument=:dokument AND tud=:tud AND ltrim(rtrim(restrikcije)) <> '' AND restrikcije NOT LIKE '%BrDok%'";
  1080. $sth = $this->prepare($sql);
  1081. $sth->bindValue(':dokument', $dokument);
  1082. $sth->bindValue(':tud', $tud);
  1083. }
  1084. $sth->execute();
  1085. if ($this->postoji_li_nazivorg($dokument)) {
  1086. if ($uslov === '') {
  1087. $uslov = "NazivOrg='{$_SESSION['firma']}'";
  1088. } else {
  1089. $uslov .= " AND NazivOrg='{$_SESSION['firma']}'";
  1090. }
  1091. }
  1092. $result = $sth->fetchAll(PDO::FETCH_ASSOC);
  1093. foreach ($result as $row) {
  1094. $restrikcija = $this->evaluiraj_restrikcije($row['restrikcije']);
  1095. if ($uslov === '') {
  1096. $uslov = $restrikcija;
  1097. } else if ($restrikcija !== '') {
  1098. $uslov .= ' AND ' . $restrikcija;
  1099. }
  1100. }
  1101. return $uslov;
  1102. }
  1103.  
  1104. /**
  1105. * U koloni restrikcije se u recniku podataka nalaze restrikcije
  1106. * ili normalno ili u obliku USLOV::RESTRIKCIJA gde se onda evaluira uslov
  1107. * pa ako je true onda se dodaje restrikcija
  1108. *
  1109. * @param string $restrikcije
  1110. * @return string
  1111. */
  1112. public function evaluiraj_restrikcije($restrikcije) {
  1113. $restrikcije_parts = explode('::', $restrikcije);
  1114. if (count($restrikcije_parts) > 1) {
  1115. $primeni_restrikciju = eval("return {$restrikcije_parts[0]};");
  1116. if ($primeni_restrikciju) {
  1117. return $restrikcije_parts[1];
  1118. } else {
  1119. return '';
  1120. }
  1121. }
  1122. return $restrikcije;
  1123. }
  1124.  
  1125. /**
  1126. * Vraca order by za datu tabelu u dokumentu
  1127. *
  1128. * @param string $naziv_dokumenta
  1129. * @param integer $TUD
  1130. * @return string
  1131. */
  1132. public function uzmi_order_by_iz_recnika($naziv_dokumenta, $TUD) {
  1133.  
  1134. $kveri = "SELECT AlijasPolja as Polje, GGroupBy FROM RecnikPodataka WHERE Dokument = '$naziv_dokumenta'
  1135. AND TUD= $TUD AND GGroupBy<>0 ORDER BY GGroupBy";
  1136. $data = array();
  1137. $rez = $this->query($kveri);
  1138. while ($red = $this->fetch_Assoc($rez)) {
  1139. $data[] = $red;
  1140. }
  1141. $response = "";
  1142. $order_by = "";
  1143. if (count($data) > 0) {
  1144. $response = " ORDER BY ";
  1145. foreach ($data as $d) {
  1146. $smer = $d['GGroupBy'] > 0 ? ' ASC' : ' DESC';
  1147. $order_by .= $d['Polje'] . $smer . ',';
  1148. }
  1149. $order_by = substr($order_by, 0, strlen($order_by) - 1);
  1150. }
  1151. return $response . $order_by;
  1152. }
  1153.  
  1154. /**
  1155. * Vraca polja datog dokumenta i date tabele
  1156. *
  1157. * @param string $ime_dok
  1158. * @param integer $tud
  1159. * @return array
  1160. */
  1161. public function uzmi_polja_dokumenta($ime_dok, $tud = -1) {
  1162. $where_tud = "";
  1163. if ($tud != -1) {
  1164. $where_tud = " and TUD=$tud ";
  1165. }
  1166. $kveri = "select ID_RecnikPodataka, TUD,TabIndex, AlijasPolja, Restrikcije,width,WidthKolone
  1167. from RecnikPodataka WHERE Dokument='$ime_dok' $where_tud and (width > 0 or WidthKolone > 0
  1168. or RecnikPodataka.ID_NAZIViNAFORMI=20 or RecnikPodataka.ID_NAZIViNAFORMI=25
  1169. or alijaspolja like'IID%' or alijaspolja like 'ID_'+ AlijasTabele
  1170. or (Izborno <> '' and alijaspolja like 'ID_'+ Izborno)) Order By TUD,TabIndex;";
  1171. //log::sql($kveri);
  1172. $rezultat = array();
  1173. $brojac_polja = 0;
  1174. $rez = $this->query($kveri);
  1175. while ($red = $this->fetch_Assoc($rez)) {
  1176. $rezultat[$brojac_polja] = $red;
  1177. $brojac_polja++;
  1178. }
  1179. return $rezultat;
  1180. }
  1181.  
  1182. /**
  1183. * Uzima zadato polje iz recnika podataka
  1184. *
  1185. * @param integer $id
  1186. * @return array
  1187. */
  1188. public function uzmi_polje($id) {
  1189. $kveri = "select n.srpski, " .
  1190. "t.PHPFormat, r.ID_RecnikPodataka, r.Dokument, r.TabelaVView, r.TabIndex, r.Polje, r.AlijasPolja, r.Tabela," .
  1191. "r.AlijasTabele, r.WidthKolone, r.width, r.vrh as WebTop , r.levo as WebLeft, r.levo, r.vrh, r.height, r.PostojiLabela, r.TUD," .
  1192. " r.Izborno, r.StornoIUpdate, r.Smesti, r.ObavezanUnos, r.TotaliDaNe, r.KontiraSe, r.TotalVSubTotal," .
  1193. " r.Restrikcije, r.Zoom, r.HelpID, r.GridVFlexGrid, r.OOrderBy, r.GGroupBy, r.ZavisiOd," .
  1194. " r.JJoinTvV, r.FormulaForme,t.CSS + ' ' + r.DodatniCSS as CSS,t.DifoltZaIzvestaje,t.tip " .
  1195. " FROM RecnikPodataka as r, NaziviNaFormi as n, TipoviPodataka as t" .
  1196. " WHERE r.id_nazivinaformi=n.id_nazivinaformi and r.ID_TipoviPodataka=t.ID_TipoviPodataka and r.ID_RecnikPodataka=$id ";
  1197. $rezultat = array();
  1198. $ok = 0;
  1199.  
  1200. $rez = $this->query($kveri);
  1201. while ($red = $this->fetch_Assoc($rez)) {
  1202. $rezultat = $red;
  1203. $ok++;
  1204. }
  1205. if ($ok == 0) {
  1206. return "eee_empty_field";
  1207. } else {
  1208. return $rezultat;
  1209. }
  1210. }
  1211.  
  1212. /**
  1213. * @todo COMMENT
  1214. *
  1215. * @param string $dok
  1216. * @param string $grid
  1217. * @return integer
  1218. */
  1219. public function uzmi_broj_vidljivih($dok, $grid) {
  1220. $kveri = "SELECT count(*) as brojVidljivih FROM RecnikPodataka " .
  1221. "WHERE WidthKolone>0 AND Dokument='$dok' AND TabelaVView='$grid'";
  1222.  
  1223. $broj_vidljivih = 0;
  1224. $rez = $this->query($kveri);
  1225. while ($red = $this->fetch($rez)) {
  1226. $broj_vidljivih = (int) $red[0];
  1227. }
  1228. return $broj_vidljivih;
  1229. }
  1230.  
  1231. /**
  1232. * Vraca prvo vidljivo polje iz recnika podataka za dati dokument i grid
  1233. *
  1234. * @param string $dok
  1235. * @param string $grid
  1236. * @return array
  1237. */
  1238. public function uzmi_prvo_vidljivo_polje($dok, $grid) {
  1239. $prvopolje = array();
  1240. $rb = 0;
  1241.  
  1242. $kveri = "SELECT ID_NaziviNaFormi ,AlijasPolja as prvopolje FROM RecnikPodataka WHERE WidthKolone>0 AND Dokument='$dok' AND TabelaVView='$grid'" .
  1243. " AND Tabindex=(Select min(tabindex) from RecnikPodataka WHERE WidthKolone>0 AND Dokument='$dok' AND TabelaVView='$grid');";
  1244. $rez = $this->query($kveri);
  1245. while ($red = $this->fetch_object($rez)) {
  1246. if ($red->ID_NaziviNaFormi == 20)
  1247. $rb = 1;
  1248. $prvopolje["prvopolje"] = $red->prvopolje;
  1249. $prvopolje["rb"] = $rb;
  1250. }
  1251. return $prvopolje;
  1252. }
  1253.  
  1254. /**
  1255. * @todo COMMENT
  1256. *
  1257. * @param string $dok
  1258. * @param string $grid
  1259. * @return array
  1260. */
  1261. public function uzmi_strukt_grida($dok, $grid) {
  1262. $kveri = "SELECT distinct webBrojRedova as MaxHeight, levo as WebLeft, vrh as WebTop, Width FROM Upiti " .
  1263. "WHERE NazivDokumenta='" . $dok . "' AND Ime='" . "ggrr" . $grid . "';";
  1264. $struktura = array();
  1265. $rez = $this->query($kveri);
  1266. while ($red = $this->fetch($rez)) {
  1267. $struktura["redova"] = $red[0];
  1268. $struktura["left"] = $red[1];
  1269. $struktura["top"] = $red[2];
  1270. $struktura["width"] = $red[3];
  1271. }
  1272. return empty($struktura) ? 0 : $struktura;
  1273. }
  1274.  
  1275. /**
  1276. * Kreira broj dokumenta
  1277. *
  1278. * @param string $naziv_dok
  1279. * @param integer $id_dok_stablo
  1280. * @param string $datum
  1281. * @param integer $id_org_str
  1282. * @param integer $id_rad
  1283. * @return string
  1284. */
  1285. public function sp_kreiraj_broj($naziv_dok, $id_dok_stablo, $datum, $id_org_str, $id_rad) {
  1286. $sifra_rad = $this->uzmi_sifru_rad($id_rad);
  1287. $veza = $this->get_link();
  1288. $stmt = $veza->prepare('{call KreirajBroj(@Dokument=:dok,@dtm=:dat, @IdOrg=:idorg, ' .
  1289. '@idke=:idke, @IdDokStablo=:dok_stablo, @BrojDok=:broj_dok)}');
  1290. $br_dok = ' ';
  1291. $stmt->bindParam('dok', $naziv_dok, PDO::PARAM_STR);
  1292. $stmt->bindParam('dat', $datum, PDO::PARAM_STR);
  1293. $stmt->bindParam('idorg', $id_org_str, PDO::PARAM_INT);
  1294. $stmt->bindParam('idke', $sifra_rad, PDO::PARAM_STR);
  1295. $stmt->bindParam('dok_stablo', $id_dok_stablo, PDO::PARAM_INT);
  1296. $stmt->bindParam('broj_dok', $br_dok, PDO::PARAM_STR | PDO::PARAM_INPUT_OUTPUT, 1024);
  1297. $stmt->execute();
  1298. return $br_dok;
  1299. }
  1300.  
  1301. /**
  1302. * Stornira dati dokument
  1303. *
  1304. * @param string $naziv_dok
  1305. * @param integer $id_dokp
  1306. * @param integer $id_doks
  1307. * @return boolean
  1308. */
  1309. public function sp_storno_dokumenta($naziv_dok, $id_dokp, $id_doks) {
  1310. $veza = $this->get_link();
  1311. $stmt = $veza->prepare('{call StornoDokumenta(@NAZIVDOKUMENTA=:nazivDok,@ID_DOKUMENTAVIEWPRETH=:idp,@ID_DOKUMENTAVIEWSLEDB=:ids)}');
  1312.  
  1313. $stmt->bindParam('nazivDok', $naziv_dok, PDO::PARAM_STR);
  1314. $stmt->bindParam('idp', $id_dokp, PDO::PARAM_INT);
  1315. $stmt->bindParam('ids', $id_doks, PDO::PARAM_INT);
  1316. return $stmt->execute();
  1317. }
  1318.  
  1319. /**
  1320. * Izvodi totale za dati dokument
  1321. *
  1322. * @param string $naziv_dok
  1323. * @param integer $id_dok
  1324. * @return boolean
  1325. */
  1326. public function sp_totali($naziv_dok, $id_dok) {
  1327. $veza = $this->get_link();
  1328. $stmt = $veza->prepare('{call TotaliZaDokument(@NazivDokumenta=:nazivDok,@IdDokument=:id)}');
  1329. $stmt->bindParam('nazivDok', $naziv_dok, PDO::PARAM_STR);
  1330. $stmt->bindParam('id', $id_dok, PDO::PARAM_INT);
  1331. return $stmt->execute();
  1332. }
  1333.  
  1334. /**
  1335. * @todo COMMENT
  1336. *
  1337. * @param integer $godinaDatuma
  1338. * @return boolean
  1339. */
  1340. public function sp_popuniTimeByDay($godinaDatuma) {
  1341. $veza = $this->get_link();
  1342. $stmt = $veza->prepare('{call PopuniTimeByDay(@Godina=:godina)}');
  1343. $stmt->bindParam('godina', $godinaDatuma, PDO::PARAM_INT);
  1344. return $stmt->execute();
  1345. }
  1346.  
  1347. /**
  1348. * @todo COMMENT
  1349. *
  1350. * @param string $naziv_dok
  1351. * @param string $br_dok
  1352. * @param integer $id_dok
  1353. * @return boolean
  1354. */
  1355. public function sp_BrutoBilans($naziv_dok, $br_dok, $id_dok) {
  1356. $veza = $this->get_link();
  1357. $ds = $veza->prepare('{call BrutoBilans(@DDokument=:nazivDok,@BrDok=:brDok,@IdDokument=:id)}');
  1358. $ds->bindParam('nazivDok', $naziv_dok, PDO::PARAM_STR);
  1359. $ds->bindParam('brDok', $br_dok, PDO::PARAM_STR);
  1360. $ds->bindParam('id', $id_dok, PDO::PARAM_INT);
  1361. return $ds->execute();
  1362. }
  1363.  
  1364. /**
  1365. * @todo COMMENT
  1366. *
  1367. * @param string $naziv_dok
  1368. * @param string $br_dok
  1369. * @param integer $id_dok
  1370. * @return boolean
  1371. */
  1372. public function sp_BrutoBilansSimulacija($naziv_dok, $br_dok, $id_dok) {
  1373. $veza = $this->get_link();
  1374. $stmt = $veza->prepare('{call BrutoBilansSimulacija(@DDokument=:nazivDok,@BrDok=:brDok,@IdDokView=:id)}');
  1375. $stmt->bindParam('nazivDok', $naziv_dok, PDO::PARAM_STR);
  1376. $stmt->bindParam('brDok', $br_dok, PDO::PARAM_STR);
  1377. $stmt->bindParam('id', $id_dok, PDO::PARAM_INT);
  1378. return $stmt->execute();
  1379. }
  1380.  
  1381. /**
  1382. * @todo COMMENT
  1383. *
  1384. * @param string $naziv_dok
  1385. * @param integer $id_dok
  1386. * @param integer $snaziv
  1387. * @param integer $nnaziv
  1388. * @return boolean
  1389. */
  1390. public function sp_azuriranje_vezanih($naziv_dok, $id_dok, $snaziv, $nnaziv) {
  1391. $veza = $this->get_link();
  1392. $stmt = $veza->prepare('{call PlusAzuriranjeVezanih(@NazivDokumenta=:nazivDok,@IdDokument=:id,@StariNaziv=:snaziv,@NoviNaziv=:nnaziv)}');
  1393. $stmt->bindParam('nazivDok', $naziv_dok, PDO::PARAM_STR);
  1394. $stmt->bindParam('id', $id_dok, PDO::PARAM_INT);
  1395. $stmt->bindParam('snaziv', $snaziv, PDO::PARAM_INT);
  1396. $stmt->bindParam('nnaziv', $nnaziv, PDO::PARAM_INT);
  1397. return $stmt->execute();
  1398. }
  1399.  
  1400. /**
  1401. * @todo COMMENT
  1402. *
  1403. * @param integer $id_dok
  1404. * @return boolean
  1405. */
  1406. public function sp_stanje_lot($id_dok) {
  1407. $veza = $this->get_link();
  1408. $stmt = $veza->prepare('{call StanjeRobePoLotu(@IdDokView=:id)}');
  1409. $stmt->bindParam('id', $id_dok, PDO::PARAM_INT);
  1410. return $stmt->execute();
  1411. }
  1412.  
  1413. /**
  1414. * Poziva store proceduru srediSifrarnik
  1415. *
  1416. * @param string $stab
  1417. */
  1418. public function sp_sredi_sifre($stab) {
  1419. $veza = $this->get_link();
  1420. $stmt = $veza->prepare('{call SrediSifrarnik(@Stab=:stab)}');
  1421. $stmt->bindParam('stab', $stab, PDO::PARAM_STR);
  1422. return $stmt->execute();
  1423. }
  1424.  
  1425. /**
  1426. * @todo COMMENT
  1427. *
  1428. * @param integer DatumStanja
  1429. * @return boolean
  1430. */
  1431. public function sp_uporednostanjerobe($datum) {
  1432. $veza = $this->get_link();
  1433. $stmt = $veza->prepare('{call UporednoStanjeRobe(@DatumStanja=:dat)}');
  1434. $stmt->bindParam('dat', $datum, PDO::PARAM_STR);
  1435. return $stmt->execute();
  1436. }
  1437.  
  1438. /**
  1439. * @todo COMMENT
  1440. *
  1441. * @return boolean
  1442. */
  1443. public function sp_azurirajdospeca() {
  1444. $veza = $this->get_link();
  1445. $stmt = $veza->prepare('{call AzurirajDospeca()}');
  1446. return $stmt->execute();
  1447. }
  1448.  
  1449. /**
  1450. * @todo COMMENT
  1451. *
  1452. * @param integer $id_dok
  1453. * @return boolean
  1454. */
  1455. public function sp_cene_i_stanje($id_dok) {
  1456. $veza = $this->get_link();
  1457. $stmt = $veza->prepare('{call CeneArtikalaPoSkladistimaIStanje(@IdDokView=:id)}');
  1458. $stmt->bindParam('id', $id_dok, PDO::PARAM_INT);
  1459. return $stmt->execute();
  1460. }
  1461.  
  1462. public function sp_transakcije_za_knjizenje($id_reda, $id_dok) {
  1463. $veza = $this->get_link();
  1464. $stmt = $veza->prepare('{call TransakcijeZaKnjizenje(@IdReda=:idr,@IdDokView=:idd)}');
  1465. $stmt->bindParam('idd', $id_dok, PDO::PARAM_INT);
  1466. $stmt->bindParam('idr', $id_reda, PDO::PARAM_INT);
  1467. return $stmt->execute();
  1468. }
  1469.  
  1470. /**
  1471. * @todo COMMENT
  1472. *
  1473. * @param integer $id_dok
  1474. * @return boolean
  1475. */
  1476. public function sp_cene_i_promet($id_dok) {
  1477. $veza = $this->get_link();
  1478. $stmt = $veza->prepare('{call AzurirajCenuSirovinaZaPromet(@IdDokView=:id)}');
  1479. $stmt->bindParam('id', $id_dok, PDO::PARAM_INT);
  1480. return $stmt->execute();
  1481. }
  1482.  
  1483. /**
  1484. * @todo COMMENT
  1485. *
  1486. * @param string $naziv_dok
  1487. * @param integer $id_dok
  1488. * @return boolean
  1489. */
  1490. public function sp_proverastanjalot($naziv_dok, $id_dok) {
  1491. $veza = $this->get_link();
  1492. $stmt = $veza->prepare('{call ProveraStanjaLotMagPolj(@IdDokView=:id,@Dokument:dok}');
  1493. $stmt->bindParam('id', $id_dok, PDO::PARAM_INT);
  1494. $stmt->bindParam('dok', $naziv_dok, PDO::PARAM_INT);
  1495. return $stmt->execute();
  1496. }
  1497.  
  1498. /**
  1499. * @todo COMMENT
  1500. *
  1501. * @param string $naziv_dok_preth
  1502. * @param string $naziv_dok_sledb
  1503. * @param integer $id_dok_preth
  1504. * @param integer $id_dok_sledb
  1505. * @return string
  1506. */
  1507. public function sp_povucisapredhodnika($naziv_dok_preth, $naziv_dok_sledb, $id_dok_preth, $id_dok_sledb) {
  1508. $stmt = $this->conn->prepare('{call PrethSled(@PRETH=:preth,@SLEDB=:sledb,@ID_DOKUMENTAVIEWPRETH=:idpreth,@ID_DOKUMENTAVIEWSLEDB=:idsledb)}');
  1509. $stmt->bindParam('preth', $naziv_dok_preth, PDO::PARAM_STR);
  1510. $stmt->bindParam('sledb', $naziv_dok_sledb, PDO::PARAM_STR);
  1511. $stmt->bindParam('idpreth', $id_dok_preth, PDO::PARAM_INT);
  1512. $stmt->bindParam('idsledb', $id_dok_sledb, PDO::PARAM_INT);
  1513. return $stmt->execute();
  1514. }
  1515.  
  1516. public function sp_proverastanja($naziv_dok, $id_dok) {
  1517. $veza = $this->get_link();
  1518. if (strpos($naziv_dok, "Lot") != false) {
  1519. $stmt = $veza->prepare('{call ProveraStanjaLotMagPolj(@IdDokView=:id,@Dokument=:dok)}');
  1520. $stmt->bindParam('id', $id_dok, PDO::PARAM_INT);
  1521. $stmt->bindParam('dok', $naziv_dok, PDO::PARAM_STR);
  1522. $stmt->execute();
  1523. $PrStanja = "select dbo.LotProveraStanjaF() as Stanje";
  1524. } else {
  1525. $stmt = $veza->prepare('{call ProveraStanjaP(@IdDokView=:id,@Dokument=:dok)}');
  1526. $stmt->bindParam('id', $id_dok, PDO::PARAM_INT);
  1527. $stmt->bindParam('dok', $naziv_dok, PDO::PARAM_STR);
  1528. $stmt->execute();
  1529. $PrStanja = "select dbo.ProveraStanjaF() as Stanje";
  1530. }
  1531. $rez = $this->query($PrStanja);
  1532. $red = $this->fetch_object($rez);
  1533. return $red->Stanje;
  1534. }
  1535.  
  1536. //
  1537. // public function sp_stanje_robe_lot($id_dok) {
  1538. // if ($id_dok > 0) {
  1539. // $veza = $this->get_link();
  1540. // $stmt = $veza->prepare('{call StanjeRobePoLotu(@IdDokView=:id)}');
  1541. // $stmt->bindParam('id', $id_dok, PDO::PARAM_INT);
  1542. // $stmt->execute();
  1543. // }
  1544. // }
  1545. ////////////////////////////////////////////////////
  1546. ////////////STARA BAZA//////////////////////////////
  1547. // public function sp_kreiraj_broj_mssql($naziv_dok, $datum, $id_org_str, $id_rad) {
  1548. //
  1549. // //$this->open();
  1550. // $id_dok_stablo = $this->uzmi_id_dok_stablo($naziv_dok);
  1551. // // Create a new stored prodecure
  1552. // $veza = $this->get_link();
  1553. // $stmt = mssql_init('KreirajBroj', $veza);
  1554. //
  1555. // $br_dok = ' ';
  1556. //// Bind the field names
  1557. // mssql_bind($stmt, '@Dokument', $naziv_dok, SQLVARCHAR, false, false, 60);
  1558. // mssql_bind($stmt, '@dtm', $datum, SQLVARCHAR, false, false, 60);
  1559. // mssql_bind($stmt, '@IdOrg', $id_org_str, SQLINT4, false, false, 3);
  1560. // mssql_bind($stmt, '@idke', $id_rad, SQLINT4, false, false, 3);
  1561. // mssql_bind($stmt, '@IdDokStablo', $id_dok_stablo, SQLINT4, false, false, 3);
  1562. // mssql_bind($stmt, '@BrojDok', $br_dok, SQLVARCHAR, true, false, 100);
  1563. // mssql_execute($stmt);
  1564. // mssql_free_statement($stmt);
  1565. // unset($veza);
  1566. // return $br_dok;
  1567. // }
  1568. // public function sp_totali_mssql($naziv_dok, $id_dok) {
  1569. //
  1570. // $veza = $this->get_link();
  1571. // // Create a new stored prodecure
  1572. // $stmt = mssql_init('TotaliZaDokument', $veza);
  1573. // // Bind the field names
  1574. // mssql_bind($stmt, '@NazivDokumenta', $naziv_dok, SQLVARCHAR, false, false, 100);
  1575. // mssql_bind($stmt, '@IdDokument', $id_dok, SQLINT4, false, false, 20);
  1576. //
  1577. // // Execute
  1578. // mssql_execute($stmt);
  1579. // // Free statement
  1580. // mssql_free_statement($stmt);
  1581. // //echo $veza;
  1582. // unset($veza);
  1583. // }
  1584. // public function sp_stanje_robe_lot_mssql($id_dok) {
  1585. // $veza = $this->get_link();
  1586. // // Create a new stored prodecure
  1587. // $stmt = mssql_init('StanjeRobePoLotu', $veza);
  1588. // // Bind the field names
  1589. // mssql_bind($stmt, '@IdDokView', $id_dok, SQLINT4, false, false, 20);
  1590. //
  1591. // // Execute
  1592. // mssql_execute($stmt);
  1593. //
  1594. // // Free statement
  1595. // mssql_free_statement($stmt);
  1596. // //echo $veza;
  1597. // unset($veza);
  1598. // }
  1599.  
  1600. /**
  1601. * @todo COMMENT
  1602. *
  1603. * @param string $preth_dok
  1604. * @param string $naziv_dok
  1605. * @param string $br_dok
  1606. * @param string $datum
  1607. * @param integer $id_org_str
  1608. * @param integer $id_rad
  1609. * @param string $opis
  1610. * @return PDOStatement
  1611. * @throws Exception
  1612. */
  1613. function upis_u_dokumenta($preth_dok, $naziv_dok, $br_dok, $datum, $id_org_str, $id_rad, $opis) {
  1614. /////////////////////////////////////////////////////////////
  1615. ///INSERT u tabelu Dokumenta
  1616. //
  1617. //ID_Dokumenta auto
  1618. //ID_KadrovskaEvidencija $id_rad
  1619. //ID_Prethodni $preth_dok
  1620. //ID_DokumentaStablo tabela DokumentaStablo na osnovu $naziv_dok
  1621. //BrojDokumenta $br_dok
  1622. //Datum $datum
  1623. //Opis $opis ($naziv + $datum)
  1624. //Proknjizeno NeKnjiziSe || Proknjizen || NijeProknjizeno
  1625. //UUser ID_KadrovskaEvidencija, $id_rad
  1626. //TTime auto
  1627. //RedniBroj $redni_broj (drugi broj iz BrojDokumenta)
  1628. //ID_LikvidacijaDokumenta $id_likv_dok
  1629. //ID_OrganizacionaStrukturaView $id_org_str
  1630. //MesecPoreza auto = NULL
  1631. ///////////////////////////////////////////////////////////////
  1632. //$this->open();
  1633.  
  1634. $id_dok_stablo = $this->uzmi_id_dok_stablo("Dokumenta", $naziv_dok);
  1635.  
  1636. //echo "STABLO $id_dok_stablo-------------------";
  1637. $mesecporeza = $this->popuni_mesecporeza($datum);
  1638. //provjera da li se dok knjizi
  1639. $proknjizeno = '';
  1640. $rezultat = $this->query("SELECT KnjiziSe FROM SifarnikDokumenta where Naziv='$naziv_dok';");
  1641. $red = $this->fetch($rezultat);
  1642. // {
  1643. // $proknjizeno=$red[0];
  1644. // }
  1645. if ($red[0] == 'N') {
  1646. $proknjizeno = 'NeKnjiziSe';
  1647. } elseif ($red[0] == 'Y') {
  1648. $proknjizeno = 'NijeProknjizeno';
  1649. }
  1650. ////////////////////////////
  1651. //redni broj dokumenta - drugi broj iz 'broj dokumenta'
  1652. $s1 = explode('/', $br_dok);
  1653. $s2 = explode('-', $s1[0]);
  1654. $redni_broj = $s2[1];
  1655. ////////////////////////////////
  1656. //uzima ID_LikvidacijaDokumenta
  1657. $id_likv_dok = 1;
  1658. /////////////////////////////
  1659.  
  1660. if ($preth_dok == '') {
  1661. $preth_dok = 1;
  1662. }
  1663.  
  1664. //????????????
  1665. // MOZDA ovdje da pocinje funkcija, a OVO iznad prebacit u klasu dokument
  1666. //function upis_u_dokumenta($id_rad, $preth_dok, $id_dok_stablo, $br_dok, $datum, $opis, ){
  1667. //UPIS dokumenta u tabelu Dokumenta
  1668. $rsu = "INSERT INTO Dokumenta(ID_KadrovskaEvidencija, ID_Predhodni, ID_DokumentaStablo,
  1669. BrojDokumenta, Datum, Opis, Proknjizeno, UUser, RedniBroj, ID_LikvidacijaDokumenta,
  1670. ID_OrganizacionaStrukturaView,MesecPoreza) VALUES($id_rad, $preth_dok, $id_dok_stablo, '$br_dok', '$datum',
  1671. '$opis', '$proknjizeno', $id_rad, $redni_broj, $id_likv_dok, $id_org_str,$mesecporeza)";
  1672. $sve_ok = $this->query($rsu);
  1673. if (!$sve_ok) {
  1674. throw new Exception("Greska upis_u_dokumenta!");
  1675. }
  1676. return $sve_ok;
  1677. }
  1678.  
  1679. /**
  1680. * Provera da li se dokument knjizi
  1681. *
  1682. * @param string $naziv_dok
  1683. * @return string
  1684. */
  1685. function popuni_proknjizeno($naziv_dok) {
  1686. $proknjizeno = '';
  1687. $rezultat = $this->query("SELECT KnjiziSe FROM SifarnikDokumenta where Naziv='$naziv_dok';");
  1688. while ($red = $this->fetch($rezultat)) {
  1689. $proknjizeno = $red[0];
  1690. }
  1691. if ($proknjizeno == 'N') {
  1692. $proknjizeno = 'NeKnjiziSe';
  1693. } else if ($proknjizeno == 'Y') {
  1694. $proknjizeno = 'NijeProknjizeno';
  1695. }
  1696. return $proknjizeno;
  1697. }
  1698.  
  1699. /**
  1700. * Popunjava mesec poreza
  1701. *
  1702. * @param string $pDatum
  1703. * @return integer
  1704. */
  1705. function popuni_mesecporeza($pDatum) {
  1706. if ($_SESSION['firma'] == "Leotar") {
  1707. $DanPoreza = 10;
  1708. } else {
  1709. $DanPoreza = 15;
  1710. }
  1711.  
  1712. $pttime = time();
  1713. // $pttime = strtotime($pttime);
  1714. $pDatum = strtotime($pDatum);
  1715.  
  1716. $mespDatum = date('m', $pDatum);
  1717. $mespttime = date("m", $pttime);
  1718. $danpttime = date('d', $pttime);
  1719.  
  1720. $pmesec = intval($mespttime);
  1721.  
  1722. if ($mespDatum <> $mespttime && $danpttime <= $DanPoreza) {
  1723. $pmesec = $pmesec - 1;
  1724. }
  1725. return $pmesec === 0 ? 12 : $pmesec;
  1726. }
  1727.  
  1728. /**
  1729. * Vraca id dokumenta stablo
  1730. *
  1731. * @param string $naziv_stabla
  1732. * @param string $naziv_dok
  1733. * @return integer
  1734. */
  1735. function uzmi_id_dok_stablo($naziv_stabla, $naziv_dok) {
  1736. $id_dok_stablo = '';
  1737. $rezultat = $this->query("SELECT ID_" . $naziv_stabla . "Stablo FROM " . $naziv_stabla . "Stablo where Naziv='$naziv_dok';");
  1738. while ($red = $this->fetch($rezultat)) {
  1739. $id_dok_stablo = $red[0];
  1740. }
  1741. if ($id_dok_stablo == '') {
  1742. throw new Exception("Prazno id dokument stablo! Uzmi id dok stablo");
  1743. }
  1744. return $id_dok_stablo;
  1745. }
  1746.  
  1747. /**
  1748. * Uzima naziv grupe
  1749. *
  1750. * @param string $naziv_stabla
  1751. * @param integer $id_stablo
  1752. * @return string
  1753. */
  1754. function uzmi_naziv_grupe($naziv_stabla, $id_stablo) {
  1755. $naziv = '';
  1756. $rezultat = $this->query("SELECT ID_" . $naziv_stabla . "Stablo, Naziv FROM " . $naziv_stabla . "Stablo where ID_" . $naziv_stabla . "Stablo=$id_stablo;");
  1757. while ($red = $this->fetch_Assoc($rezultat)) {
  1758. $naziv = $red['Naziv'];
  1759. }
  1760. return $naziv === '' ? false : naziv;
  1761. }
  1762.  
  1763. /**
  1764. * Uzima naziv dokumenta
  1765. *
  1766. * @param integer $id_dok_stablo
  1767. * @return string
  1768. */
  1769. function uzmi_naziv_dok($id_dok_stablo) {
  1770. $naziv = '';
  1771. $rezultat = $this->query("SELECT ID_DokumentaStablo, Naziv FROM DokumentaStablo where ID_DokumentaStablo=$id_dok_stablo;");
  1772. while ($red = $this->fetch_Assoc($rezultat)) {
  1773. $naziv = $red['Naziv'];
  1774. }
  1775. if ($naziv === '') {
  1776. throw new Exception("Prazan naziv! Uzmi naziv dok");
  1777. }
  1778. return $naziv;
  1779. }
  1780.  
  1781. /**
  1782. * @todo COMMENT
  1783. *
  1784. * @param integer $id_radnika
  1785. * @return array
  1786. */
  1787. function user_data($id_radnika) {
  1788. $ok = FALSE;
  1789. $tmp = array();
  1790. $tmp2 = array();
  1791.  
  1792. $rezultat = $this->query("SELECT ID_KadrovskaEvidencija, SifRadnika, Ime,
  1793. Prezime, Suser, Pass FROM KadrovskaEvidencija where ID_KadrovskaEvidencija=$id_radnika");
  1794. if ($rezultat !== false) {
  1795. while ($red = $this->fetch_Assoc($rezultat)) {
  1796. $tmp = $red;
  1797. $ok = true;
  1798. }
  1799. $i = 0;
  1800. $rezultat = $this->query("SELECT ID_OrganizacionaStruktura FROM KadroviIOrganizacionaStruktura where ID_KadrovskaEvidencija=$id_radnika");
  1801. while ($red = $this->fetch($rezultat)) {
  1802. $tmp2[$i] = $red[0];
  1803. $i++;
  1804. }
  1805. $tmp['org_str'] = $tmp2;
  1806. return $ok && $i > 0 ? $tmp : 0;
  1807. }
  1808. }
  1809.  
  1810. /**
  1811. * Vrsi update sifre radnika
  1812. *
  1813. * @param integer $id
  1814. * @param string $pass
  1815. * @return PDOStatement
  1816. */
  1817. function user_pass_update($id, $pass) {
  1818. return $this->query("update KadrovskaEvidencija set Pass='$pass' where ID_KadrovskaEvidencija=$id");
  1819. }
  1820.  
  1821. /**
  1822. * Vraca sifru radnik
  1823. *
  1824. * @param integer $id_radnika
  1825. * @return string
  1826. */
  1827. function uzmi_sifru_rad($id_radnika) {
  1828. $rezultat = $this->query("SELECT SifRadnika FROM KadrovskaEvidencija where ID_KadrovskaEvidencija=$id_radnika;");
  1829. while ($red = $this->fetch($rezultat)) {
  1830. $sifra = $red[0];
  1831. }
  1832. return $sifra;
  1833. }
  1834.  
  1835. /**
  1836. * Vraca id organizacione jedinice radnika
  1837. *
  1838. * @param integer $id_radnika
  1839. * @param integer
  1840. */
  1841. function uzmi_idorg_rad($id_radnika) {
  1842. $rezultat = $this->query("SELECT ID_OrganizacionaStruktura FROM KadroviiOrganizacionaStrukturaStavkeView where ID_KadrovskaEvidencija=$id_radnika AND ID_Organizacionastrukturastablo=" . $_SESSION['idfirma']);
  1843.  
  1844. while ($red = $this->fetch($rezultat)) {
  1845. $sifra = $red[0];
  1846. }
  1847. return (int) $sifra;
  1848. }
  1849.  
  1850. /**
  1851. * Vraca id poslednjeg unetog sloga
  1852. *
  1853. * @param string $naziv_dok
  1854. * @return integer
  1855. */
  1856. function uzmi_max_id_dok($naziv_dok) {
  1857. $id_dok = '';
  1858. $rezultat = $this->query("SELECT max(ID_" . $naziv_dok . ") as m FROM " . $naziv_dok);
  1859. while ($red = $this->fetch($rezultat)) {
  1860. $id_dok = $red[0];
  1861. }
  1862. if ($id_dok === '') {
  1863. throw new Exception("Prazan id dok! Uzmi max id dok!");
  1864. }
  1865. return $id_dok;
  1866. }
  1867.  
  1868. /**
  1869. * Vraca status knjizenja dokumenta
  1870. *
  1871. * @param string $broj_dok
  1872. * @return integer
  1873. */
  1874. function uzmi_status_dok($iddok) {// $broj_dok = xxx-xx-xxxx/xxxx-xx
  1875. $sql = 'SELECT ID_Proknjizeno FROM DokumentaTotali where ID_DokumentaTotali=:iddok';
  1876. $sth = $this->prepare($sql);
  1877. $sth->bindParam(':iddok', $iddok);
  1878. $sth->execute();
  1879. $result = (int) $sth->fetch(PDO::FETCH_COLUMN);
  1880. if (!$result) {
  1881. return false;
  1882. }
  1883. switch ($result) {
  1884. case 2:
  1885. $status = 1; // proknjizen
  1886. break;
  1887. case 10:
  1888. $status = 2; // ne knjizi se
  1889. break;
  1890. default:
  1891. $status = 3; //nije proknjizeno
  1892. break;
  1893. }
  1894. return $status;
  1895. }
  1896.  
  1897. /**
  1898. * Vraca id datog dokumenta
  1899. *
  1900. * @param string $broj_dok
  1901. * @return integer
  1902. */
  1903. function uzmi_id_dok($broj_dok) {// $broj_dok = xxx-xx-xxxx/xxxx-xx
  1904. $id_dok = '';
  1905. $rezultat = $this->query("SELECT ID_Dokumenta FROM Dokumenta where BrojDokumenta='$broj_dok';");
  1906. while ($red = $this->fetch($rezultat)) {
  1907. $id_dok = $red[0];
  1908. }
  1909. return $id_dok === '' ? false : trim($id_dok);
  1910. }
  1911.  
  1912. /**
  1913. * Vraca broj dokumenta za uneti id
  1914. *
  1915. * @param integer $id_dok
  1916. * @return string
  1917. */
  1918. function uzmi_broj_dok($id_dok) {// $broj_dok = xxx-xx-xxxx/xxxx-xx
  1919. $broj_dok = '';
  1920. $rezultat = $this->query("SELECT BrojDokumenta FROM Dokumenta where ID_Dokumenta=$id_dok;");
  1921. while ($red = $this->fetch($rezultat)) {
  1922. $broj_dok = $red[0];
  1923. }
  1924. if ($broj_dok === '') {
  1925. throw new Exception("Prazan broj dok! Uzmi broj dok!");
  1926. }
  1927. return trim($broj_dok);
  1928. }
  1929.  
  1930. /**
  1931. * @todo COMMENT
  1932. *
  1933. * @param integer $iddok
  1934. * @return integer
  1935. */
  1936. public function kalkulacija_vezana_za_racun($iddok) {
  1937. $kveri = " SELECT Dokument as DK,BrDok as BD,ID_DokumentaView as IDK "
  1938. . " FROM KalkulacijaUf as r WITH (NOLOCK),Dokumentatotali as d WITH (NOLOCK)"
  1939. . " WHERE d.ID_Dokumentatotali=r.ID_DokumentaView and r.ID_UlazniRacunceo=" . $iddok;
  1940. $rezultat = $this->query($kveri);
  1941. if ($rezultat == false) {
  1942. return(1);
  1943. }
  1944. $idkalk = 1;
  1945. while ($red = $this->fetch($rezultat)) {
  1946. //postoji kalkulacija vezana za ulazni racun pa ponovo zovemo raspored troskova i totale za kalkulaciju
  1947. $idkalk = $red[2];
  1948. }
  1949. return $idkalk;
  1950. }
  1951.  
  1952. /**
  1953. * @todo COMMENT
  1954. *
  1955. * @param string $naziv_dok
  1956. * @param array $data
  1957. * @param string $imestabla
  1958. * @param integer $iid
  1959. * @return PDOStatement
  1960. */
  1961. public function storno_dokumenta($naziv_dok, $data, $id_dok_stablo, $imestabla, $iid, $datum_dok) {
  1962. $sve_ok = true;
  1963. $this->beginTransaction();
  1964. $broj_dokumenta = $this->uzmi_broj_dok($iid);
  1965.  
  1966. // menjamo broj odabranog dokumenta koji zalimo stornirati
  1967. $rsm = "update Dokumenta set BrojDokumenta=BrojDokumenta+'/S' where ID_Dokumenta =" . $iid;
  1968. $this->query($rsm);
  1969.  
  1970. $rezultat = $this->query("SELECT Upit,tabela,ime FROM Upiti where NazivDokumenta= 'Dokumenta' AND Ime like 'uuu%'");
  1971. if ($rezultat == false) {
  1972. return false;
  1973. }
  1974. while ($red = $this->fetch($rezultat)) {
  1975. $select = $red[0];
  1976. $tabela = $red[1];
  1977. $upit = str_replace('Uuu', '', $red[2]);
  1978. if (sizeof($data) == 0 || $tabela == '' || $select == '') {
  1979. return 'false';
  1980. }
  1981. $insert = "INSERT INTO Dokumenta (";
  1982. $insert2 = " VALUES("; // za stornirani dokument
  1983. $insert3 = " VALUES("; // za prazan dokunent
  1984. $select = trim($select);
  1985. $select = substr($select, 7, strlen($select) - 7); //vraca string bez SELECT
  1986. $select = stristr($select, 'from', true); //vraca sve prije from
  1987. $polja = explode(',', $select); //vraca sva polja iz originalne select naredbe
  1988.  
  1989. $id_rad = $_SESSION['idke'];
  1990. $id_org_str = $_SESSION['idorg'];
  1991. $insert = $insert . 'ID_DokumentaStablo' . ",";
  1992. $insert2 = $insert2 . $id_dok_stablo . ",";
  1993. $insert3 = $insert3 . $id_dok_stablo . ",";
  1994.  
  1995.  
  1996. foreach ($polja as $p) {
  1997. $p = trim($p);
  1998. $nasao = true;
  1999. switch ($p) {
  2000. case "Datum":
  2001. $insert .= $p . ",";
  2002. $insert2 .="'" . $datum_dok . "',";
  2003. $insert3 .="'" . $datum_dok . "',";
  2004. break;
  2005. case "ID_Predhodni":
  2006. break;
  2007. case "ID_LikvidacijaDokumenta":
  2008. break;
  2009. case "UUser":
  2010. $insert .= $p . ",";
  2011. $insert2 .= $_SESSION[idke] . ",";
  2012. $insert3 .= $_SESSION[idke] . ",";
  2013. break;
  2014. case "ID_DokumentaView":
  2015. $insert .= $p . ",";
  2016. $insert2 .= $iddok . ",";
  2017. $insert3 .= $iddok . ",";
  2018. break;
  2019. case "ID_KadrovskaEvidencija":
  2020. $insert .= $p . ",";
  2021. $insert2 .= $id_rad . ",";
  2022. $insert3 .= $id_rad . ",";
  2023. break;
  2024. case "ID_OrganizacionaStrukturaView":
  2025. $insert .= $p . ",";
  2026. $polje_podaci = $data->getPoljePodaci($p, $tabela);
  2027. $id_org_str = $polje_podaci['sadrzaj'];
  2028.  
  2029. $insert2 .= $id_org_str . ",";
  2030. $insert3 .= $id_org_str . ",";
  2031. break;
  2032. case "BrojDokumenta":
  2033. $insert .= $p . ",";
  2034. $insert2 .= "'" . $broj_dokumenta . "/SI',";
  2035. $insert3 .= "'" . $broj_dokumenta . "',";
  2036. break;
  2037. case "RedniBroj":
  2038. $s1 = explode('/', $broj_dokumenta);
  2039. $s2 = explode('-', $s1[0]);
  2040. $redni_broj = $s2[1];
  2041. $insert = $insert . $p . ",";
  2042. $insert2 .= $redni_broj . ",";
  2043. $insert3 .= $redni_broj . ",";
  2044. break;
  2045. case "Proknjizeno":
  2046. $insert .= $p . ",";
  2047. $insert2 .= "'NijeProknjizeno',";
  2048. $insert3 .= "'NijeProknjizeno',";
  2049. break;
  2050. case "MesecPoreza":
  2051. $mesecporeza = $this->popuni_mesecporeza($datum_dok);
  2052. $insert .= $p . ",";
  2053. $insert2 .= $mesecporeza . ",";
  2054. $insert3 .= $mesecporeza . ",";
  2055. break;
  2056. default:
  2057. $nasao = false;
  2058. break;
  2059. }
  2060. if ($nasao) {
  2061. $brojac_polja++;
  2062. }
  2063. if (!$nasao) { // AKO NIJE NI JEDNO OD IZNAD POMENUTIH POLJA
  2064. if (strpos($p, 'ID_') === 0) { //jeste ID_Polje
  2065. $polje_podaci = $data->getAlijasPodaci($p);
  2066. } else { // nije ID_polje
  2067. $polje_podaci = $data->getPoljePodaci($p, $tabela);
  2068. }
  2069. if (count($polje_podaci) > 0) {
  2070. $value = $polje_podaci['sadrzaj'];
  2071. $mupit = $polje_podaci['tvview'];
  2072.  
  2073. if ($upit == $mupit && $value != "" && $p != "ID_DokumentaView") {
  2074. $insert .= $p . ",";
  2075. $insert2 .= "'" . $value . "',";
  2076. $insert3 .= "'" . $value . "',";
  2077. }
  2078. }
  2079. }// nije nasao
  2080. }//foreach polja}
  2081. }
  2082. $insert = substr($insert, 0, strlen($insert) - 1); //ima zarez viska
  2083. $insert = $insert . ")";
  2084.  
  2085. $insert2 = substr($insert2, 0, strlen($insert2) - 1); //ima zarez viska
  2086. $insert2 = $insert2 . ")";
  2087. $insert3 = substr($insert3, 0, strlen($insert3) - 1); //ima zarez viska
  2088. $insert3 = $insert3 . ")";
  2089. $iinsert = $insert . $insert2;
  2090.  
  2091. // upisujemo dokument za storno
  2092. $this->query($iinsert);
  2093. // IDENT DOKUMENTA KOJI CEMO PREDATI STOR PROCEDURI ZA POPUNJAVANJE STORNA
  2094. $aa = $broj_dokumenta . "/SI";
  2095. $IdSled = $this->uzmi_id_dok($aa);
  2096.  
  2097. // upisujemo prazan slog koji cemo popuniti ispravnim vrednostima
  2098. $iinsert = $insert . $insert3;
  2099. $sve_ok = $this->query($iinsert);
  2100. $IdPrazan = $this->uzmi_id_dok($broj_dokumenta);
  2101.  
  2102. //ZAVRSAVANJE OPERACIJE STORNO DOKUMENTA
  2103. $this->sp_totali('Dokumenta', $iid);
  2104. $this->sp_totali('Dokumenta', $IdSled);
  2105. $this->sp_totali('Dokumenta', $IdPrazan);
  2106.  
  2107. // UPISUJEMO STORNO DOKUMENT U PRIPADAJUCE TABELE
  2108. $this->sp_storno_dokumenta($naziv_dok, $iid, $IdSled);
  2109. $this->sp_totali($naziv_dok, $iid);
  2110. $this->sp_cene_i_stanje($iid);
  2111. $this->sp_stanje_lot($iid);
  2112.  
  2113. $this->sp_totali($naziv_dok, $IdSled); // nece da napravi totale ??????????????????
  2114. $this->sp_cene_i_stanje($IdSled);
  2115. $this->sp_stanje_lot($IdSled);
  2116. // PROVERA STANJA NAKON STORNO DOKUMENTA
  2117. $rstreba = "Select oorderby as TrebaProvera,AlijasTabele from recnikpodataka where dokument='" . $naziv_dok . "' and oorderby>0";
  2118. $rez = $this->query($rstreba);
  2119. $red = $this->fetch_object($rez);
  2120. if (!empty($red)) {
  2121. $Poruka = $this->proveristanje($naziv_dok, $IdSled, $red->TrebaProvera);
  2122. if ($Poruka != "") {
  2123. if ($red->TrebaProvera == 1) {
  2124. $sve_ok = false;
  2125. jsonPoruka($Poruka);
  2126. $this->rollBack();
  2127. }
  2128. } else {
  2129. $this->commit();
  2130. }
  2131. }
  2132. return $sve_ok;
  2133. }
  2134.  
  2135. /**
  2136. * Vrsi brisanje dokumenata i stavki
  2137. *
  2138. * @param string $vrstadokumenta
  2139. * @param string $naziv_dok
  2140. * @param array $data
  2141. * @param integer $id_dok_stablo
  2142. * @param string $imestabla
  2143. * @param integer $iid
  2144. * @return boolean
  2145. */
  2146. public function delete_naredba($vrstadokumenta, $naziv_dok, $data, $id_dok_stablo = 0, $imestabla = '', $iid = null) {
  2147. $klon = $this->uzmi_naziv_klona($naziv_dok);
  2148. $kveri = "SELECT tabela FROM Upiti where NazivDokumenta= '" . $klon . "' AND ime like'Uuu%'";
  2149. $rezultat = $this->query($kveri);
  2150.  
  2151. $red = $this->fetch($rezultat);
  2152. if (empty($red)) {
  2153. return true;
  2154. }
  2155. $tabela = $red[0];
  2156.  
  2157. $delete = "DELETE FROM " . $tabela . " Where ID_" . $tabela . "=" . $iid;
  2158. $this->query($delete);
  2159.  
  2160. if ($vrstadokumenta != 'P') {
  2161. $this->sp_totali($klon, $iid);
  2162. }
  2163. // BRISANJE SLOGOVA IZ PRIPADAJUCIH TABELA NAKON BRISANJA IZ DOKUMENATA
  2164. if ($imestabla == 'Dokumenta') {
  2165. $naziv_dokumenta = $this->uzmi_naziv_dok($id_dok_stablo);
  2166. $klon = $this->uzmi_naziv_klona($naziv_dokumenta);
  2167. $rezultat = $this->query("SELECT tabela FROM Upiti where NazivDokumenta='" . $klon . "' and ime LIKE 'UUU%'");
  2168. if ($rezultat == false) {
  2169. return true;
  2170. }
  2171. while ($red = $this->fetch($rezultat)) {
  2172. $tabela = $red[0];
  2173. $delete = "DELETE FROM " . $tabela . " Where ID_DokumentaView=" . $iid;
  2174. $this->query($delete);
  2175. }
  2176. $sql = "SELECT DISTINCT TotaliDaNe FROM refreshGrida WHERE dokument = '$naziv_dokumenta' AND TotaliDaNe LIKE '%DA%'";
  2177. $rez = $this->query($sql);
  2178. $red = $this->fetch_object($rez);
  2179. if (!empty($red)) {
  2180. $this->sp_totali($klon, $iid);
  2181. }
  2182. }
  2183. return true;
  2184. }
  2185.  
  2186. /**
  2187. * Vrsi update dokumenata i stavki
  2188. *
  2189. * @param string $vrstadokumenta
  2190. * @param string $naziv_dok
  2191. * @param array $data
  2192. * @param string $imestabla
  2193. * @param integer $id_dok_stablo
  2194. * @param integer $iid
  2195. * @param integer $iddok
  2196. * @param string $klon
  2197. * @param string $tabela
  2198. * @return boolean
  2199. */
  2200. public function update_naredba($vrstadokumenta, $naziv_dok, IParams $data, $imestabla = '', $id_dok_stablo = 0, $iid = -1, $iddok = null, $klon = null, $tabela = null) {
  2201. $data->sanitize();
  2202. if ($vrstadokumenta == "D") {
  2203. $kveri = "SELECT Upit,tabela,ime FROM Upiti where NazivDokumenta='$klon' AND Ime like 'uuu%' AND tabela='$tabela'";
  2204. } else {
  2205. $kveri = "SELECT Upit,tabela,ime FROM Upiti where NazivDokumenta='$naziv_dok' AND Ime like 'uuu%'";
  2206. }
  2207. $rezultat = $this->query($kveri);
  2208. while ($red = $this->fetch($rezultat, 2)) {
  2209. $select = trim($red['Upit']);
  2210. $tabela = $red['tabela'];
  2211. $upit = trim(str_replace('Uuu', '', $red['ime']));
  2212. if (sizeof($data) == 0 || $tabela == '' || $select == '') {
  2213. return false;
  2214. }
  2215.  
  2216. $insert = "UPDATE $tabela SET ";
  2217. $select = substr($select, 7, strlen($select) - 7); //vraca string bez SELECT
  2218. $select = stristr($select, 'from', true); //vraca sve prije from
  2219. $polja = explode(',', $select); //vraca sva polja iz originalne select naredbe
  2220. if ($vrstadokumenta === "S") {
  2221. $pp = "ID_" . $tabela . "Stablo";
  2222. // $polje_podaci = $data->getAlijasPodaci($pp);
  2223. $value = $id_dok_stablo; ///$polje_podaci['sadrzaj'];
  2224. $insert .= $pp . "=";
  2225. $insert .= "N'" . $value . "',";
  2226. }
  2227. foreach ($polja as $p) {
  2228. $p = trim($p);
  2229. $nasao = false;
  2230. if ($p == "UUser") {
  2231. $insert .= "$p='" . $_SESSION['idke'] . "',";
  2232. $nasao = true;
  2233. }
  2234. if ($p == "TTime" && $tabela !== "Dokumenta") {
  2235. $insert .= "$p='" . date("d.m.y H:i:s") . "',";
  2236. $nasao = true;
  2237. }
  2238. if ($p === "BrojDokumenta") {
  2239. $polje_podaci = $data->getAlijasPodaci($p);
  2240. $value = $polje_podaci['sadrzaj'];
  2241. if (trim($value) !== "") {
  2242. $insert .= $p . "=";
  2243. $insert .= "N'" . $value . "',";
  2244. }
  2245. $nasao = true;
  2246. }
  2247.  
  2248. if ($tabela === "Dokumenta" && ( $p === "RedniBroj" || $p === "MesecPoreza")) {
  2249. $nasao = true;
  2250. }
  2251. if (!$nasao) { // AKO NIJE NI JEDNO OD IZNAD POMENUTIH POLJA
  2252. if (strpos($p, 'ID_') === 0) { //jeste ID_Polje
  2253. if ($p == "ID_DokumentaView") {
  2254. $polje_podaci = $data->getPoljePodaci($p, $tabela);
  2255. $value = $iddok;
  2256. } else {
  2257. $polje_podaci = $data->getAlijasPodaci($p);
  2258. $value = $polje_podaci['sadrzaj'];
  2259. }
  2260. } else { // nije ID_polje
  2261. try {
  2262. $polje_podaci = $data->getPoljePodaci($p, $tabela);
  2263. $value = $polje_podaci['sadrzaj'];
  2264. } catch (Exception $e) {
  2265. Log::NE_POSTOJI_ALIJAS($naziv_dok, $p, $e);
  2266. continue;
  2267. }
  2268. }
  2269. if (count($polje_podaci) > 0) {
  2270. $mupit = $polje_podaci['tvview'];
  2271. if (strieq($upit, $mupit)) {
  2272. $insert .= $p . "=";
  2273. if ($value === 'null') {
  2274. $insert .= 'null,';
  2275. } else {
  2276. $insert .= "N'" . $value . "',";
  2277. }
  2278. }
  2279. }
  2280. }
  2281. }//foreach polja
  2282. $insert = substr($insert, 0, strlen($insert) - 1); //ima zarez viska
  2283.  
  2284. if ($vrstadokumenta == "D") {
  2285. if (strpos($upit, "Stavke") === false) { // nisu Stavke
  2286. $insert .= " Where ID_DokumentaView=$iddok";
  2287. } else {
  2288. $insert .= " Where ID_{$tabela}=$iid";
  2289. }
  2290. } else { //vrstadokumenta nije "D"
  2291. $insert .= " Where ID_{$tabela}=$iid";
  2292. }
  2293. // Log::update($insert);
  2294. //die();
  2295. try {
  2296. $this->query($insert);
  2297. } catch (PDOException $e) {
  2298. Log::DATABASE_UPDATE_ERROR($insert, $e);
  2299. throw $e;
  2300. }
  2301. }// svi redovi iz upita
  2302. if ($imestabla === "Dokumenta") { // samo tada izvrsimo totale za Komitente i Artikle cemo to uraditi u dovrsiobradu
  2303. $this->sp_totali($imestabla, $iid);
  2304. }
  2305. return true;
  2306. }
  2307.  
  2308. /**
  2309. * Vrsi insert dokumenata i stavki
  2310. *
  2311. * @param string $vrstadokumenta
  2312. * @param string $naziv_dok
  2313. * @param array $data
  2314. * @param integer $id_dok_stablo
  2315. * @param string $datum_dok
  2316. * @param string $imestabla
  2317. * @parma integer $iddok
  2318. * @param string $klon
  2319. * @param string $tabela
  2320. * @return PDOStatement
  2321. */
  2322. public function insert_naredba($vrstadokumenta, $naziv_dok, IParams $data, $id_dok_stablo = 0, $datum_dok = null, $imestabla = null, $iddok = null, $klon = null, $tabela = '', $brdok = '') {
  2323. //var_dump($naziv_dok);
  2324. $data->sanitize();
  2325. if ($vrstadokumenta == "D") {
  2326. $kveri = "SELECT Upit,tabela,ime FROM Upiti where NazivDokumenta= '$klon' AND Ime like 'uuu%' AND tabela='$tabela'";
  2327. } else {
  2328. $kveri = "SELECT Upit,tabela,ime FROM Upiti where NazivDokumenta= '$naziv_dok' AND Ime like 'uuu%'";
  2329. }
  2330. $rezultat = $this->query($kveri);
  2331. while ($red = $this->fetch($rezultat)) {
  2332. $select = $red[0];
  2333. $tabela = $red[1];
  2334. $upit = str_replace('Uuu', '', $red[2]);
  2335. if (sizeof($data) == 0 || $tabela == '' || $select == '') {
  2336. return false;
  2337. }
  2338.  
  2339. $insert = "INSERT INTO $tabela (";
  2340. $insert2 = " VALUES(";
  2341.  
  2342. $select = trim($select);
  2343. $select = substr($select, 7, strlen($select) - 7); //vraca string bez SELECT
  2344. $select = stristr($select, 'from', true); //vraca sve prije from
  2345. $polja = explode(',', $select); //niz polja iz select naredbe
  2346. $brojac_polja = 0;
  2347. $broj_dokumenta = '';
  2348. $id_rad = $_SESSION['idke'];
  2349. $id_org_str = $_SESSION['idorg'];
  2350. if ($vrstadokumenta === "S") {
  2351. $pp = "ID_" . $tabela . "Stablo";
  2352. $value = $id_dok_stablo; //$polje_podaci['sadrzaj'];
  2353. $insert .= $pp . ",";
  2354. $insert2 .= $value . ",";
  2355. }
  2356.  
  2357. foreach ($polja as $p) {
  2358. $p = trim($p);
  2359. // polja koja se ne unose vec ih programski dodeljujemo
  2360. $nasao = true;
  2361. switch ($p) {
  2362. case "ID_DokumentaView":
  2363. $insert .= $p . ",";
  2364. $insert2 .= $iddok . ",";
  2365. break;
  2366. case "ID_KadrovskaEvidencija":
  2367. if ($klon !== 'Dozvole') {
  2368. $insert .= $p . ",";
  2369. $insert2 .= $id_rad . ",";
  2370. } else {
  2371. $nasao = false;
  2372. }
  2373. break;
  2374. case "ID_OrganizacionaStrukturaView":
  2375. $insert .= $p . ",";
  2376. $insert2 .= $id_org_str . ",";
  2377. break;
  2378. case "BrojDokumenta":
  2379. $naziv_dokumenta = $this->uzmi_naziv_dok($id_dok_stablo);
  2380. if ($brdok !== "") {
  2381. $broj_dokumenta = $brdok;
  2382. } else {
  2383. $broj_dokumenta = $this->sp_kreiraj_broj($naziv_dokumenta, $id_dok_stablo, $datum_dok, $id_org_str, $_SESSION['idke']);
  2384. }
  2385. $insert .= $p . ",";
  2386. $insert2 .= "'" . $broj_dokumenta . "',";
  2387. break;
  2388. case "RedniBroj":
  2389. if ($klon === 'Dokumenta') {
  2390. $s1 = explode('/', $broj_dokumenta);
  2391. $s2 = explode('-', $s1[0]);
  2392. $redni_broj = $s2[1];
  2393. $insert = $insert . $p . ",";
  2394. $insert2 .= $redni_broj . ",";
  2395. } else {
  2396. $nasao = false;
  2397. }
  2398. break;
  2399. case "Proknjizeno":
  2400. $prokknjizeno = $this->popuni_proknjizeno($naziv_dokumenta);
  2401. $insert .= $p . ",";
  2402. $insert2 .= "'" . $prokknjizeno . "',";
  2403. break;
  2404. case "MesecPoreza":
  2405. $mesecporeza = $this->popuni_mesecporeza($datum_dok);
  2406. $insert .= $p . ",";
  2407. $insert2 .= $mesecporeza . ",";
  2408. break;
  2409. case "UUser":
  2410. $insert .= $p . ",";
  2411. $insert2 .= $_SESSION[idke] . ",";
  2412. break;
  2413. case "TTime":
  2414. $ttime = date("d.m.y H:i:s");
  2415. $insert .= $p . ",";
  2416. $insert2 .= "'" . $ttime . "',";
  2417. break;
  2418. default:
  2419. $nasao = false;
  2420. break;
  2421. }
  2422. if ($nasao) {
  2423. $brojac_polja++;
  2424. }
  2425. if (!$nasao) { // AKO NIJE NI JEDNO OD IZNAD POMENUTIH POLJA
  2426. if (strpos($p, 'ID_') === 0) { //jeste ID_Polje
  2427. $polje_podaci = $data->getAlijasPodaci($p);
  2428. } else { // nije ID_polje
  2429. $polje_podaci = $data->getPoljePodaci($p, $tabela);
  2430. }
  2431. if (count($polje_podaci) > 0) {
  2432. $value = $polje_podaci['sadrzaj'];
  2433. $mupit = $polje_podaci['tvview'];
  2434. if ($upit == $mupit && $value != "" && $p != "ID_DokumentaView") {
  2435. $brojac_polja++;
  2436. $insert .= $p . ",";
  2437. if ($value === 'null') {
  2438. $insert2 .= 'null,';
  2439. } else {
  2440. $insert2 .= "N'" . $value . "',";
  2441. }
  2442. }
  2443. }
  2444. }// nije nasao
  2445. }//foreach polja}
  2446.  
  2447. if ($brojac_polja == 0) {
  2448. return false;
  2449. }
  2450. $insert = substr($insert, 0, strlen($insert) - 1); //ima zarez viska
  2451. $insert .= ")";
  2452.  
  2453. $insert2 = substr($insert2, 0, strlen($insert2) - 1); //ima zarez viska
  2454. $insert2 .= ")";
  2455. $insert .= $insert2;
  2456. try {
  2457. $this->query($insert);
  2458. } catch (PDOException $e) {
  2459. Log::DATABASE_INSERT_ERROR($insert, $e);
  2460. if ($e->getCode() === '23000') {
  2461. jsonPoruka('Vec postoji unet dati indeks, ne moze se uneti duplikat!');
  2462. die();
  2463. }
  2464. throw $e;
  2465. }
  2466. } // foreach red iz upita
  2467.  
  2468. if ($vrstadokumenta === 'S') {
  2469. if ($imestabla === 'Dokumenta') {
  2470. $idDok = $this->uzmi_id_dok($broj_dokumenta);
  2471. } else { //ostali osnovni sifarnici
  2472. $idDok = $this->uzmi_max_id_dok($imestabla);
  2473. }
  2474. $this->sp_totali($imestabla, $idDok);
  2475. }
  2476. return $idDok;
  2477. }
  2478.  
  2479. /**
  2480. * @todo COMMENT
  2481. *
  2482. * @param integer $id_dokumenta
  2483. * @return PDOStatement
  2484. * @throws Exception
  2485. */
  2486. function update_lotpdvdostavnicaumaloprodaju($id_dokumenta) {
  2487. $kveri = "update RacunStavke set ProdajnaCena=c.ProdajnaCena from Cenovnik as c," .
  2488. " Racun as r, RacunStavke as rs where c.ID_ArtikliView=rs.ID_ArtikliView " .
  2489. " and rs.id_DokumentaView=r.ID_DokumentaView and c.ID_Skladiste=r.ID_Skladiste2 " .
  2490. " and r.ID_DokumentaView=" . $id_dokumenta . " and rs.ProdajnaCena=0";
  2491. $sve_ok = $this->query($kveri);
  2492.  
  2493.  
  2494. $kveri2 = "update RacunStavke set ProsecnaNabavnaCena=c.ProsecnaNabavnaCena ," .
  2495. " NabavnaCena=c.ProsecnaNabavnaCena" .
  2496. " from Cenovnik as c, Racun as r, RacunStavke as rs " .
  2497. " where c.ID_ArtikliView=rs.ID_ArtikliView and " .
  2498. " rs.id_DokumentaView=r.ID_DokumentaView and " .
  2499. " c.ID_Skladiste=r.ID_Skladiste and rs.ProsecnaNabavnaCena=0 and " .
  2500. " r.ID_DokumentaView=" . $id_dokumenta;
  2501.  
  2502. //if($sve_ok)
  2503. $sve_ok = $this->query($kveri2);
  2504.  
  2505. if (!$sve_ok) {
  2506. throw new Exception("Greska update! update_lotpdvdostavnicaumaloprodaju!");
  2507. }
  2508. return $sve_ok;
  2509. }
  2510.  
  2511. /**
  2512. * @todo COMMENT
  2513. *
  2514. * @param integer $id_dokumenta
  2515. * @return PDOStatement
  2516. * @throws Exception
  2517. */
  2518. function update_lotpdvinternadostavnica($id_dokumenta) {
  2519. $kveri = "update RacunStavke set Primljeno=kolicina from RacunStavke as rs " .
  2520. "where rs.ID_DokumentaView=" . $id_dokumenta . " and Primljeno=0";
  2521.  
  2522. $sve_ok = $this->query($kveri);
  2523.  
  2524. $kveri2 = "update RacunStavke set NabavnaCena=c.ProsecnaNabavnaCena " .
  2525. "from Cenovnik as c,Racun as r, RacunStavke as rs " .
  2526. "where c.ID_ArtikliView=rs.ID_ArtikliView " .
  2527. "and rs.id_DokumentaView=r.ID_DokumentaView " .
  2528. "and c.ID_Skladiste=r.ID_Skladiste and " .
  2529. "r.ID_DokumentaView=" . $id_dokumenta . " and rs.NabavnaCena = 0";
  2530.  
  2531. //if($sve_ok)
  2532. $sve_ok = $this->query($kveri2);
  2533.  
  2534.  
  2535. $kveri3 = "update RacunStavke set ProdajnaCena=c.ProsecnaNabavnaCena " .
  2536. "from Cenovnik as c,Racun as r, RacunStavke as rs " .
  2537. "where c.ID_ArtikliView=rs.ID_ArtikliView " .
  2538. "and rs.id_DokumentaView=r.ID_DokumentaView " .
  2539. "and c.ID_Skladiste=r.ID_Skladiste and " .
  2540. "r.ID_DokumentaView=" . $id_dokumenta . " and rs.ProdajnaCena = 0";
  2541.  
  2542. //if($sve_ok)
  2543. $sve_ok = $this->query($kveri3);
  2544.  
  2545. $kveri4 = "update RacunStavke set ProsecnaNabavnaCena=ProdajnaCena, NabavnaCena=ProdajnaCena " .
  2546. " where ID_DokumentaView=" . $id_dokumenta;
  2547.  
  2548. //if($sve_ok)
  2549. $sve_ok = $this->query($kveri4);
  2550.  
  2551. $kveri5 = "update RacunStavke set PDV=at.pdv " .
  2552. " From RacunStavke as rs, KonacniRacunStavkeView as at " .
  2553. " where ID_DokumentaView=" . $id_dokumenta .
  2554. " AND rs.ID_DokumentaView=at.ID_KonacniRacunStavkeView" .
  2555. " AND rs.ID_ArtikliView=at.ID_ArtikliView";
  2556.  
  2557. //if($sve_ok)
  2558. $sve_ok = $this->query($kveri5);
  2559.  
  2560.  
  2561. $kveri6 = "update RacunStavke set ProsecnaNabavnaCena=c.ProsecnaNabavnaCena " .
  2562. "from Cenovnik as c, RacunStavke as rs, Racun as R,KonacniRacunTotali as KR where " .
  2563. "c.ID_Skladiste = r.ID_Skladiste and c.ID_ArtikliView=rs.ID_ArtikliView " .
  2564. " and (rs.ProsecnaNabavnaCena=0 or (rs.id_artikliview<>kr.id_artikliview and rs.id_racunstavke=KR.iid and r.ID_DokumentaView = KR.ID_KonacniRacunTotali)) " .
  2565. " And r.ID_DokumentaView = rs.ID_DokumentaView " .
  2566. "And r.ID_DokumentaView = " . $id_dokumenta;
  2567.  
  2568. //if($sve_ok)
  2569. $sve_ok = $this->query($kveri6);
  2570.  
  2571. $kveri7 = "update RacunStavke set ProdajnaCena=ProsecnaNabavnaCena, " .
  2572. "NabavnaCena=ProsecnaNabavnaCena from RacunStavke as rs " .
  2573. "where rs.ID_DokumentaView = " . $id_dokumenta;
  2574.  
  2575. //if($sve_ok)
  2576. $sve_ok = $this->query($kveri7);
  2577.  
  2578. if (!$sve_ok) {
  2579. throw new Exception("Greska prilikom izvrsavanja upita! update_lotpdvinternadostavnica!");
  2580. }
  2581. return $sve_ok;
  2582. }
  2583.  
  2584. /**
  2585. * @todo COMMENT
  2586. *
  2587. * @param integer $id_dokumenta
  2588. * @return PDOStatement
  2589. * @throws Exception
  2590. */
  2591. function update_lotinterninalogzarobu_lotpdvinterninalogzarobu($id_dokumenta) {
  2592. $kveri = "SELECT c.ProsecnaNabavnaCena as pnc,c.PlanskaCena as plc FROM Cenovnik as c," .
  2593. " InterniNalogZaRobuStavke as rs, InterniNalogZaRobu as R " .
  2594. " WHERE c.ID_Skladiste = r.ID_Skladiste " .
  2595. " AND c.ID_ArtikliView=rs.ID_ArtikliView and r.ID_DokumentaView=rs.ID_DokumentaView " .
  2596. " AND r.ID_DokumentaView=" . $id_dokumenta;
  2597. $imacena = false;
  2598. $rez = $this->query($kveri);
  2599. while ($this->fetch($rez)) {
  2600. $imacena = true;
  2601. }
  2602. if ($imacena) {
  2603. $kveri2 = "update InterniNalogZaRobuStavke set JedinicnaCena=c.ProsecnaNabavnaCena " .
  2604. " from Cenovnik as c,InterniNalogZaRobuStavke as rs, InterniNalogZaRobu as R " .
  2605. " where c.ID_Skladiste = r.ID_Skladiste " .
  2606. " and c.ID_ArtikliView=rs.ID_ArtikliView and r.ID_DokumentaView=rs.ID_DokumentaView " .
  2607. " and r.ID_DokumentaView=" + $id_dokumenta + " And JedinicnaCena=0";
  2608. $sve_ok = $this->query($kveri2);
  2609. }
  2610. if (!$sve_ok) {
  2611. throw new Exception("Greska prilikom izvrsavanja upita! update_lotinterninalogzarobu_lotpdvinterninalogzarobu!");
  2612. }
  2613. return $sve_ok;
  2614. }
  2615.  
  2616. /**
  2617. * Cita strukturu grida iz recnika podataka
  2618. *
  2619. * @param string $doc
  2620. * @param string $tabela
  2621. * @return array
  2622. */
  2623. function grid_load_str($doc, $tabela) {
  2624. $br_kolona = 0;
  2625. $kolone = array();
  2626. $strukt_upit = "SELECT AlijasPolja, Polje, Srpski, WidthKolone, TipoviPodataka.CSS, TipoviPodataka.PHPFormat,
  2627. RecnikPodataka.ID_NaziviNaFormi, TipoviPodataka.ID_TipoviPodataka, RecnikPodataka.DodatniCSS,TabIndex,TabelaVView,JJoinTVv as ImaNaslov, formulaForme FROM RecnikPodataka, NaziviNaFormi, TipoviPodataka where "
  2628. . "RecnikPodataka.Dokument<>'' and TipoviPodataka.ID_TipoviPodataka=RecnikPodataka.ID_TipoviPodataka and
  2629. RecnikPodataka.ID_NaziviNaFormi=NaziviNaFormi.ID_NaziviNaFormi and
  2630. (width > 0 or alijaspolja='color' or RecnikPodataka.ID_NAZIViNAFORMI=20
  2631. or RecnikPodataka.ID_NAZIViNAFORMI=25 or alijaspolja like'IID%'
  2632. or alijaspolja like 'Id_'+ AlijasTabele
  2633. or (Izborno <> '' and alijaspolja like 'Id_'+ Izborno)) AND TUD>-1 AND
  2634. Dokument='$doc' and TabelaVView='$tabela' order by Dokument,tabelavview,tabindex;";
  2635. $rezultat = $this->query($strukt_upit);
  2636. while ($red = $this->fetch_Assoc($rezultat)) {
  2637. if ($doc != "KadroviIOrganizacionaStruktura" && $doc != "Dozvole") {
  2638. if ($red['AlijasPolja'] != "NazivOrg") {
  2639. $kolone[$br_kolona] = $red;
  2640. $br_kolona++;
  2641. }
  2642. } else {
  2643. $kolone[$br_kolona] = $red;
  2644. $br_kolona++;
  2645. }
  2646. }
  2647. return $br_kolona === 0 ? 0 : $kolone;
  2648. }
  2649.  
  2650. /**
  2651. * @todo COMMENT
  2652. *
  2653. * @param string $doc
  2654. * @param string $tabela
  2655. * @return string
  2656. */
  2657. function grid_totali($doc, $tabela) {
  2658. $strukt_upit = "SELECT TotaliDaNe FROM RefreshGrida WHERE Dokument='$doc' and ImeUpita='$tabela'";
  2659. $rezultat = $this->query($strukt_upit);
  2660. $red = $this->fetch_Assoc($rezultat);
  2661. return trim($red['TotaliDaNe']);
  2662. }
  2663.  
  2664. /**
  2665. * Vraca podatke za zadati brdok
  2666. *
  2667. * @param string $brdok
  2668. * @return array
  2669. */
  2670. function uzmi_podatke_iz_brdok($brdok) {
  2671. $query = 'SELECT Naziv as nazivdok, ulazniizlazni as klon, vrsta, NacinRegistracije as nacinreg, iid as id_dokumenta FROM SifarnikDokumenta, dokumentatotali where brdok = :brdok AND SifarnikDokumenta.naziv = dokumentatotali.dokument';
  2672. $sth = $this->prepare($query);
  2673. $sth->bindParam(':brdok', $brdok);
  2674. $sth->execute();
  2675. return $sth->fetch(2);
  2676. }
  2677.  
  2678. /**
  2679. * Vraca registarski broj za dati dokument
  2680. *
  2681. * @param string $dokument
  2682. * @return string
  2683. */
  2684. function uzmi_registarski_broj($dokument) {
  2685. $query = "SELECT RegistarskiBroj FROM SifarnikDokumenta WHERE Naziv = :dokument";
  2686. $sth = $this->prepare($query);
  2687. $sth->bindValue(':dokument', $dokument);
  2688. $sth->execute();
  2689. $res = $sth->fetch(2);
  2690. return !empty($res) ? $res['RegistarskiBroj'] : '';
  2691. }
  2692.  
  2693. public function uzmi_sifradok($dokument) {
  2694. $sql = 'select brdok from izvestajistablo where naziv = :dokument';
  2695. $sth = $this->prepare($sql);
  2696. $sth->bindParam(':dokument', $dokument);
  2697. $sth->execute();
  2698. return $sth->fetch(PDO::FETCH_COLUMN);
  2699. }
  2700.  
  2701. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement