Billing.php 112 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001
  1. <?php
  2. Lib::loadClass( 'TableAcl' );
  3. Lib::loadClass( 'UserAcl' );
  4. class Billing {
  5. function __construct($DATABASE) {
  6. $this->db=DB::getDB($DATABASE);
  7. DEBUG_S(3,'DB',array($this->db,$DATABASE),__FILE__,__FUNCTION__,__LINE__);
  8. //if(empty($this->db->_zasob_id)) die('You must set in config database for billing zasob_id variable');
  9. if(empty($DATABASE)) die('You must set in config database for billing zasob_id variable');
  10. //$this->TableAcl->GetTablesByDbId=TableAcl::GetTablesByDbId($this->db->_zasob_id);
  11. $this->TableAcl->GetTablesByDbId=TableAcl::GetTablesByDbId($DATABASE);
  12. DEBUG_S(3,'TableAcl->GetTablesByDbId',$this->TableAcl,__FILE__,__FUNCTION__,__LINE__);
  13. }
  14. function set_client_filter($ID_BILLING_USERS) {
  15. $this->set_client_filter=$ID_BILLING_USERS;
  16. }
  17. function show_doc_BILLING_NUMBER_TYPE_header($ID_BILLING_NUMBERS) {
  18. $sql="select ID,ID_BILLING_PREFIXES,NUMBER,ID_BILLING_USERS,U_ID,BILLING_OWNER from BILLING_NUMBERS where ID=".$ID_BILLING_NUMBERS ;
  19. $res=$this->db->query($sql);
  20. while($h=$this->db->fetch($res)) {
  21. return $h;
  22. }
  23. }
  24. function show_doc_BILLING_NUMBERS_TYPE_CLASS_FINANCE($ID_BILLING_NUMBERS) {
  25. self::add_require_perm('BILLING_NUMBERS','ID','R');
  26. self::check_perms();
  27. $result_BILLING_NUMBERS_TYPE=self::get_document_type($ID_BILLING_NUMBERS);
  28. $header=self::show_doc_BILLING_NUMBER_TYPE_header($ID_BILLING_NUMBERS);
  29. $sql="select * from ".$result_BILLING_NUMBERS_TYPE['TABLE']." where ID_BILLING_NUMBERS=".$header->ID;
  30. $res=$this->db->query($sql);
  31. $docum=$this->db->fetch($res);
  32. $client=self::BILLING_USERS_ADD($header->ID_BILLING_USERS);
  33. $author=self::BILLING_USERS_ADD($header->U_ID);
  34. $owner=self::BILLING_OWNER($client->BILLING_OWNER);
  35. $doc->author=$author;
  36. $doc->header=$header;
  37. $doc->result_BILLING_NUMBERS_TYPE=$result_BILLING_NUMBERS_TYPE;
  38. $doc->client=$client;
  39. $doc->owner=$owner;
  40. $doc->docum=$docum;
  41. return $doc;
  42. }
  43. function show_doc_BILLING_NUMBERS_TYPE_CLASS_SELL_WINIEN($ID_BILLING_NUMBERS) {
  44. self::add_require_perm('BILLING_NUMBERS','ID','R');
  45. self::check_perms();
  46. $result_BILLING_NUMBERS_TYPE=self::get_document_type($ID_BILLING_NUMBERS);
  47. DEBUG_S(3,'result_BILLING_NUMBERS_TYPE',$result_BILLING_NUMBERS_TYPE,__FILE__,__FUNCTION__,__LINE__);
  48. $header=self::show_doc_BILLING_NUMBER_TYPE_header($ID_BILLING_NUMBERS);
  49. DEBUG_S(3,'header',$header,__FILE__,__FUNCTION__,__LINE__);
  50. $sql="select * from ".$result_BILLING_NUMBERS_TYPE['TABLE']." where ID_BILLING_NUMBERS=".$header->ID;
  51. $res=$this->db->query($sql);
  52. $docum=$this->db->fetch($res);
  53. $sqlbl = "
  54. select ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".NUMBER , ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID ,
  55. ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.ID_BILLS_FVAT, ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.VAT_NAME, ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.VAT,
  56. ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.ID_SERVICES,".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.DESCR ,
  57. ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.ID as POS_ID , ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.PRICE ,".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.AMMOUNT,
  58. ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.DATE_FROM , ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.DATE_TO ,
  59. ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.PRICE * ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.AMMOUNT as WARTOSC ,".$result_BILLING_NUMBERS_TYPE[TABLE].".PAYMENT_TYPE ,
  60. LIST_SERVICES.description , list_sww.name as SWW_NAME ,
  61. LIST_SERVICES2.description as description2, LIST_SERVICES2.jednostka_miary as jednostka_miary2
  62. from ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE]."
  63. left join ".$result_BILLING_NUMBERS_TYPE[TABLE]." on ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_NUMBERS=".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID
  64. left join ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS on ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID=".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.ID_BILLS_FVAT
  65. left join SERVICES on SERVICES.ID=".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.ID_SERVICES
  66. left join LIST_SERVICES on LIST_SERVICES.name=SERVICES.NAME_LIST_SERVICES
  67. left join LIST_SERVICES as LIST_SERVICES2 on LIST_SERVICES2.id=".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.id_list_services
  68. left join list_sww on ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.id_list_sww=list_sww.id
  69. where ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_NUMBERS = '".$ID_BILLING_NUMBERS."'
  70. ";
  71. //echo "<br>SQL ".$sqlbl;
  72. $res=$this->db->query($sqlbl);
  73. $i=1;
  74. $docum->razem_netto=0;
  75. $docum->razem_brutto=0;
  76. while($h=$this->db->fetch($res)) {
  77. $pos[$i]=$h;
  78. unset($name);
  79. if($h->description) $name=$h->description."(ID: ".$h->ID_SERVICES.") " ;
  80. else if($h->description2) $name=$h->description2 ;
  81. else $name=" Pozostałe usługi ";
  82. if($h->DESCR) $name.="<br>".$h->DESCR." ";
  83. if($h->DATE_FROM) $name.="<br><nobr> okres od ".$h->DATE_FROM."</nobr>" ;
  84. # 2008-03-06 Bzyk :: odjecie jednego dnia od daty 'do'
  85. #if($all4['DATE_TO']) $name.="<nobr> do ".$all4['DATE_TO']."</nobr>" ;
  86. if($h->DATE_TO) $name.="<nobr> do ".date("Y-m-d",strtotime($h->DATE_TO. " - 1 day"))."</nobr>" ;
  87. if($h->VAT_NAME) $VAT_CLASS=$h->VAT_NAME ; else $VAT_CLASS="zw.";
  88. if($h->jednostka_miary2) $jednostka_miary2=$h->jednostka_miary2 ; else $jednostka_miary2="mc";
  89. $allvat=self::formatuj_grosze($h->AMMOUNT*$h->PRICE*$h->VAT/100);
  90. $netto=self::formatuj_grosze($h->PRICE*$h->AMMOUNT);
  91. $docum->sqix_total[TOTAL][NETTO]+=$h->AMMOUNT*$h->PRICE ;
  92. $docum->sqix_total[TOTAL][BRUTTO]+=($h->AMMOUNT*$h->PRICE)+($h->AMMOUNT*$h->PRICE*$h->VAT/100) ;
  93. $docum->sqix_total[TOTAL][KW_VAT]+=($h->AMMOUNT*$h->PRICE*$h->VAT/100) ;
  94. $docum->sqix_total[$VAT_CLASS][NETTO]+=$h->AMMOUNT*$h->PRICE ;
  95. $docum->sqix_total[$VAT_CLASS][BRUTTO]+=($h->AMMOUNT*$h->PRICE)+($h->AMMOUNT*$h->PRICE*$h->VAT/100) ;
  96. $docum->sqix_total[$VAT_CLASS][KW_VAT]+=($h->AMMOUNT*$h->PRICE*$h->VAT/100) ;
  97. $docum->razem_netto+=$netto;
  98. $docum->razem_vat += $allvat;
  99. $docum->razem_brutto=$docum->razem_brutto+$docum->razem_netto;
  100. $pos[$i]->netto=$netto;
  101. $pos[$i]->name=$name;
  102. $pos[$i]->pos_number=$i;
  103. $pos[$i]->VAT_CLASS=$VAT_CLASS;
  104. $pos[$i]->jednostka_miary2=$jednostka_miary2;
  105. $pos[$i]->allvat=$allvat;
  106. $i++;
  107. }
  108. DEBUG_S(3,'pos',$pos,__FILE__,__FUNCTION__,__LINE__);
  109. DEBUG_S(3,'docum',$docum,__FILE__,__FUNCTION__,__LINE__);
  110. $client=self::BILLING_USERS_ADD($header->ID_BILLING_USERS);
  111. $author=self::BILLING_USERS_ADD($header->U_ID);
  112. DEBUG_S(3,'client',$client,__FILE__,__FUNCTION__,__LINE__);
  113. $owner=self::BILLING_OWNER($client->BILLING_OWNER);
  114. DEBUG_S(3,'owner',$owner,__FILE__,__FUNCTION__,__LINE__);
  115. $pay_option=self::LIST_FORM_PAY($docum->PAYMENT_TYPE,$owner->id_list_form_pay);
  116. $doc->author=$author;
  117. $doc->header=$header;
  118. $doc->result_BILLING_NUMBERS_TYPE=$result_BILLING_NUMBERS_TYPE;
  119. $doc->client=$client;
  120. $doc->owner=$owner;
  121. $doc->docum=$docum;
  122. $doc->pos=$pos;
  123. $doc->pay_option=$pay_option;
  124. return $doc;
  125. }
  126. /*
  127. function get_CLASS_SELL_WINIEN_POS($result_BILLING_NUMBERS_TYPE,$POS_ID) {
  128. //sciagniecie dokladnych info dla pozycji - nr uslugi / oferty itp
  129. $sql4 = "SELECT ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.* , LIST_SERVICES.description , list_sww.name as SWW_NAME ,
  130. LIST_SERVICES2.description as description2, LIST_SERVICES2.jednostka_miary as jednostka_miary2
  131. FROM ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS
  132. left join SERVICES on SERVICES.ID=".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.ID_SERVICES
  133. left join LIST_SERVICES on LIST_SERVICES.name=SERVICES.NAME_LIST_SERVICES
  134. left join LIST_SERVICES as LIST_SERVICES2 on LIST_SERVICES2.id=".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.id_list_services
  135. left join list_sww on ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.id_list_sww=list_sww.id
  136. WHERE ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.ID=".$POS_ID;
  137. // echo "$sql4<br><br>";
  138. $result4 = $this->db->query($sql4);
  139. $all4 = $this->db->fetch($result4);
  140. return $all4;
  141. }
  142. */
  143. function check_perms() {
  144. foreach($this->add_require_perm as $table_name=>$column_array) {
  145. $acl= new TableAcl;
  146. $acl_=$acl->getInstance($this->TableAcl->GetTablesByDbId[$table_name]);
  147. //$acl=UserAcl::getTableAcl($this->TableAcl->GetTablesByDbId[$table_name]);
  148. DEBUG_S(3,'acl for table '.$table_name." (".$this->TableAcl->GetTablesByDbId[$table_name].")",$acl_,__FILE__,__FUNCTION__,__LINE__);
  149. foreach($column_array as $column_name=>$rwxc) {
  150. $colId=$acl_->getFieldIdByName($column_name);
  151. if($acl_->hasFieldPerm($colId,$rwxc)) {
  152. } else die('Not sufficient privileges for function - need '.$rwxc.' for table '.$table_name.' column '.$column_name);
  153. }
  154. }
  155. }
  156. function add_require_perm($table_name,$column_name,$rwxc) {
  157. $this->add_require_perm[$table_name][$column_name]=$rwxc;
  158. }
  159. function BILLING_OWNER($ID_BILLING_OWNER) {
  160. $sql="select * from BILLING_OWNER where id=".$ID_BILLING_OWNER;
  161. $res=$this->db->query($sql);
  162. while($h=$this->db->fetch($res)) {
  163. return $h;
  164. }
  165. }
  166. function LIST_FORM_PAY($id_used_pay_type=null,$user_accessible_pay_type=null) {
  167. if(!empty($id_used_pay_type)) {
  168. $sqlpay = "SELECT * FROM list_form_pay WHERE id=".$id_used_pay_type;
  169. $resultpay = $this->db->query($sqlpay);
  170. $allpay = $this->db->fetch($resultpay);
  171. } else {
  172. $sqlpay = "SELECT * FROM list_form_pay WHERE id=".$user_accessible_pay_type;
  173. $resultpay = $this->db->query($sqlpay);
  174. $allpay = $this->db->fetch($resultpay);
  175. }
  176. return $allpay ;
  177. }
  178. function BILLING_USERS_ADD($ID_BILLING_USERS) {
  179. $sqlp="select * from COMPANIES where ID='".$ID_BILLING_USERS."'";
  180. $resultp = DB::query($sqlp);
  181. $fp=DB::fetch($resultp);
  182. return($fp);
  183. }
  184. //VERSION 2004-07-07 0.96
  185. //STRUKTURA KONTA Bankowa
  186. //NN BBBB BBBB FFFF KKKK KKKK KKKK
  187. //NN - suma kontrolna, BBBBBBBB 8 znakow numeru rozliczeniowego BZWBK
  188. //FFFF - 4 znaki identyfikujace firme
  189. //KKKKKKKKKKKK - 12 znakow identyfikujacych klienta Firmy
  190. // NASZA STRUKTURA 12 znakow klienta Firmy KKKKKKKKKKKK -> DDPP PPPP PPPP
  191. // DD - 2 ostatnie znaki ID_BILLING_NUMBERS (z tabeli BILLING_ACCOUNTS_FILES )
  192. // PP PPPP PPPP - 10 znakow identyfikujacych klienta
  193. function bankowy_chk($nrb) {
  194. global $ERROR ;
  195. $nrb=preg_replace("/[^0-9]/","",$nrb);
  196. if (strlen($nrb)<>26) return 0;
  197. $nrb .="252100";
  198. $wagi = array(57,93,19,31,71,75,56,25,51,73,17,89,38,62,45,53,15,50,5,49,34,81,76,27,90,9,30,3,10,1);
  199. for ($i=0; $i<30;$i++){
  200. $suma += $nrb[$i+2]*$wagi[$i];
  201. }
  202. $liczba = sprintf("%02d", 98 - $suma%97);
  203. if ($nrb[0]==$liczba[0] and $nrb[1]==$liczba[1]){
  204. return 1;
  205. }
  206. echo "ERROR Nieprawidlowy numer konta $nrb \n" ;
  207. $ERROR = $ERROR . " ERROR Nieprawidlowy numer konta $nrb \n" ;
  208. return 0;
  209. }
  210. //FUNKCJA DO LICZENIA MODULO
  211. function my_bcmod( $x, $y )
  212. {
  213. // how many numbers to take at once? carefull not to exceed (int)
  214. $take = 5;
  215. $mod = '';
  216. do
  217. {
  218. $a = (int)$mod.substr( $x, 0, $take );
  219. $x = substr( $x, $take );
  220. $mod = $a % $y;
  221. }
  222. while ( strlen($x) );
  223. return (int)$mod;
  224. }
  225. function bankowy_input($numer_input) {
  226. $SUMA_PLIKU="0";
  227. $SUMA="0";
  228. $numer_input=str_replace("\n\n","\n",$numer_input);
  229. $wiersze = explode("\n" , $numer_input);
  230. //print_r($liczba_linii);
  231. $liczba_linii=sizeof($wiersze) ;
  232. //TODO zastapic petla
  233. if($wiersze[$liczba_linii]=='') $liczba_linii--;
  234. if($wiersze[$liczba_linii]=='') $liczba_linii--;
  235. if($wiersze[$liczba_linii]=='') $liczba_linii--;
  236. if($wiersze[$liczba_linii]=='') $liczba_linii--;
  237. if($wiersze[$liczba_linii]=='') $liczba_linii--;
  238. $liczba_linii_crc=$liczba_linii-1 ;
  239. $PLIK_STOPKA=explode('|',$wiersze[($liczba_linii)]) ;
  240. $SUMA_PLIKU_WYKAZANA="$PLIK_STOPKA[1]";
  241. echo "Liczba linii to $liczba_linii , ostatnia linia to ".$wiersze[$liczba_linii]." : ";
  242. $last_odczyt_2="1";
  243. for($i2=0; $i2<=$liczba_linii_crc;$i2++) {
  244. $linia_array=$wiersze[$i2] ;
  245. $linia_array_long=strlen($linia_array);
  246. // echo "<hr>LECE LINIE $i2 ($linia_array) a suma kontrola to $SUMA | $SUMA_PLIKU \n";
  247. // sleep(1);
  248. for ($i=0; $i<$linia_array_long;$i=$i+2){
  249. $znak1=$linia_array[$i] ;
  250. $znak2=$linia_array[$i+1] ;
  251. $znak1_asc=ord($znak1) ;
  252. $znak2_asc=ord($znak2) ;
  253. if($znak1_asc>=127) $znak1_asc="127" ;
  254. if($znak2_asc>=127) $znak2_asc="127" ;
  255. if($last_odczyt_2==0) {
  256. // $znak2_asc="0";
  257. $last_odczyt_2="1" ;
  258. // echo "<b>Zmusilem B=0, bo z przeniesienia, czy aby dobrze??? </b>";
  259. } else if(!$znak2_asc) {
  260. $znak2_asc="0";
  261. // echo "NIEBYLOZNAKU2";
  262. $last_odczyt_2="0";
  263. }
  264. $SUMA_LOCAL = 217 * $znak1_asc + $znak2_asc ;
  265. // echo "*SUMA_LOCAL(+ $SUMA) = $SUMA_LOCAL = 217 * $znak1_asc + $znak2_asc *";
  266. $SUMA=$SUMA + $SUMA_LOCAL ;
  267. // echo "SUMA PO DODANIU TO $SUMA \n";
  268. if($SUMA > 65535) $SUMA=$SUMA-65535 ;
  269. $SUMA=$SUMA * 2 ;
  270. if($SUMA>65535) $SUMA=$SUMA-65535 ;
  271. // echo "SUMA3 PO DODANIU TO $SUMA \n";
  272. $lk_local_1=ord($linia_array[$i]);
  273. // echo "LK($linia_array[$i],".$linia_array[($i+1)].") = * $znak1_asc , $znak2_asc * " ;
  274. }
  275. $SUMA_PLIKU=$SUMA_PLIKU + $SUMA ;
  276. $SUMA="0";
  277. } //EOF $i2
  278. echo " SUMA PLIKU = $SUMA_PLIKU , wykazana suma w pliku to $SUMA_PLIKU_WYKAZANA \n";
  279. if($SUMA_PLIKU==$SUMA_PLIKU_WYKAZANA) return $SUMA_PLIKU ;
  280. }
  281. function bankowy_make($nrb) {
  282. $nrb=preg_replace("/[^0-9]/","",$nrb);
  283. // echo "STRLEN (nrb) = ".strlen($nrb);
  284. if (strlen($nrb)<>24) return 0;
  285. $nrb .="252100";
  286. $modulo=self::my_bcmod($nrb,97) ;
  287. // echo "MODULO TU $modulo";
  288. $modulo= 98 - $modulo ;
  289. if(strlen($modulo)==1) $modulo="0".$modulo ;
  290. return $modulo ;
  291. // $liczba = sprintf("%02d", 98 - $suma%97);
  292. if ($nrb[0]==$liczba[0] and $nrb[1]==$liczba[1]){
  293. return 1;
  294. }
  295. return 0;
  296. }
  297. //$numer="1090 1098 0000 1001 0253 7156 "; //numer z liczba kontrola inna
  298. //$numer="07109010790417338226000401";
  299. //$numer="7632547653245732654";
  300. //$numer="7632547653245732654f4365435";
  301. //if(!$numer_chk) $numer_chk="46 1090 1098 0000 0001 0253 7156";
  302. function bankowy_make_nrach($NR_RACH_MASS_PAY,$ID_BILLING_USERS,$ID_BILLING_NUMBERS) {
  303. //echo "TTUTAJ <hr> AASDADS f. bankowy_make_nrach($NR_RACH_MASS_PAY,$ID_BILLING_USERS,$ID_BILLING_NUMBERS) <br>";
  304. $ID_BILLING_USERS=str_pad($ID_BILLING_USERS,10,0,STR_PAD_LEFT) ;
  305. $ID_BILLING_NUMBERS=str_pad($ID_BILLING_NUMBERS,2,0,STR_PAD_LEFT) ;
  306. $ID_BILLING_NUMBERS=substr($ID_BILLING_NUMBERS,-2) ;
  307. $NN=self::bankowy_make($NR_RACH_MASS_PAY.$ID_BILLING_NUMBERS.$ID_BILLING_USERS) ;
  308. if($NN) return $NN.$NR_RACH_MASS_PAY.$ID_BILLING_NUMBERS.$ID_BILLING_USERS ;
  309. }
  310. function bankowy_formatuj_nrach($NR_RACH_MASS_PAY) {
  311. if($NR_RACH_MASS_PAY) {
  312. unset($NR_RACH_MASS_PAY_FORMATTED);
  313. for($i=4; $i<(strlen($NR_RACH_MASS_PAY)); $i=$i+4) {
  314. $NR_RACH_MASS_PAY_FORMATTED=" ".substr($NR_RACH_MASS_PAY,-$i,4).$NR_RACH_MASS_PAY_FORMATTED;
  315. } $NR_RACH_MASS_PAY_FORMATTED=substr($NR_RACH_MASS_PAY,0,$i-strlen($NR_RACH_MASS_PAY))." ".$NR_RACH_MASS_PAY_FORMATTED ;
  316. }
  317. return $NR_RACH_MASS_PAY_FORMATTED ;
  318. }
  319. function lista_faktur() {
  320. self::add_require_perm('BILLS_FVAT','ID','R');
  321. //self::add_require_perm('BILLS_FVAT','ID_CURRENCY','R');
  322. self::add_require_perm('BILLS_FVAT_POS','ID','X');
  323. self::check_perms();
  324. //TODO check if has perms for that...
  325. $sql7= "select BILLS_FVAT.ID, count(BILLS_FVAT_POS.ID) as count_BILLS_FVAT_POS_ID, BILLS_FVAT_POS.ID_BILLS_FVAT, BILLS_FVAT.ID_CURRENCY,
  326. sum((BILLS_FVAT_POS.AMMOUNT * BILLS_FVAT_POS.PRICE) * ( 1 + BILLS_FVAT_POS.VAT / 100))
  327. as WARTOSC ,BILLS_FVAT.ID_BILLING_NUMBERS , BILLS_FVAT.OPEN , BILLS_FVAT.FK_ZAKSIEG ,
  328. BILLS_FVAT.IF_KORV , BILLING_NUMBERS.TIMESTAMP , BILLING_NUMBERS.ID_BILLING_PREFIXES , BILLING_NUMBERS.NUMBER ,BILLING_NUMBERS.ID as BILLING_NUMBERS_ID
  329. , BILLS_FVAT.SELL_DATE , BILLING_NUMBERS.ID_BILLING_USERS
  330. from BILLS_FVAT
  331. left join BILLS_FVAT_POS on BILLS_FVAT.ID=BILLS_FVAT_POS.ID_BILLS_FVAT
  332. left join BILLING_NUMBERS on BILLING_NUMBERS.ID=BILLS_FVAT.ID_BILLING_NUMBERS
  333. where BILLS_FVAT.ID_BILLING_USERS='".$this->set_client_filter."' group by BILLS_FVAT.ID order by BILLS_FVAT.ID ";
  334. DEBUG_S(3,'zap_sql_do_fv',$sql7,__FILE__,__FUNCTION__,__LINE__);
  335. $result7 = $this->db->query($sql7);
  336. while($h=$this->db->fetch_assoc($result7)) {
  337. $result7_arr[]=$h;
  338. }
  339. DEBUG_S(3,'lista_faktur',array($sql7,$result7_arr),__FILE__,__FUNCTION__,__LINE__);
  340. return $result7_arr;
  341. }
  342. function lista_korekt($ID_BILLING_NUMBERS) {
  343. self::add_require_perm('BILLS_KORV','ID','R');
  344. //self::add_require_perm('BILLS_FVAT','ID_CURRENCY','R');
  345. self::add_require_perm('BILLS_KORV_POS','ID','X'); //TODO
  346. // self::check_perms();
  347. $KORV_TABLE="BILLS_KORV"; $KORV_ID_BILLING_NUMBERS_TYPE="3"; //TODO przechwytywac te parametry...
  348. $sql= "select $KORV_TABLE.ID as KORV_ID , count(".$KORV_TABLE."_POS.ID) as count_POS_ID , ".$KORV_TABLE."_POS.ID_BILLS_FVAT, ".$KORV_TABLE.".ID_CURRENCY,
  349. round(sum(
  350. ((".$KORV_TABLE."_POS.AMMOUNT * ".$KORV_TABLE."_POS.PRICE) * ( 1 + ".$KORV_TABLE."_POS.VAT / 100))
  351. - (".$KORV_TABLE."_POS.N_AMMOUNT * ".$KORV_TABLE."_POS.N_PRICE * ".$KORV_TABLE."_POS.N_VAT / 100)
  352. + (".$KORV_TABLE."_POS.N_AMMOUNT * ".$KORV_TABLE."_POS.N_PRICE * ".$KORV_TABLE."_POS.VAT / 100)
  353. ),2) as WARTOSC ,
  354. round(sum((".$KORV_TABLE."_POS.N_AMMOUNT * ".$KORV_TABLE."_POS.N_PRICE) * ( 1 + ".$KORV_TABLE."_POS.N_VAT / 100)),2) as N_WARTOSC ,
  355. ".$KORV_TABLE.".ID_BILLING_NUMBERS , ".$KORV_TABLE.".OPEN , ".$KORV_TABLE.".FK_ZAKSIEG ,".$KORV_TABLE.".IF_KORV
  356. from ".$KORV_TABLE." left join ".$KORV_TABLE."_POS on ".$KORV_TABLE.".ID=".$KORV_TABLE."_POS.ID_BILLS_FVAT
  357. where ".$KORV_TABLE.".REMOTE_ID_BILLING_NUMBERS_TYPE='1' and ".$KORV_TABLE.".REMOTE_ID_BILLING_NUMBERS='".$ID_BILLING_NUMBERS."' group by ".$KORV_TABLE.".ID order by ".$KORV_TABLE.".ID ";
  358. DEBUG_S(3,'SQL lista_korekt',$sql,__FILE__,__FUNCTION__,__LINE__);
  359. $result_KORV=$this->db->query($sql);
  360. while($h=$this->db->fetch_assoc($result_KORV)) {
  361. $result_KORV_arr[]=$h;
  362. }
  363. return $result_KORV_arr;
  364. }
  365. function lista_BILLING_NUMBERS_TYPE_CLASS_SELL_MA($result_BILLING_NUMBERS_TYPE) {
  366. $sql= "select ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID, count(".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.ID), ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.ID_BILLS_FVAT, ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_CURRENCY,
  367. round(sum(
  368. ((".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.AMMOUNT * ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.PRICE) * ( 1 + ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.VAT / 100))
  369. - (".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.N_AMMOUNT * ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.N_PRICE * ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.N_VAT / 100)
  370. + (".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.N_AMMOUNT * ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.N_PRICE * ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.VAT / 100)
  371. ),2) as MA ,
  372. round(sum((".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.N_AMMOUNT * ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.N_PRICE) * ( 1 + ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.N_VAT / 100)),2) as WINIEN ,
  373. ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_NUMBERS , ".$result_BILLING_NUMBERS_TYPE[TABLE].".OPEN , ".$result_BILLING_NUMBERS_TYPE[TABLE].".FK_ZAKSIEG ,
  374. ".$result_BILLING_NUMBERS_TYPE[TABLE].".IF_KORV , ".$result_BILLING_NUMBERS_TYPE[TABLE].".BILL_DATE , ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".NUMBER ,
  375. ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_FK_DEKRET
  376. from ".$result_BILLING_NUMBERS_TYPE[TABLE]."
  377. left join ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE]." on ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID=".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_NUMBERS
  378. left join ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS on ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID=".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.ID_BILLS_FVAT
  379. where ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_USERS='".$this->set_client_filter."'
  380. group by ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID order by ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID ";
  381. // echo "KOREKTY $sql ";
  382. $result_KP=$this->db->query($sql);
  383. $i=0;
  384. while($h=$this->db->fetch_assoc($result_KP)) {
  385. $result_KP_arr[$i]=$h;
  386. $result_KP_arr[$i]['ID_BILLING_NUMBERS_TYPE']=$result_BILLING_NUMBERS_TYPE['ID'];
  387. $result_KP_arr[$i]['CLASS']=$result_BILLING_NUMBERS_TYPE['CLASS'];
  388. $result_KP_arr[$i]['TYPE']=$result_BILLING_NUMBERS_TYPE['TYPE'];
  389. $i++;
  390. }
  391. DEBUG_S(-3,'lista_BILLING_NUMBERS_TYPE_CLASS_SELL_MA',$result_KP_arr,__FILE__,__FUNCTION__,__LINE__);
  392. return $result_KP_arr;
  393. }
  394. function lista_BILLING_NUMBERS_TYPE_CLASS_FINANCE($result_BILLING_NUMBERS_TYPE) {
  395. $sql="select ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID,".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_NUMBERS , ".$result_BILLING_NUMBERS_TYPE[TABLE].".BILL_DATE , ".$result_BILLING_NUMBERS_TYPE[TABLE].".WINIEN , ".$result_BILLING_NUMBERS_TYPE[TABLE].".MA ,
  396. ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_FK_DEKRET, ".$result_BILLING_NUMBERS_TYPE[TABLE].".OPEN , ".$result_BILLING_NUMBERS_TYPE[TABLE].".FK_ZAKSIEG , ".$result_BILLING_NUMBERS_TYPE[TABLE].".do_dokumentu , ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".NUMBER ,
  397. ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID_BILLING_PREFIXES , ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID_BILLING_NUMBERS_TYPE
  398. from ".$result_BILLING_NUMBERS_TYPE[TABLE]."
  399. left join ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE]." on ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID=".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_NUMBERS
  400. where ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_USERS='".$this->set_client_filter."' ";
  401. // echo "<br> ".$sql ;
  402. $result_KP=$this->db->query($sql);
  403. $i=0;
  404. while($h=$this->db->fetch_assoc($result_KP)) {
  405. $result_KP_arr[$i]=$h;
  406. $result_KP_arr[$i]['ID_BILLING_NUMBERS_TYPE']=$result_BILLING_NUMBERS_TYPE['ID'];
  407. $result_KP_arr[$i]['CLASS']=$result_BILLING_NUMBERS_TYPE['CLASS'];
  408. $result_KP_arr[$i]['TYPE']=$result_BILLING_NUMBERS_TYPE['TYPE'];
  409. $i++;
  410. }
  411. return $result_KP_arr;
  412. }
  413. function get_BILLING_NUMBERS_TYPE() {
  414. //zwraca typy dowiazan do tabel fakturujacych
  415. $ID_BILLING_NUMBERS_ARR=array(4,5,7,3,8);
  416. $sql="select * from BILLING_NUMBERS_TYPE where ID in (".implode(',',$ID_BILLING_NUMBERS_ARR).")";
  417. $result_BILLING_NUMBERS_TYPE_res=$this->db->query($sql) ;
  418. while ($result_BILLING_NUMBERS_TYPE=$this->db->fetch_assoc($result_BILLING_NUMBERS_TYPE_res)) {
  419. $this->BILLING_NUMBERS_TYPE[$result_BILLING_NUMBERS_TYPE['ID']]=$result_BILLING_NUMBERS_TYPE;
  420. }
  421. DEBUG_S(-3,'get_BILLING_NUMBERS_TYPE',$this->BILLING_NUMBERS_TYPE,__FILE__,__FUNCTION__,__LINE__);
  422. }
  423. function get_BILLING_NUMBERS_TYPE_all() {
  424. //zwraca typy dowiazan do tabel fakturujacych
  425. $ID_BILLING_NUMBERS_ARR=array(1,3,4,5,7,3,8);
  426. $sql="select * from BILLING_NUMBERS_TYPE where ID in (".implode(',',$ID_BILLING_NUMBERS_ARR).")";
  427. $result_BILLING_NUMBERS_TYPE_res=$this->db->query($sql) ;
  428. while ($result_BILLING_NUMBERS_TYPE=$this->db->fetch_assoc($result_BILLING_NUMBERS_TYPE_res)) {
  429. $this->BILLING_NUMBERS_TYPE_ALL[$result_BILLING_NUMBERS_TYPE['ID']]=$result_BILLING_NUMBERS_TYPE;
  430. }
  431. DEBUG_S(3,'get_BILLING_NUMBERS_TYPE',$this->BILLING_NUMBERS_TYPE_ALL,__FILE__,__FUNCTION__,__LINE__);
  432. }
  433. function lista_dok_finansowych() {
  434. //require $this->set_client_filter
  435. $ret=array();
  436. foreach($this->BILLING_NUMBERS_TYPE as $ID_BILLING_NUMBERS_TYPE) {
  437. if(method_exists($this,'lista_BILLING_NUMBERS_TYPE_CLASS_'.$ID_BILLING_NUMBERS_TYPE['CLASS'])) {
  438. $func="lista_BILLING_NUMBERS_TYPE_CLASS_".$ID_BILLING_NUMBERS_TYPE['CLASS'];
  439. $ret2=self::$func($ID_BILLING_NUMBERS_TYPE);
  440. if(!empty($ret2))
  441. $ret=array_merge_recursive($ret,$ret2);
  442. } else echo "<br> 214 UNSUPPORTED class ".$ID_BILLING_NUMBERS_TYPE['CLASS'];
  443. }
  444. DEBUG_S(-3,'lista_dok_finansowych',$ret,__FILE__,__FUNCTION__,__LINE__);
  445. return $ret;
  446. }
  447. function get_document_type($ID_BILLING_NUMBERS) {
  448. if(empty($this->BILLING_NUMBERS_TYPE_ALL)) self::get_BILLING_NUMBERS_TYPE_all();
  449. $sql="select ID_BILLING_NUMBERS_TYPE from BILLING_NUMBERS where ID=".$ID_BILLING_NUMBERS ;
  450. $res=$this->db->query($sql);
  451. //echo "<br>SQL ".$sql;
  452. while($h=$this->db->fetch($res)) {
  453. return $this->BILLING_NUMBERS_TYPE_ALL[$h->ID_BILLING_NUMBERS_TYPE];
  454. }
  455. }
  456. //TODO funkcja do zastapienia przez ZNAJDZ_ID_FAKTUR_DO_ZAMKNIECIA
  457. function ZNAJDZ_ID_FAKTUR_DO_ZAMKNIECIA($NAZWA_PROCESS_SERVICES_FIND_ID_LIST,$ILE,$ID_BILLING_NUMBERS_TYPE_PARM) {
  458. global $PETELKA,$execute_process , $uid , $process_services,$vdb,$ID_BILLING_NUMBERS_TYPE,$ERROR ,$result_BILLING_NUMBERS_TYPE ;
  459. if(!$NAZWA_PROCESS_SERVICES_FIND_ID_LIST) $NAZWA_PROCESS_SERVICES_FIND_ID_LIST="NAZWA_PROCESS_SERVICES_FIND_ID_LIST" ;
  460. if(($ID_BILLING_NUMBERS_TYPE_PARM) && (!$ID_BILLING_NUMBERS_TYPE)) $ID_BILLING_NUMBERS_TYPE=$ID_BILLING_NUMBERS_TYPE_PARM ;
  461. //TEST
  462. //$ILE="1000" ;
  463. if($ILE) $LIMIT="limit 0,$ILE" ; else $LIMIT="" ;
  464. $sql="select * from BILLING_NUMBERS_TYPE where ID='$ID_BILLING_NUMBERS_TYPE'";
  465. $result_BILLING_NUMBERS_TYPE=$vdb->sql_query($sql) ;
  466. $result_BILLING_NUMBERS_TYPE=$vdb->sql_fetchrow($result_BILLING_NUMBERS_TYPE[0]) ;
  467. if($result_BILLING_NUMBERS_TYPE["CLASS"]=='SELL_WINIEN') {
  468. if($_SESSION[DEBUG]>3) echo "<br>*Wyzwalam funkcje type2 ZNAJDZ_ID_FAKTUR_DO_ZAMKNIECIA($NAZWA_PROCESS_SERVICES_FIND_ID_LIST,$ILE,$ID_BILLING_NUMBERS_TYPE) ";
  469. $sql=" select BILLS_FVAT.ID_BILLING_NUMBERS,BILLS_FVAT.ID, BILLS_FVAT_POS.ID, BILLS_FVAT_POS.ID_BILLS_FVAT, BILLS_FVAT.ID_CURRENCY,
  470. round(sum(
  471. (".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.PRICE * ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.AMMOUNT) +
  472. (".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.PRICE * ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.AMMOUNT * ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.VAT / 100 )
  473. ),2)
  474. as WARTOSC from BILLS_FVAT left join BILLS_FVAT_POS on BILLS_FVAT.ID=BILLS_FVAT_POS.ID_BILLS_FVAT where
  475. BILLS_FVAT.OPEN='N' and BILLS_FVAT.ID_FK_DEKRET is NULL group by BILLS_FVAT.ID order by BILLS_FVAT.ID $LIMIT ; " ;
  476. $PROCESS_SERVICES_FIND_ID_2=$vdb->sql_query($sql) ;
  477. if($_SESSION[DEBUG]>2) echo "<br>$sql" ;
  478. if(!(isset($process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST]))) $process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST] = array() ;
  479. while ( $PROCESS_SERVICES_FIND_ID = $vdb->sql_fetchrow($PROCESS_SERVICES_FIND_ID_2) ) {
  480. if(!(in_array($PROCESS_SERVICES_FIND_ID[0],$process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST]))) array_push($process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST],$PROCESS_SERVICES_FIND_ID[0]) ; else {
  481. if($_SESSION[DEBUG]>3) echo "<br>Nie dodalem wartosci $PROCESS_SERVICES_FIND_ID[0] do tablicy argumentow, gdyz poadny indeks juz w nim istnieje" ;
  482. }
  483. }
  484. if($_SESSION[DEBUG]>2) print_r($process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST]) ;
  485. // if($PETELKA<200) {
  486. if($process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST]) biling_process_db_process_call('UPDATEFLAG',"$execute_process[REQUIREFLAG]") ;
  487. // } else echo "<hr> WYJATEK ERROR funkcja nie powinna to isc dalej..." ;
  488. //TEST
  489. //ZROB_OBCIAZENIE(NAZWA_PROCESS_SERVICES_FIND_ID_LIST,'');
  490. //ZAMKNIJ_DOKUMENT(4) ;
  491. } else {
  492. $ERROR = $ERROR . "ERROR funkcji ZNAJDZ_ID_FAKTUR_DO_ZAMKNIECIA: Nieoczekiwany wyjatek - oczekiwana klasa dokumentu SELL_WINIEN a podano (" . $result_BILLING_NUMBERS_TYPE["CLASS"] . ")" ;
  493. echo "$ERROR" ;
  494. }
  495. } //EOF func. ZNAJDZ_ID_FAKTUR_DO_ZAMKNIECIA
  496. function ZNAJDZ_ID_OTWARTYCH_FAKTUR_DO_ZAMKNIECIA($NAZWA_PROCESS_SERVICES_FIND_ID_LIST,$ILE,$ID_BILLING_NUMBERS_TYPE_PARM,$DOCTYPE_OPEN_CLOSE_PARAM) {
  497. global $vdbhost,$vdbuname,$vdbpass,$vdbname,$DOCTYPE_OPEN_CLOSE,$ERROR,$PETELKA,$execute_process , $uid , $process_services,$vdb,$ID_BILLING_NUMBERS_TYPE,$ERROR ,$result_BILLING_NUMBERS_TYPE ;
  498. if(!$NAZWA_PROCESS_SERVICES_FIND_ID_LIST) $NAZWA_PROCESS_SERVICES_FIND_ID_LIST="NAZWA_PROCESS_SERVICES_FIND_ID_LIST" ;
  499. if(($ID_BILLING_NUMBERS_TYPE_PARM) && (!$ID_BILLING_NUMBERS_TYPE)) $ID_BILLING_NUMBERS_TYPE=$ID_BILLING_NUMBERS_TYPE_PARM ;
  500. //MINIMALNA_WARTOSC_FAKTURY
  501. $DOCTYPE_MINIMUM_VALUE="0.01"; //TODO ustawiac to gdzies globalnie
  502. //PARAMETRY TODO do przejmowania przez program
  503. if(!$DOCTYPE_OPEN_CLOSE_PARAM) $DOCTYPE_OPEN_CLOSE_PARAM="ANY"; //OPEN or CLOSED or ANY - to wybierze nieksiegowane faktury, ktore nastepnie trzeba wyslac do abonentow, zamknac i zaksiegowac
  504. if($DOCTYPE_OPEN_CLOSE_PARAM) $DOCTYPE_OPEN_CLOSE=$DOCTYPE_OPEN_CLOSE_PARAM ;
  505. if($DOCTYPE_OPEN_CLOSE==OPEN) $DOCTYPE_OPEN_CLOSE_PARAM_SQL="Y"; else
  506. if($DOCTYPE_OPEN_CLOSE==CLOSED) $DOCTYPE_OPEN_CLOSE_PARAM_SQL="N"; else
  507. if($DOCTYPE_OPEN_CLOSE==ANY) $DOCTYPE_OPEN_CLOSE_PARAM_SQL="%";
  508. //TEST
  509. //$ILE="1000" ;
  510. //echo "ILE TO $ILE ";
  511. if($ILE) $LIMIT="limit 0,$ILE" ; else $LIMIT="" ;
  512. $sql="select * from BILLING_NUMBERS_TYPE where ID='$ID_BILLING_NUMBERS_TYPE'";
  513. $result_BILLING_NUMBERS_TYPE=$vdb->sql_query($sql) ;
  514. $result_BILLING_NUMBERS_TYPE=$vdb->sql_fetchrow($result_BILLING_NUMBERS_TYPE[0]) ;
  515. if($result_BILLING_NUMBERS_TYPE["CLASS"]=='SELL_WINIEN') {
  516. //WYKRYWAMY ODPOWIEDNIA TABELE DLA TYPU (NUMERACJI I DOKUMENTOW)
  517. $sql="select * from BILLING_NUMBERS_TYPE where ID='$ID_BILLING_NUMBERS_TYPE' limit 0,1 ";
  518. $result_BILLING_NUMBERS_TYPE=$vdb->sql_query($sql) ;
  519. $result_BILLING_NUMBERS_TYPE=$vdb->sql_fetchrow($result_BILLING_NUMBERS_TYPE[0]) ;
  520. // echo "$sql $result_BILLING_NUMBERS_TYPE[1] <br>";
  521. if($result_BILLING_NUMBERS_TYPE["CLASS"]=="SELL_WINIEN") {
  522. $sql=" select ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_NUMBERS,".$result_BILLING_NUMBERS_TYPE[TABLE].".ID, ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.ID, ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.ID_BILLS_FVAT, ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_CURRENCY,
  523. round(sum(
  524. (".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.PRICE * ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.AMMOUNT) +
  525. (".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.PRICE * ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.AMMOUNT * ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.VAT / 100 )
  526. ),2)
  527. as 'WARTOSC'
  528. from ".$result_BILLING_NUMBERS_TYPE[TABLE]." left join ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS on ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID=".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.ID_BILLS_FVAT
  529. where ".$result_BILLING_NUMBERS_TYPE[TABLE].".OPEN like '$DOCTYPE_OPEN_CLOSE_PARAM_SQL' and ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_FK_DEKRET is NULL group by ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID order by ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID $LIMIT ; " ;
  530. echo "$sql<br>";
  531. } else {
  532. $ERROR.="ERROR Nieobslugiwana klasa dokumentu " . $result_BILLING_NUMBERS_TYPE["CLASS"] ; echo "<br>$ERROR \n";
  533. } //EOF CLASS_CHECK $result_BILLING_NUMBERS_TYPE["CLASS"]
  534. if(!$ERROR) {
  535. if($_SESSION[DEBUG]>3) echo "<br>*Wyzwalam funkcje type2 ZNAJDZ_ID_OTWARTYCH_FAKTUR_DO_ZAMKNIECIA($NAZWA_PROCESS_SERVICES_FIND_ID_LIST,$ILE,$ID_BILLING_NUMBERS_TYPE,$DOCTYPE_OPEN_CLOSE_PARAM) ";
  536. $PROCESS_SERVICES_FIND_ID_2=$vdb->sql_query($sql) ;
  537. // echo "<br>$sql" ;
  538. if(!(isset($process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST]))) $process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST] = array() ;
  539. while ( $PROCESS_SERVICES_FIND_ID = $vdb->sql_fetchrow($PROCESS_SERVICES_FIND_ID_2) ) {
  540. if(!(in_array($PROCESS_SERVICES_FIND_ID[0],$process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST]))) {
  541. if($PROCESS_SERVICES_FIND_ID[5]>$DOCTYPE_MINIMUM_VALUE) array_push($process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST],$PROCESS_SERVICES_FIND_ID[0]) ;
  542. else {
  543. if($_SESSION[DEBUG]>3) echo "<br>Nie dodalem wartosci $PROCESS_SERVICES_FIND_ID[0] do tablicy argumentow, gdyz wartosc dokumentu (".$PROCESS_SERVICES_FIND_ID[5].") jest mniejsza niz $DOCTYPE_MINIMUM_VALUE " ;
  544. $WARNING.="WARNING <br>Nie dodalem wartosci-dokumentu $PROCESS_SERVICES_FIND_ID[0] do tablicy argumentow, gdyz wartosc dokumentu (".$PROCESS_SERVICES_FIND_ID[5].") jest mniejsza niz $DOCTYPE_MINIMUM_VALUE " ;
  545. }
  546. } else {
  547. if($_SESSION[DEBUG]>3) echo "<br>Nie dodalem wartosci $PROCESS_SERVICES_FIND_ID[0] do tablicy argumentow, gdyz poadny indeks juz w nim istnieje" ;
  548. }
  549. }
  550. }
  551. if($_SESSION[DEBUG]>2) print_r($process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST]) ;
  552. if($process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST]) biling_process_db_process_call('UPDATEFLAG',"$execute_process[REQUIREFLAG]") ;
  553. //TEST
  554. //ZROB_CO_TRZEBA_Z_DOKUMENTEM w sensie - umiesc w tabeli dowysylkowej w odpowiedniej postaci itp && after ..
  555. //ZAMKNIJ_DOKUMENT(4) ;
  556. //KSIEGUJ_DOKUMENT ?
  557. } else {
  558. $ERROR = $ERROR . "ERROR funkcji ZNAJDZ_ID_OTWARTYCH_FAKTUR_DO_ZAMKNIECIA: Nieoczekiwany wyjatek - oczekiwana klasa dokumentu SELL_WINIEN a podano (" . $result_BILLING_NUMBERS_TYPE["CLASS"] . ")" ;
  559. echo "$ERROR" ;
  560. }
  561. return $process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST] ;
  562. } //EOF func. ZNAJDZ_ID_OTWARTYCH_FAKTUR_DO_ZAMKNIECIA //funkcja ma zastapic ZNAJDZ_ID_FAKTUR_DO_ZAMKNIECIA
  563. function ZNAJDZ_ID_FK_DO_ZAMKNIECIA($NAZWA_PROCESS_SERVICES_FIND_ID_LIST,$ILE,$ID_BILLING_NUMBERS_TYPE_PARM) {
  564. global $PETELKA,$execute_process , $uid , $process_services,$vdb,$ID_BILLING_NUMBERS_TYPE,$result_BILLING_NUMBERS_TYPE ;
  565. //TEST
  566. if(!$NAZWA_PROCESS_SERVICES_FIND_ID_LIST) $NAZWA_PROCESS_SERVICES_FIND_ID_LIST="NAZWA_PROCESS_SERVICES_FIND_ID_LIST" ;
  567. if(($ID_BILLING_NUMBERS_TYPE_PARM) && (!$ID_BILLING_NUMBERS_TYPE)) $ID_BILLING_NUMBERS_TYPE=$ID_BILLING_NUMBERS_TYPE_PARM ;
  568. //$ILE="1000" ;
  569. //TOOODOOO TODO
  570. $sql="select * from BILLING_NUMBERS_TYPE where ID='$ID_BILLING_NUMBERS_TYPE'";
  571. $result_BILLING_NUMBERS_TYPE=$vdb->sql_query($sql) ;
  572. $result_BILLING_NUMBERS_TYPE=$vdb->sql_fetchrow($result_BILLING_NUMBERS_TYPE[0]) ;
  573. if($ILE) $LIMIT="limit 0,$ILE" ; else $LIMIT="" ;
  574. if($_SESSION[DEBUG]>3) echo "<br>*Wyzwalam funkcje type2 function ZNAJDZ_ID_FK_DO_ZAMKNIECIA($NAZWA_PROCESS_SERVICES_FIND_ID_LIST,$ILE,$ID_BILLING_NUMBERS_TYPE) ";
  575. $sql="select * from BILLING_NUMBERS_TYPE where TYPE='$TYPE' " ;
  576. $result_TYPE=$vdb->sql_query($sql) ;
  577. $result_TYPE=$vdb->sql_fetchrow($result_TYPE[0]) ;
  578. // print_r($result_TYPE) ;
  579. $sql=" select ID_BILLING_NUMBERS from ".$result_TYPE[TABLE]." where ID_FK_DEKRET is NULL order by ID $LIMIT ; " ;
  580. $PROCESS_SERVICES_FIND_ID_2=$vdb->sql_query($sql) ;
  581. //echo "<br>$sql" ;
  582. if(!(isset($process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST]))) $process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST] = array() ;
  583. while ( $PROCESS_SERVICES_FIND_ID = $vdb->sql_fetchrow($PROCESS_SERVICES_FIND_ID_2) ) {
  584. if(!(in_array($PROCESS_SERVICES_FIND_ID[0],$process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST]))) array_push($process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST],$PROCESS_SERVICES_FIND_ID[0]) ; else {
  585. if($_SESSION[DEBUG]>3) echo "<br>Nie dodalem wartosci $PROCESS_SERVICES_FIND_ID[0] do tablicy argumentow, gdyz poadny indeks juz w nim istnieje" ;
  586. }
  587. }
  588. } //EOF func.
  589. //TODO funkcja ta ma zastapic ZNAJDZ_ID_FK_DO_ZAMKNIECIA oraz ZNAJDZ_ID_FAKTUR_DO_ZAMKNIECIA
  590. function ZNAJDZ_ID_DOWOLNEGO_TYPU_DO_ZAMKNIECIA($NAZWA_PROCESS_SERVICES_FIND_ID_LIST,$ILE,$ID_BILLING_NUMBERS_TYPE_PARM) {
  591. global $PETELKA,$execute_process , $uid , $process_services,$vdb,$ID_BILLING_NUMBERS_TYPE,$ERROR ,$result_BILLING_NUMBERS_TYPE ;
  592. //TODO czy ten oby warunek jest napewno konieczniy ?
  593. if(($ID_BILLING_NUMBERS_TYPE_PARM) && (!$ID_BILLING_NUMBERS_TYPE)) $ID_BILLING_NUMBERS_TYPE=$ID_BILLING_NUMBERS_TYPE_PARM ;
  594. if($ILE) $LIMIT="limit 0,$ILE" ; else $LIMIT="" ;
  595. $sql="select * from BILLING_NUMBERS_TYPE where ID='$ID_BILLING_NUMBERS_TYPE'";
  596. $result_BILLING_NUMBERS_TYPE=$vdb->sql_query($sql) ;
  597. $result_BILLING_NUMBERS_TYPE=$vdb->sql_fetchrow($result_BILLING_NUMBERS_TYPE[0]) ;
  598. if($_SESSION[DEBUG]>3) echo "<br>*Wyzwalam funkcje type2 ZNAJDZ_ID_DOWOLNEGO_TYPU_DO_ZAMKNIECIA($NAZWA_PROCESS_SERVICES_FIND_ID_LIST,$ILE,$ID_BILLING_NUMBERS_TYPE) ";
  599. if($result_BILLING_NUMBERS_TYPE["CLASS"]=='SELL_WINIEN') {
  600. $sql=" select ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_NUMBERS,".$result_BILLING_NUMBERS_TYPE[TABLE].".ID, ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.ID, ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.ID_BILLS_FVAT, ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_CURRENCY,
  601. round(sum(
  602. (".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.PRICE * ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.AMMOUNT) +
  603. (".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.PRICE * ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.AMMOUNT * ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.VAT / 100 )
  604. ),2) as WARTOSC
  605. from ".$result_BILLING_NUMBERS_TYPE[TABLE]." left join ".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS on ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID=".$result_BILLING_NUMBERS_TYPE[TABLE]."_POS.ID_BILLS_FVAT
  606. left join ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE]." on ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID=".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_NUMBERS
  607. where ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID_BILLING_NUMBERS_TYPE='".$result_BILLING_NUMBERS_TYPE[ID]."' and
  608. ".$result_BILLING_NUMBERS_TYPE[TABLE].".OPEN='N' and ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_FK_DEKRET is NULL group by ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID order by ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID $LIMIT ; " ;
  609. $PROCESS_SERVICES_FIND_ID_2=$vdb->sql_query($sql) ;
  610. if($_SESSION[DEBUG]>2) echo "<br>$sql<hr>" ;
  611. if(!(isset($process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST]))) $process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST] = array() ;
  612. while ( $PROCESS_SERVICES_FIND_ID = $vdb->sql_fetchrow($PROCESS_SERVICES_FIND_ID_2) ) {
  613. if(!(in_array($PROCESS_SERVICES_FIND_ID[0],$process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST]))) array_push($process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST],$PROCESS_SERVICES_FIND_ID[0]) ; else {
  614. if($_SESSION[DEBUG]>3) echo "<br>Nie dodalem wartosci $PROCESS_SERVICES_FIND_ID[0] do tablicy argumentow, gdyz poadny indeks juz w nim istnieje" ;
  615. }
  616. }
  617. if($_SESSION[DEBUG]>2) print_r($process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST]) ;
  618. // if($PETELKA<200) {
  619. if($process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST]) biling_process_db_process_call('UPDATEFLAG',"$execute_process[REQUIREFLAG]") ;
  620. // } else echo "<hr> WYJATEK ERROR funkcja nie powinna to isc dalej..." ;
  621. } else if($result_BILLING_NUMBERS_TYPE["CLASS"]=='FINANCE') {
  622. $sql=" select ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_NUMBERS from ".$result_BILLING_NUMBERS_TYPE[TABLE]."
  623. left join ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE]." on ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID=".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_NUMBERS
  624. where ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_FK_DEKRET is NULL and
  625. ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID_BILLING_USERS=".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_USERS and
  626. ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID_BILLING_NUMBERS_TYPE='".$result_BILLING_NUMBERS_TYPE[ID]."'
  627. order by ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID $LIMIT ; " ;
  628. $PROCESS_SERVICES_FIND_ID_2=$vdb->sql_query($sql) ;
  629. if($_SESSION[DEBUG]>2) echo "<br>$sql" ;
  630. if(!(isset($process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST]))) $process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST] = array() ;
  631. while ( $PROCESS_SERVICES_FIND_ID = $vdb->sql_fetchrow($PROCESS_SERVICES_FIND_ID_2) ) {
  632. if(!(in_array($PROCESS_SERVICES_FIND_ID[0],$process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST]))) array_push($process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST],$PROCESS_SERVICES_FIND_ID[0]) ; else {
  633. if($_SESSION[DEBUG]>3) echo "<br>Nie dodalem wartosci $PROCESS_SERVICES_FIND_ID[0] do tablicy argumentow, gdyz poadny indeks juz w nim istnieje" ;
  634. }
  635. }
  636. if($_SESSION[DEBUG]>2) print_r($process_services[$NAZWA_PROCESS_SERVICES_FIND_ID_LIST]) ;
  637. } else {
  638. $ERROR = $ERROR . "ERROR funkcji ZNAJDZ_ID_FAKTUR_DO_ZAMKNIECIA: Nieoczekiwany wyjatek - oczekiwana klasa dokumentu SELL_WINIEN lub FINANCE a podano (" . $result_BILLING_NUMBERS_TYPE["CLASS"] . ")" ;
  639. echo "$ERROR" ;
  640. }
  641. }
  642. //TODO_TEST_PROGRAM
  643. function TEST_billing_financefunc() {
  644. echo "<hr>WYZWALAM TESTOWA FUNKCJE DO USUNIECIA ASAP TEST_billing_financefunc dla parametrow ";
  645. //ZNAJDZ_ID_DOWOLNEGO_TYPU_DO_ZAMKNIECIA('NAZWA_PROCESS_SERVICES_FIND_ID_LIST','','1');
  646. BILLING_SPRAWDZ_SPOJNOSC_TABEL('1') ;
  647. }
  648. function BILLING_SPRAWDZ_SPOJNOSC_TABEL($ID_BILLING_NUMBERS_TYPE_PARM) {
  649. global $PETELKA,$execute_process , $uid , $process_services,$vdb,$ID_BILLING_NUMBERS_TYPE,$ERROR ;
  650. if(($ID_BILLING_NUMBERS_TYPE_PARM) && (!$ID_BILLING_NUMBERS_TYPE)) $ID_BILLING_NUMBERS_TYPE=$ID_BILLING_NUMBERS_TYPE_PARM ;
  651. //TODO skasowac to unset, funkcja jak nie dostanie argumentu, to sprawdza wszystkie tabele...
  652. //unset($ID_BILLING_NUMBERS_TYPE) ;
  653. if($ID_BILLING_NUMBERS_TYPE) $sql="select * from BILLING_NUMBERS_TYPE where ID='$ID_BILLING_NUMBERS_TYPE'";
  654. else $sql="select * from BILLING_NUMBERS_TYPE";
  655. $result2=$vdb->sql_query($sql) ;
  656. $ir=0 ;
  657. while ( $result_BILLING_NUMBERS_TYPE = $vdb->sql_fetchrow($result2) ) {
  658. if($result_BILLING_NUMBERS_TYPE["CLASS"]) {
  659. $sql=" select ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID as ID_TABELI_NUMERACJI,
  660. ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID as ID_TABELI_DOKUMENTOW, ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID_BILLING_USERS as PLATNIK_Z_TABELI_NUMERACJI ,
  661. ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_USERS as PLATNIK_TABELI_DOKUMENTOW,
  662. ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID_BILLING_NUMBERS_TYPE as TYP_DOKU_TABELI_NUMERACJI, '".$result_BILLING_NUMBERS_TYPE[ID]."' as TYP_DOKU_TABELI_DOKUMENTOW
  663. from ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE]."
  664. left join ".$result_BILLING_NUMBERS_TYPE[TABLE]." on ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_NUMBERS=".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID
  665. where ( ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID_BILLING_USERS!=".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_USERS ) or (
  666. ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID_BILLING_NUMBERS_TYPE!='".$result_BILLING_NUMBERS_TYPE[ID]."'
  667. and ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID is not NULL
  668. ) or ( ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID is NULL and ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID_BILLING_NUMBERS_TYPE='".$result_BILLING_NUMBERS_TYPE[ID]."')
  669. ";
  670. $result=$vdb->sql_query($sql) ;
  671. // echo "<br>$sql<hr>" ;
  672. echo "<table border=1 width=100%><tr><td colspan=4>";
  673. echo " Rezultat testu spojnosci dla typu dokumentu <b>".$result_BILLING_NUMBERS_TYPE[TYPE]." </b> (".$result_BILLING_NUMBERS_TYPE[ID].") <br>Porownanie spojnosci podrzednej tabeli ".$result_BILLING_NUMBERS_TYPE[TABLE]." do ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE]." : ";
  674. echo "</td></tr>";
  675. $i=0;
  676. while ( $h = $vdb->sql_fetchrow($result) ) {
  677. echo "<tr><td>";
  678. echo "$i</td><td><font color=red> Blad w spojnosci dla tabeli ".$result_BILLING_NUMBERS_TYPE[TABLE]."</font></td> ";
  679. if($h[4]<>$h[5]) echo "<td>Brak spojnosci w typach dokumentow ( $h[4] != $h[5] ) PROBLEM NALEZY NIEZWLOCZNIE ZGLOSIC DO ADMINISTRATORA</td>" ;
  680. else if($h[2]<>$h[3]) echo "<td>Brak spojnosci w platnikach ( $h[2] != $h[3] ) PROBLEM NALEZY NIEZWLOCZNIE ZGLOSIC DO ADMINISTRATORA</td>" ;
  681. if($h[1]) echo "<td>Problem lezy w tabeli ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE]." (ID=$h[0]) oraz tabeli ".$result_BILLING_NUMBERS_TYPE[TABLE]." (ID=$h[1]) </td>";
  682. else echo "<td>Problem lezy w tabeli ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE]." (ID=$h[0]), nie ma oczekiwanego wpisu w tabeli ".$result_BILLING_NUMBERS_TYPE[TABLE]." </td>";
  683. echo "</tr>";
  684. $i++ ;
  685. $ir++ ;
  686. }
  687. echo "<tr><td colspan=4>";
  688. if($i==0) echo "<font color=green> Spojnosc tabeli OK</font>" ; else echo "<font color=red> <b> Wystapilo $i bled(ow) w spojnosci tabeli, niezwlocznie nalezy dokonac stosownych napraw</b>, dalsze uzywanie programu grozi powaznymi szkodliwymi nastepstwami</font>";
  689. echo "</td></tr></table>";
  690. $sql=" select ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID as ID_TABELI_NUMERACJI,
  691. ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID as ID_TABELI_DOKUMENTOW, ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID_BILLING_USERS as PLATNIK_Z_TABELI_NUMERACJI ,
  692. ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_USERS as PLATNIK_TABELI_DOKUMENTOW,
  693. ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID_BILLING_NUMBERS_TYPE as TYP_DOKU_TABELI_NUMERACJI, '".$result_BILLING_NUMBERS_TYPE[ID]."' as TYP_DOKU_TABELI_DOKUMENTOW
  694. from ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE]."
  695. right join ".$result_BILLING_NUMBERS_TYPE[TABLE]." on ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_NUMBERS=".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID
  696. where ( ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE].".ID is NULL )
  697. ";
  698. $result=$vdb->sql_query($sql) ;
  699. // echo "<br>$sql<hr>" ;
  700. echo "<table border=1 width=100%><tr><td colspan=4>";
  701. echo " Rezultat testu spojnosci dla typu dokumentu <b>".$result_BILLING_NUMBERS_TYPE[TYPE]." </b> (".$result_BILLING_NUMBERS_TYPE[ID].") <br>Porownanie spojnosci nadrzêdnej tabeli ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE]." do ".$result_BILLING_NUMBERS_TYPE[TABLE]." : ";
  702. echo "</td></tr>";
  703. $i=0;
  704. while ( $h = $vdb->sql_fetchrow($result) ) {
  705. echo "<tr><td>";
  706. echo "$i</td><td><font color=red> Blad w spojnosci dla tabeli ".$result_BILLING_NUMBERS_TYPE[TABLE]."</font></td> ";
  707. if($h[4]<>$h[5]) echo "<td>Brak spojnosci w typach dokumentow ( $h[4] != $h[5] ) PROBLEM NALEZY NIEZWLOCZNIE ZGLOSIC DO ADMINISTRATORA</td>" ;
  708. else if($h[2]<>$h[3]) echo "<td>Brak spojnosci w platnikach ( $h[2] != $h[3] ) PROBLEM NALEZY NIEZWLOCZNIE ZGLOSIC DO ADMINISTRATORA</td>" ;
  709. if($h[1]) echo "<td>Problem lezy w tabeli ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE]." (ID=$h[0]) oraz tabeli ".$result_BILLING_NUMBERS_TYPE[TABLE]." (ID=$h[1]) </td>";
  710. else echo "<td>Problem lezy w tabeli ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE]." (ID=$h[0]), nie ma oczekiwanego wpisu w tabeli ".$result_BILLING_NUMBERS_TYPE[TABLE]." </td>";
  711. echo "</tr>";
  712. $i++ ;
  713. $ir++ ;
  714. }
  715. echo "<tr><td colspan=4>";
  716. if($i==0) echo "<font color=green> Spojnosc tabeli OK</font>" ; else echo "<font color=red> <b> Wystapilo $i bled(ow) w spojnosci tabeli, niezwlocznie nalezy dokonac stosownych napraw</b>, dalsze uzywanie programu grozi powaznymi szkodliwymi nastepstwami</font>";
  717. echo "</td></tr></table>";
  718. }
  719. $sql="select BILLING_ACCOUNTS_FILES.ID as ID_TABELI_PLATNOSCI,
  720. ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID as ID_TABELI_DOKUMENTOW ,
  721. BILLING_ACCOUNTS_FILES.ID_BILLING_USERS as PLATNIK_Z_TABELI_PLATNOSCI ,
  722. ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_USERS as PLATNIK_TABELI_DOKUMENTOW,
  723. BILLING_ACCOUNTS_FILES.ID_BILLING_NUMBERS_TYPE as TYP_DOKU_TABELI_PLATNOSCI,
  724. '".$result_BILLING_NUMBERS_TYPE[ID]."' as TYP_DOKU_TABELI_DOKUMENTOW
  725. from BILLING_ACCOUNTS_FILES
  726. left join ".$result_BILLING_NUMBERS_TYPE[TABLE]."
  727. on BILLING_ACCOUNTS_FILES.ID_BILLING_NUMBERS=".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_NUMBERS
  728. where BILLING_ACCOUNTS_FILES.ID_BILLING_NUMBERS_TYPE='".$result_BILLING_NUMBERS_TYPE[ID]."'
  729. and ( ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID is NULL
  730. or BILLING_ACCOUNTS_FILES.ID is NULL
  731. or BILLING_ACCOUNTS_FILES.ID_BILLING_USERS!=".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_USERS
  732. )";
  733. $result=$vdb->sql_query($sql) ;
  734. // echo "<br>$sql<hr>" ;
  735. echo "<table border=1 width=100%><tr><td colspan=4>";
  736. echo " Rezultat testu spojnosci dla typu dokumentu <b>".$result_BILLING_NUMBERS_TYPE[TYPE]." </b> (".$result_BILLING_NUMBERS_TYPE[ID].") <br>Porownanie spojnosci podrzednej tabeli ".$result_BILLING_NUMBERS_TYPE[TABLE]." do BILLING_ACCOUNT_FILES (tabeli analityki) : ";
  737. // echo "</td></tr>";
  738. $i=0;
  739. while ( $h = $vdb->sql_fetchrow($result) ) {
  740. echo "<tr><td>";
  741. echo "$i</td><td><font color=red> Blad w spojnosci dla tabeli ".$result_BILLING_NUMBERS_TYPE[TABLE]."</font></td> ";
  742. if($h[4]<>$h[5]) echo "<td>Brak spojnosci w typach dokumentow ( $h[4] != $h[5] ) PROBLEM NALEZY NIEZWLOCZNIE ZGLOSIC DO ADMINISTRATORA</td>" ;
  743. else if($h[2]<>$h[3]) echo "<td>Brak spojnosci w <b>analityce</b> ( $h[2] != $h[3] ) PROBLEM NALEZY NIEZWLOCZNIE ZGLOSIC DO ADMINISTRATORA</td>" ;
  744. if($h[1]) echo "<td>Problem lezy w tabeli BILLING_ACCOUNTS_FILES (ID=$h[0]) oraz tabeli ".$result_BILLING_NUMBERS_TYPE[TABLE]." (ID=$h[1]) </td>";
  745. else echo "<td>Problem lezy w tabeli ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE]." (ID=$h[0]), nie ma oczekiwanego wpisu w tabeli ".$result_BILLING_NUMBERS_TYPE[TABLE]." </td>";
  746. echo "</tr>";
  747. $i++ ;
  748. $ir++ ;
  749. }
  750. echo "<tr><td colspan=4>";
  751. if($i==0) echo "<font color=green> Spojnosc tabeli OK</font>" ; else echo "<font color=red> <b> Wystapilo $i bled(ow) w spojnosci tabeli, niezwlocznie nalezy dokonac stosownych napraw</b>, dalsze uzywanie programu grozi powaznymi szkodliwymi nastepstwami</font>";
  752. echo "</td></tr></table>";
  753. $sql="select BILLING_ACCOUNTS_FILES.ID as ID_TABELI_PLATNOSCI,
  754. ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID as ID_TABELI_DOKUMENTOW ,
  755. BILLING_ACCOUNTS_FILES.ID_BILLING_USERS as PLATNIK_Z_TABELI_PLATNOSCI ,
  756. ".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_USERS as PLATNIK_TABELI_DOKUMENTOW,
  757. BILLING_ACCOUNTS_FILES.ID_BILLING_NUMBERS_TYPE as TYP_DOKU_TABELI_PLATNOSCI,
  758. '".$result_BILLING_NUMBERS_TYPE[ID]."' as TYP_DOKU_TABELI_DOKUMENTOW
  759. from BILLING_ACCOUNTS_FILES
  760. right join ".$result_BILLING_NUMBERS_TYPE[TABLE]."
  761. on BILLING_ACCOUNTS_FILES.ID_BILLING_NUMBERS=".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_NUMBERS
  762. where ".$result_BILLING_NUMBERS_TYPE[TABLE].".FK_ZAKSIEG='Y'
  763. and ( BILLING_ACCOUNTS_FILES.ID is NULL
  764. or BILLING_ACCOUNTS_FILES.ID_BILLING_USERS!=".$result_BILLING_NUMBERS_TYPE[TABLE].".ID_BILLING_USERS
  765. )";
  766. $result=$vdb->sql_query($sql) ;
  767. // echo "<br>$sql<hr>" ;
  768. echo "<table border=1 width=100%><tr><td colspan=4>";
  769. echo " Rezultat testu spojnosci dla typu dokumentu <b>".$result_BILLING_NUMBERS_TYPE[TYPE]." </b> (".$result_BILLING_NUMBERS_TYPE[ID].") <br>Porownanie spojnosci podrzednej tabeli ".$result_BILLING_NUMBERS_TYPE[TABLE]." do BILLING_ACCOUNT_FILES (tabeli analityki) : ";
  770. echo "</td></tr>";
  771. $i=0;
  772. while ( $h = $vdb->sql_fetchrow($result) ) {
  773. echo "<tr><td>";
  774. echo "$i</td><td><font color=red> Blad w spojnosci dla tabeli ".$result_BILLING_NUMBERS_TYPE[TABLE]."</font></td> ";
  775. if($h[4]<>$h[5]) echo "<td>Brak spojnosci w typach dokumentow ( $h[4] != $h[5] ) PROBLEM NALEZY NIEZWLOCZNIE ZGLOSIC DO ADMINISTRATORA</td>" ;
  776. else if($h[2]<>$h[3]) echo "<td>Brak spojnosci w <b>analityce</b> ( $h[2] != $h[3] ) PROBLEM NALEZY NIEZWLOCZNIE ZGLOSIC DO ADMINISTRATORA</td>" ;
  777. if(($h[0]) && ($h[1])) echo "<td>Problem lezy w tabeli BILLING_ACCOUNTS_FILES (ID=$h[0]) oraz tabeli ".$result_BILLING_NUMBERS_TYPE[TABLE]." (ID=$h[1]) </td>";
  778. else echo "<td>Problem lezy w tabeli ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE]." (ID=$h[0]), nie ma oczekiwanego wpisu w tabeli ".$result_BILLING_NUMBERS_TYPE[TABLE]." </td>";
  779. echo "</tr>";
  780. $i++ ;
  781. $ir++ ;
  782. }
  783. echo "<tr><td colspan=4>";
  784. if($i==0) echo "<font color=green> Spojnosc tabeli OK</font>" ; else echo "<font color=red> <b> Wystapilo $i bled(ow) w spojnosci tabeli, niezwlocznie nalezy dokonac stosownych napraw</b>, dalsze uzywanie programu grozi powaznymi szkodliwymi nastepstwami</font>";
  785. echo "</td></tr></table>";
  786. }
  787. if($ir<>0)echo "<br><font color=red>ogolnie bledow (<b>$ir</b>)</font>";
  788. echo "<font size=-3> func.by sqix at 2004-06-28 6:05 status 0.9</font>";
  789. if($ir==0) return "OK" ;
  790. }
  791. function KSIEGUJ_FAKTURY($ID_BILLING_NUMBERS_TYPE) {
  792. global $process_services,$result_BILLING_NUMBERS_TYPE ;
  793. if(!$ID_BILLING_NUMBERS_TYPE) $ID_BILLING_NUMBERS_TYPE="6" ;
  794. ZNAJDZ_ID_DOWOLNEGO_TYPU_DO_ZAMKNIECIA('NAZWA_PROCESS_SERVICES_FIND_ID_LIST','','1') ;
  795. if($process_services[NAZWA_PROCESS_SERVICES_FIND_ID_LIST]) {
  796. if($_SESSION[DEBUG]>2) echo "<br>function KSIEGUJ_FAKTURY(): Ksieguje nastepujace ID faktur:" ;
  797. foreach($process_services[NAZWA_PROCESS_SERVICES_FIND_ID_LIST] as $ID_SERVICES_WYPIS) {
  798. if($_SESSION[DEBUG]>3) echo "$ID_SERVICES_WYPIS , ";
  799. ZAMKNIJ_DOKUMENT($ID_SERVICES_WYPIS,$result_BILLING_NUMBERS_TYPE) ;
  800. }
  801. } else echo "<br> function KSIEGUJ_FAKTURY(): Brak faktur do zaksiegowania" ;
  802. }
  803. function KSIEGUJ_KP() {
  804. global $process_services,$result_BILLING_NUMBERS_TYPE ;
  805. ZNAJDZ_ID_DOWOLNEGO_TYPU_DO_ZAMKNIECIA('NAZWA_PROCESS_SERVICES_FIND_ID_LIST','','4') ;
  806. if($process_services[NAZWA_PROCESS_SERVICES_FIND_ID_LIST]) {
  807. if($_SESSION[DEBUG]>2) echo "<br>function KSIEGUJ_KP(): Ksieguje nastepujace ID KSIEGUJ_KP:" ;
  808. foreach($process_services[NAZWA_PROCESS_SERVICES_FIND_ID_LIST] as $ID_SERVICES_WYPIS) {
  809. if($_SESSION[DEBUG]>3) echo "$ID_SERVICES_WYPIS , ";
  810. ZAMKNIJ_DOKUMENT($ID_SERVICES_WYPIS,$result_BILLING_NUMBERS_TYPE) ;
  811. }
  812. } else echo "<br> function KSIEGUJ_KP(): Brak KP do zaksiegowania" ;
  813. }
  814. function KSIEGUJ_KW() {
  815. global $process_services,$result_BILLING_NUMBERS_TYPE ;
  816. ZNAJDZ_ID_DOWOLNEGO_TYPU_DO_ZAMKNIECIA('NAZWA_PROCESS_SERVICES_FIND_ID_LIST','','5') ;
  817. if($process_services[NAZWA_PROCESS_SERVICES_FIND_ID_LIST]) {
  818. if($_SESSION[DEBUG]>2) echo "<br>function KSIEGUJ_KP(): Ksieguje nastepujace ID KSIEGUJ_KW:" ;
  819. foreach($process_services[NAZWA_PROCESS_SERVICES_FIND_ID_LIST] as $ID_SERVICES_WYPIS) {
  820. if($_SESSION[DEBUG]>3) echo "$ID_SERVICES_WYPIS , ";
  821. ZAMKNIJ_DOKUMENT($ID_SERVICES_WYPIS,$result_BILLING_NUMBERS_TYPE) ;
  822. }
  823. } else echo "<br> function KSIEGUJ_KW(): Brak KW do zaksiegowania" ;
  824. }
  825. function KSIEGUJ_WB_MASS() {
  826. global $process_services,$result_BILLING_NUMBERS_TYPE ;
  827. ZNAJDZ_ID_DOWOLNEGO_TYPU_DO_ZAMKNIECIA('NAZWA_PROCESS_SERVICES_FIND_ID_LIST','100','7') ;
  828. if($process_services[NAZWA_PROCESS_SERVICES_FIND_ID_LIST]) {
  829. if($_SESSION[DEBUG]>1) echo "<br>function KSIEGUJ_WB_MASS(): Ksieguje nastepujace ID KSIEGUJ_WB_MASS:" ;
  830. foreach($process_services[NAZWA_PROCESS_SERVICES_FIND_ID_LIST] as $ID_SERVICES_WYPIS) {
  831. if($_SESSION[DEBUG]>2) echo "$ID_SERVICES_WYPIS , ";
  832. ZAMKNIJ_DOKUMENT($ID_SERVICES_WYPIS,$result_BILLING_NUMBERS_TYPE) ;
  833. }
  834. } else echo "<br> function KSIEGUJ_WB_MASS(): Brak WB_MASS do zaksiegowania" ;
  835. }
  836. function KSIEGUJ_WB() {
  837. global $process_services,$result_BILLING_NUMBERS_TYPE ;
  838. ZNAJDZ_ID_DOWOLNEGO_TYPU_DO_ZAMKNIECIA('NAZWA_PROCESS_SERVICES_FIND_ID_LIST','','8') ;
  839. if($process_services[NAZWA_PROCESS_SERVICES_FIND_ID_LIST]) {
  840. if($_SESSION[DEBUG]>1) echo "<br>function KSIEGUJ_WB(): Ksieguje nastepujace ID KSIEGUJ_WB:" ;
  841. foreach($process_services[NAZWA_PROCESS_SERVICES_FIND_ID_LIST] as $ID_SERVICES_WYPIS) {
  842. if($_SESSION[DEBUG]>2) echo "$ID_SERVICES_WYPIS , ";
  843. ZAMKNIJ_DOKUMENT($ID_SERVICES_WYPIS,$result_BILLING_NUMBERS_TYPE) ;
  844. }
  845. } else echo "<br> function KSIEGUJ_WB(): Brak WB do zaksiegowania" ;
  846. }
  847. //UWAGA FUNKCJA PRZYJMUJE DRUGI PARAMETR Z ARRAYA select * from BILLING_NUMBERS_TYPE where ID='typ_doc'
  848. function ZAMKNIJ_DOKUMENT($ID_BILLING_NUMBERS,$result_BILLING_NUMBERS_TYPE) {
  849. global $ERROR,$vdb,$execute_process,$process_services,$uid ;
  850. //$_SESSION[DEBUG]=4;
  851. if($_SESSION[DEBUG]>3) {
  852. echo "<br>F.ZAMKNIJ_DOKUMENT($ID_BILLING_NUMBERS,$result_BILLING_NUMBERS_TYPE) <br> ";
  853. print_r($result_BILLING_NUMBERS_TYPE) ;
  854. }
  855. $sql="select t2.* from ".$result_BILLING_NUMBERS_TYPE[BILLING_NUMBERS_TABLE]." as t1, BILLING_NUMBERS_TYPE as t2 where t1.ID_BILLING_NUMBERS_TYPE=t2.ID and t1.ID='$ID_BILLING_NUMBERS'" ;
  856. $sql="select * from BILLING_NUMBERS_TYPE where TYPE='$result_BILLING_NUMBERS_TYPE'" ;
  857. //echo "<br>$sql" ;
  858. // $result_TABLE_NAME=$vdb->sql_query("$sql") ;
  859. // $result_TABLE_NAME=$vdb->sql_fetchrow($result_TABLE_NAME[0]);
  860. // print_r($result_BILLING_NUMBERS_TYPE) ;
  861. $result_TABLE_NAME=$result_BILLING_NUMBERS_TYPE ;
  862. if($result_TABLE_NAME["CLASS"]=="SELL_WINIEN") {
  863. $WINIEN_MA="WINIEN";
  864. $sql="select ".$result_TABLE_NAME[TABLE].".ID, ".$result_TABLE_NAME[TABLE].".ID_FK_DEKRET,
  865. ".$result_TABLE_NAME[TABLE].".OPEN , ".$result_TABLE_NAME[TABLE].".ID_BILLING_NUMBERS,
  866. count(".$result_TABLE_NAME[TABLE]."_POS.ID), ".$result_TABLE_NAME[TABLE]."_POS.ID_BILLS_FVAT,
  867. ".$result_TABLE_NAME[TABLE].".ID_CURRENCY,
  868. round(sum(
  869. (".$result_TABLE_NAME[TABLE]."_POS.PRICE * ".$result_TABLE_NAME[TABLE]."_POS.AMMOUNT) +
  870. (".$result_TABLE_NAME[TABLE]."_POS.PRICE * ".$result_TABLE_NAME[TABLE]."_POS.AMMOUNT * ".$result_TABLE_NAME[TABLE]."_POS.VAT / 100 )
  871. ),2) as WARTOSC ,
  872. ".$result_TABLE_NAME[TABLE].".ID_BILLING_USERS
  873. from ".$result_TABLE_NAME[TABLE]." left join ".$result_TABLE_NAME[TABLE]."_POS on ".$result_TABLE_NAME[TABLE].".ID=".$result_TABLE_NAME[TABLE]."_POS.ID_BILLS_FVAT
  874. left join ".$result_TABLE_NAME[BILLING_NUMBERS_TABLE]." on ".$result_TABLE_NAME[BILLING_NUMBERS_TABLE].".ID=".$result_TABLE_NAME[TABLE].".ID_BILLING_NUMBERS
  875. where ".$result_TABLE_NAME[BILLING_NUMBERS_TABLE].".ID_BILLING_USERS=".$result_TABLE_NAME[TABLE].".ID_BILLING_USERS and
  876. ".$result_TABLE_NAME[TABLE].".OPEN='N' and ".$result_TABLE_NAME[TABLE].".FK_ZAKSIEG='N' and ".$result_TABLE_NAME[TABLE].".ID_BILLING_NUMBERS='$ID_BILLING_NUMBERS' group by ".$result_TABLE_NAME[TABLE].".ID order by ".$result_TABLE_NAME[TABLE].".ID ";
  877. if($_SESSION[DEBUG]>2) echo "<br> $sql<hr>" ;
  878. $result_BIGJOIN=$vdb->sql_query("$sql") ;
  879. $result_BIGJOIN=$vdb->sql_fetchrow("$result_BIGJOIN[0]") ;
  880. if(($result_BIGJOIN[1]==0) || (!($result_BIGJOIN[1]))) {
  881. $WARTOSC_DOK=$result_BIGJOIN[7] ; $ID_BILLING_USERS_DOK=$result_BIGJOIN[8] ;
  882. if($_SESSION[DEBUG]>3) echo "<br> WARTOSC_DOK $WARTOSC_DOK , ID_BILLING_USERS_DOK $ID_BILLING_USERS_DOK ";
  883. if(VERIFYUPDATE_BILLING_ACCOUNTS($ID_BILLING_USERS_DOK)) {
  884. if($WARTOSC_DOK<0) {
  885. $WARTOSC_DOK= -$WARTOSC_DOK ;
  886. $WINIEN_MA="MA";
  887. }
  888. $sql="insert into BILLING_ACCOUNTS_FILES ( ID ,ID_BILLING_USERS ,ID_BILLING_NUMBERS_TYPE,ID_BILLING_NUMBERS ,$WINIEN_MA ,A_RECORD_CREATE_AUTHOR ) values
  889. ('','$ID_BILLING_USERS_DOK','$result_TABLE_NAME[ID]','$ID_BILLING_NUMBERS','$WARTOSC_DOK','$uid')" ;
  890. //TODO DEBUG...
  891. // die("FORCED DIE SQL:::: $sql ::: at line 491");
  892. $result_B_A_L_INSERT=$vdb->sql_query("$sql") ;
  893. if($result_B_A_L_INSERT) {
  894. $result_B_A_L_INSERT=$vdb->sql_nextid();
  895. $sql="update ".$result_TABLE_NAME[TABLE]." set ID_FK_DEKRET='$result_B_A_L_INSERT' , OPEN='N' , FK_ZAKSIEG='Y' where ID='$result_BIGJOIN[0]'";
  896. $result_DOK_UPDATE=$vdb->sql_query($sql) ;
  897. if($_SESSION[DEBUG]>3) echo "<br>result_DOK_UPDATE to $result_DOK_UPDATE " ;
  898. if($_SESSION[DEBUG]>3) echo "<br>STEP2 - SZUKAM I ROZLICZNAM NIEROZLICZONA TRANSAKCJE KSIEGOWEA po odpowiedniej stronie i w jakiej wysokosci" ;
  899. $result_S_N_R=SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI('LEWO',$ID_BILLING_USERS_DOK,$WARTOSC_DOK,'',$ID_BILLING_NUMBERS,'TYLKO_ROZLICZ') ;
  900. } else {
  901. //funkcja nie wykonala ksiegowania i napotkala na opor, wyglada na to, ze sa dane w tabeli z wplatami nie zaznaczone w fakturach
  902. echo "<br>function ZAMKNIJ_DOKUMENT($ID_BILLING_NUMBERS) Probuje naprawic bledna spojnosc tabel... TODO" ;
  903. }
  904. }
  905. } else echo "<br> Error , niespojne dane dla function ZAMKNIJ_DOKUMENT($ID_BILLING_NUMBERS) ";
  906. } else if($result_TABLE_NAME["CLASS"]=="SELL_MA") {
  907. $WINIEN_MA="WINIEN";
  908. $sql="select ".$result_TABLE_NAME[TABLE].".ID, ".$result_TABLE_NAME[TABLE].".ID_FK_DEKRET,
  909. ".$result_TABLE_NAME[TABLE].".OPEN , ".$result_TABLE_NAME[TABLE].".ID_BILLING_NUMBERS,
  910. count(".$result_TABLE_NAME[TABLE]."_POS.ID), ".$result_TABLE_NAME[TABLE]."_POS.ID_BILLS_FVAT,
  911. ".$result_TABLE_NAME[TABLE].".ID_CURRENCY,
  912. round(sum(
  913. ((".$result_TABLE_NAME[TABLE]."_POS.PRICE * ".$result_TABLE_NAME[TABLE]."_POS.AMMOUNT) + (".$result_TABLE_NAME[TABLE]."_POS.PRICE * ".$result_TABLE_NAME[TABLE]."_POS.AMMOUNT * ".$result_TABLE_NAME[TABLE]."_POS.VAT / 100 ))
  914. -(".$result_TABLE_NAME[TABLE]."_POS.N_AMMOUNT * ".$result_TABLE_NAME[TABLE]."_POS.N_PRICE * ".$result_TABLE_NAME[TABLE]."_POS.N_VAT / 100)
  915. +(".$result_TABLE_NAME[TABLE]."_POS.N_AMMOUNT * ".$result_TABLE_NAME[TABLE]."_POS.N_PRICE * ".$result_TABLE_NAME[TABLE]."_POS.VAT / 100)
  916. ),2) as WARTOSC ,
  917. ".$result_TABLE_NAME[TABLE].".ID_BILLING_USERS , ".$result_TABLE_NAME[TABLE].".REMOTE_ID_BILLING_NUMBERS
  918. from ".$result_TABLE_NAME[TABLE]." left join ".$result_TABLE_NAME[TABLE]."_POS on ".$result_TABLE_NAME[TABLE].".ID=".$result_TABLE_NAME[TABLE]."_POS.ID_BILLS_FVAT
  919. left join ".$result_TABLE_NAME[BILLING_NUMBERS_TABLE]." on ".$result_TABLE_NAME[BILLING_NUMBERS_TABLE].".ID=".$result_TABLE_NAME[TABLE].".ID_BILLING_NUMBERS
  920. where ".$result_TABLE_NAME[BILLING_NUMBERS_TABLE].".ID_BILLING_USERS=".$result_TABLE_NAME[TABLE].".ID_BILLING_USERS and
  921. ".$result_TABLE_NAME[TABLE].".OPEN='N' and ".$result_TABLE_NAME[TABLE].".FK_ZAKSIEG='N' and ".$result_TABLE_NAME[TABLE].".ID_BILLING_NUMBERS='$ID_BILLING_NUMBERS' group by ".$result_TABLE_NAME[TABLE].".ID order by ".$result_TABLE_NAME[TABLE].".ID ";
  922. if($_SESSION[DEBUG]>2) echo "<br> $sql<hr>" ;
  923. $result_BIGJOIN=$vdb->sql_query("$sql") ;
  924. $result_BIGJOIN=$vdb->sql_fetchrow("$result_BIGJOIN[0]") ;
  925. if(($result_BIGJOIN[1]==0) || (!($result_BIGJOIN[1]))) {
  926. $WARTOSC_DOK=$result_BIGJOIN[7] ; $ID_BILLING_USERS_DOK=$result_BIGJOIN[8] ;
  927. if($_SESSION[DEBUG]>3) echo "<br> WARTOSC_DOK $WARTOSC_DOK , ID_BILLING_USERS_DOK $ID_BILLING_USERS_DOK ";
  928. if(VERIFYUPDATE_BILLING_ACCOUNTS($ID_BILLING_USERS_DOK)) {
  929. if($WARTOSC_DOK<0) {
  930. $FINANCE_KSIEGOWANIE="PRAWO" ; $FINANCE_KSIEGOWANIE_KWOTA=-$WARTOSC_DOK ;
  931. $WARTOSC_DOK= -$WARTOSC_DOK ;
  932. $WINIEN_MA="MA";
  933. } else {
  934. $FINANCE_KSIEGOWANIE="LEWO" ; $FINANCE_KSIEGOWANIE_KWOTA=$WARTOSC_DOK ;
  935. $WINIEN_MA="WINIEN";
  936. }
  937. // if(($result_FK[WINIEN])&& ((!$result_FK[MA]>0) || ($result_FK[MA]=='0.00') )) { $FINANCE_KSIEGOWANIE="LEWO" ; $FINANCE_KSIEGOWANIE_KWOTA=$result_FK[WINIEN] ; } else
  938. // if(($result_FK[MA])&& ((!$result_FK[WINIEN]>0) || ($result_FK[WINIEN]=='0.00'))) { $FINANCE_KSIEGOWANIE="PRAWO" ; $FINANCE_KSIEGOWANIE_KWOTA=$result_FK[MA] ; } else
  939. // $ERROR = $ERROR . "Problem z dokumentem $ID_BILLING_NUMBERS , (wartosci po obu stronach) ksiegowanie niemozliwe" ;
  940. $sql="insert into BILLING_ACCOUNTS_FILES ( ID ,ID_BILLING_USERS ,ID_BILLING_NUMBERS_TYPE,ID_BILLING_NUMBERS ,$WINIEN_MA ,A_RECORD_CREATE_AUTHOR ) values
  941. ('','$ID_BILLING_USERS_DOK','$result_TABLE_NAME[ID]','$ID_BILLING_NUMBERS','$WARTOSC_DOK','$uid')" ;
  942. //TODO DEBUG...
  943. // die("FORCED DIE SQL:::: $sql ::: at line 553");
  944. $result_B_A_L_INSERT=$vdb->sql_query("$sql") ;
  945. if($result_B_A_L_INSERT) {
  946. $result_B_A_L_INSERT=$vdb->sql_nextid();
  947. $sql="update ".$result_TABLE_NAME[TABLE]." set ID_FK_DEKRET='$result_B_A_L_INSERT' , OPEN='N' , FK_ZAKSIEG='Y' where ID='$result_BIGJOIN[0]'";
  948. $result_DOK_UPDATE=$vdb->sql_query($sql) ;
  949. if($_SESSION[DEBUG]>3) echo "<br>result_DOK_UPDATE to $result_DOK_UPDATE " ;
  950. if($_SESSION[DEBUG]>3) echo "<br>STEP2 - SZUKAM I ROZLICZNAM NIEROZLICZONA TRANSAKCJE KSIEGOWEA po odpowiedniej stronie i w jakiej wysokosci -- $FINANCE_KSIEGOWANIE , $result_BIGJOIN[REMOTE_ID_BILLING_NUMBERS] " ;
  951. //BYLO2004-08-02 $result_S_N_R=SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI('LEWO',$ID_BILLING_USERS_DOK,$WARTOSC_DOK,'',$ID_BILLING_NUMBERS,'TYLKO_ROZLICZ') ;
  952. //bylo 2005-01-13 problemy z korektami w rozrachunkach - minusy
  953. // $result_S_N_R=SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI("$FINANCE_KSIEGOWANIE",$ID_BILLING_USERS_DOK,$WARTOSC_DOK,'',$ID_BILLING_NUMBERS,'TYLKO_ROZLICZ',"$result_BIGJOIN[REMOTE_ID_BILLING_NUMBERS]") ;
  954. $result_S_N_R=SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI("$FINANCE_KSIEGOWANIE",$ID_BILLING_USERS_DOK,$FINANCE_KSIEGOWANIE_KWOTA,'',$ID_BILLING_NUMBERS,'TYLKO_ROZLICZ',"$result_BIGJOIN[REMOTE_ID_BILLING_NUMBERS]") ;
  955. // $result_S_N_R=SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI($FINANCE_KSIEGOWANIE,$result_FK[ID_BILLING_USERS],$FINANCE_KSIEGOWANIE_KWOTA,'',$ID_BILLING_NUMBERS,'KSIEGUJ_I_ROZLICZ',"$result_FK[do_dokumentu]") ;
  956. } else {
  957. //funkcja nie wykonala ksiegowania i napotkala na opor, wyglada na to, ze sa dane w tabeli z wplatami nie zaznaczone w fakturach
  958. echo "<br>function ZAMKNIJ_DOKUMENT($ID_BILLING_NUMBERS) Probuje naprawic bledna spojnosc tabel... TODO" ;
  959. }
  960. }
  961. } else echo "<br> Error , niespojne dane dla function ZAMKNIJ_DOKUMENT($ID_BILLING_NUMBERS) ";
  962. } else if($result_TABLE_NAME["CLASS"]=="FINANCE") {
  963. if($_SESSION[DEBUG]>2) echo "<br> CLASS FINANCE is at DEVELOPPING_NOW" ;
  964. $sql="select * from ".$result_TABLE_NAME[TABLE]." where ID_BILLING_NUMBERS='$ID_BILLING_NUMBERS' " ;
  965. $result_FK=$vdb->sql_query($sql) ;
  966. $result_FK=$vdb->sql_fetchrow($result_FK[0]) ;
  967. // echo "<br>$sql *** jaka kwota?" ;
  968. if($_SESSION[DEBUG]>3) echo "<br>result_FK[WINIEN] $result_FK[WINIEN] result_FK[MA] $result_FK[MA] ***";
  969. if($_SESSION[DEBUG]>3) echo "<br>STEP1 - Ksiegowanie-rozliczanie na WINIEN (LEWO) czy na MA (PRAWO) ";
  970. if($result_FK) {
  971. if(($result_FK[WINIEN])&& ((!$result_FK[MA]>0) || ($result_FK[MA]=='0.00') )) { $FINANCE_KSIEGOWANIE="LEWO" ; $FINANCE_KSIEGOWANIE_KWOTA=$result_FK[WINIEN] ; } else
  972. if(($result_FK[MA])&& ((!$result_FK[WINIEN]>0) || ($result_FK[WINIEN]=='0.00'))) { $FINANCE_KSIEGOWANIE="PRAWO" ; $FINANCE_KSIEGOWANIE_KWOTA=$result_FK[MA] ; } else
  973. $ERROR = $ERROR . "Problem z dokumentem $ID_BILLING_NUMBERS , (wartosci po obu stronach) ksiegowanie niemozliwe" ;
  974. } else $ERROR = $ERROR . "Problem z dokumentem $ID_BILLING_NUMBERS (brak niezbednych danych) ksiegowanie niemozliwe " ;
  975. if($_SESSION[DEBUG]>3) echo "... <b>$FINANCE_KSIEGOWANIE ($FINANCE_KSIEGOWANIE_KWOTA)</b>" ;
  976. if($_SESSION[DEBUG]>3) echo "<br>STEP2 - szukam NIEROZLICZONEJ TRANSAKCJI KSIEGOWEJ po odpowiedniej stronie i w jakiej wysokosci" ;
  977. $result_S_N_R=SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI($FINANCE_KSIEGOWANIE,$result_FK[ID_BILLING_USERS],$FINANCE_KSIEGOWANIE_KWOTA,'',$ID_BILLING_NUMBERS,'KSIEGUJ_I_ROZLICZ',"$result_FK[do_dokumentu]") ;
  978. if($_SESSION[DEBUG]>3) echo "<br>STEP3 - Umieszczam rekord w analityce w roznych konfiguracjach rozrachunkowych, zaleznych od zmiennej result_S_N_R" ;
  979. // print_r($result_S_N_R) ;
  980. // UMIESC_DOKUMENT_FK_W_ANALITYCE_I_ROZLICZ($ID_BILLING_NUMBERS,$result_S_N_R) ;
  981. if($_SESSION[DEBUG]>3) echo "<br>STEP4 - Obliczam w jakiej wartosci ta transakcja jest jeszcze " ;
  982. } else echo "<br> Nie supportowana klasa dokumentu <b>$result_TABLE_NAME[CLASS] </b> ";
  983. if($ERROR) echo "<font color=red><br>$ERROR</font>" ; else return 1;
  984. } //EOF func.
  985. function float1($val)
  986. {
  987. $x = intval(100*$val)/100;
  988. if ($x == intval($x)) return "".$x.".00";
  989. else return intval(100*$val)/100;
  990. }
  991. function DO_DOKUMENTU_MAKESQL($do_dokumentu,$KROK) {
  992. //JEZELI FAKTURA TYCZY SIE KILKU DOKUMENTOW TO SEPARATOREM JEST SPACJA
  993. $do_dokumentu_arr=explode(' ',$do_dokumentu) ;
  994. if($KROK==0) {
  995. if($_SESSION[DEBUG]>3) echo "<br>KROK1 DO DOKUMENTU $do_dokumentu - Rozliczenie okreslonej transakcji" ;
  996. //KROK - zakladamy ze zmienna zawiera dokladne ID_BILLING_NUMBERS
  997. if($do_dokumentu_arr[1]) {
  998. foreach($do_dokumentu_arr as $wypis) {
  999. if(!$sql) $sql=" and ( t1.ID_BILLING_NUMBERS='$wypis' " ; else $sql.=" or t1.ID_BILLING_NUMBERS='$wypis' " ;
  1000. } $sql.=" )";
  1001. } else {
  1002. $sql="and t1.ID_BILLING_NUMBERS='$do_dokumentu' ";
  1003. } //do_dokumentu_arr else istnieje
  1004. } else if($KROK==1) {
  1005. //KROK - zakladamy ze zmienna zawiera 2 ostatnie znaki ID_BILLING_NUMBERS
  1006. if($_SESSION[DEBUG]>3) echo "<br>KROK2 DO DOKUMENTU $do_dokumentu - Rozliczenie okreslonej transakcji wg ostatnich 2-ch znakow dokumentu (np. platnosci masowe)" ;
  1007. $sql=" and t1.ID_BILLING_NUMBERS like '%$do_dokumentu' " ;
  1008. } else {
  1009. //KROK - zakladamy ze zmienna zawiera bledne ID_BILLING_NUMBERS
  1010. $sql="" ;
  1011. }
  1012. //echo "<br>$sql i krok $KROK ... ";
  1013. return $sql;
  1014. }
  1015. function SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI($LEWO_PRAWO,$ID_BILLING_USERS,$KWOTA,$ID_BILLING_NUMBERS,$SRC_ID_BILLING_NUMBERS,$ACTION,$do_dokumentu) {
  1016. if($_SESSION[DEBUG]>2) echo "<br> function SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI($LEWO_PRAWO,$ID_BILLING_USERS,$KWOTA,$ID_BILLING_NUMBERS,$SRC_ID_BILLING_NUMBERS,$ACTION,$do_dokumentu) <br>";
  1017. global $vdb,$ERROR ;
  1018. if($LEWO_PRAWO=="PRAWO") {
  1019. $WHERE="WINIEN" ;
  1020. $WHERE_PRIM="MA" ;
  1021. } else if($LEWO_PRAWO=="LEWO") {
  1022. $WHERE="MA" ;
  1023. $WHERE_PRIM="WINIEN" ;
  1024. }
  1025. if($ID_BILLING_NUMBERS) {
  1026. $WHERE_ID_BILLING_NUMBERS=" t1.ID_BILLING_NUMBERS='$ID_BILLING_NUMBERS' and " ;
  1027. }
  1028. $WARIANT=$LEWO_PRAWO."0" ;
  1029. if(strlen($do_dokumentu)<>0) $KROK=0; else $KROK=2 ;
  1030. for(;$KROK<=2;$KROK++) {
  1031. // $vdb->sql_query('lock tables BILLING_ACCOUNTS_FILES WRITE') ;
  1032. //Bylo przed 2005-01-13 - problem z kilkoma dokumentami i joinem - zle sumowalo mozna joinowac tylko raz samego siebie
  1033. // $sql=" select t1.ID_BILLING_NUMBERS AS NR_DOK ,t1.ID_BILLING_USERS as PLATNIK ,t1.WINIEN,t1.MA , t1.ID_FIN_WINIEN as ID_F_W, t1.ID_FIN_WINIEN_VAL as F_WINIEN_V, t1.ID_FIN_MA as ID_F_M, t1.ID_FIN_MA_VAL as F_MA_V, max(t2.ID), sum(t2.ID_FIN_WINIEN_VAL) as ROZ_WINIEN , max(t3.ID), sum(t3.ID_FIN_MA_VAL) as ROZ_MA, t1.WINIEN - sum(t2.ID_FIN_WINIEN_VAL) - sum(t3.ID_FIN_MA_VAL) as POZ_WINIEN, t1.MA - sum(t3.ID_FIN_MA_VAL) - sum(t2.ID_FIN_WINIEN_VAL) as POZ_MA from BILLING_ACCOUNTS_FILES as t1 left join BILLING_ACCOUNTS_FILES as t2 on t1.ID_BILLING_NUMBERS=t2.ID_FIN_WINIEN left join BILLING_ACCOUNTS_FILES as t3 on t1.ID_BILLING_NUMBERS=t3.ID_FIN_MA where t1.ID_FIN_WINIEN is NULL and t1.ID_FIN_MA is NULL and t1.".$WHERE_PRIM." = 0 and t1.".$WHERE." > 0 and $WHERE_ID_BILLING_NUMBERS t1.ID_BILLING_USERS=".$ID_BILLING_USERS." ".DO_DOKUMENTU_MAKESQL($do_dokumentu,$KROK)." group by t1.ID_BILLING_NUMBERS limit 0,1 ";
  1034. $sql=" select t1.ID_BILLING_NUMBERS AS NR_DOK ,t1.ID_BILLING_USERS as PLATNIK ,t1.WINIEN,t1.MA , t1.ID_FIN_WINIEN as ID_F_W, t1.ID_FIN_WINIEN_VAL as F_WINIEN_V,
  1035. t1.ID_FIN_MA as ID_F_M, t1.ID_FIN_MA_VAL as F_MA_V, max(t2.ID), sum(t2.ID_FIN_WINIEN_VAL) as ROZ_WINIEN , max(t2.ID), sum(t2.ID_FIN_MA_VAL) as ROZ_MA,
  1036. t1.WINIEN - sum(t2.ID_FIN_WINIEN_VAL) - sum(t2.ID_FIN_MA_VAL) as POZ_WINIEN, t1.MA - sum(t2.ID_FIN_MA_VAL) - sum(t2.ID_FIN_WINIEN_VAL) as POZ_MA
  1037. from BILLING_ACCOUNTS_FILES as t1
  1038. left join BILLING_ACCOUNTS_FILES as t2 on t2.ID_BILLING_USERS=".$ID_BILLING_USERS." and ( t1.ID_BILLING_NUMBERS=t2.ID_FIN_WINIEN or t1.ID_BILLING_NUMBERS=t2.ID_FIN_MA )
  1039. where
  1040. t1.ID_FIN_WINIEN is NULL and t1.ID_FIN_MA is NULL and t1.".$WHERE_PRIM." = 0 and t1.".$WHERE." > 0 and
  1041. $WHERE_ID_BILLING_NUMBERS
  1042. t1.ID_BILLING_USERS=".$ID_BILLING_USERS." ".self::DO_DOKUMENTU_MAKESQL($do_dokumentu,$KROK)." group by t1.ID_BILLING_NUMBERS limit 0,1 ";
  1043. if($_SESSION[DEBUG]>3) echo "<br> krok: $KROK SQL(SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI) to $sql ***";
  1044. $result_S_N_R=$this->db->query($sql);
  1045. $result_S_N_R=$this->db->fetch_assoc($result_S_N_R);
  1046. DEBUG_S(3,'result_S_N_R',array($result_S_N_R,$sql),__FILE__,__FUNCTION__,__LINE__);
  1047. if($result_S_N_R) break ;
  1048. // $vdb->sql_query('unlock tables') ;
  1049. // echo "<br>$sql<hr>";
  1050. } //EOF for $do_dokumentu petla KROK
  1051. if($result_S_N_R) {
  1052. // print_r($result_S_N_R) ;
  1053. $POZ_S_N_R_KWOTA = $result_S_N_R[$WHERE]-$result_S_N_R["ROZ_".$WHERE]-$result_S_N_R["ROZ_".$WHERE_PRIM] ;
  1054. $result_S_N_R[POZ_S_N_R_KWOTA] = $POZ_S_N_R_KWOTA ;
  1055. $result_S_N_R[WHERE] = $WHERE ;
  1056. $result_S_N_R[WHERE_PRIM] = $WHERE_PRIM ;
  1057. $POZ_S_N_R_KWOTA = round($POZ_S_N_R_KWOTA,2);
  1058. $KWOTA = round($KWOTA,2);
  1059. if($_SESSION[DEBUG]>3) echo "<br> Usiluje rozliczyc kwote $KWOTA do <font color=green>( ". $result_S_N_R[$WHERE]."-".$result_S_N_R["ROZ_".$WHERE]."-".$result_S_N_R["ROZ_".$WHERE_PRIM]." ) </font> <b> $POZ_S_N_R_KWOTA ?=?=? $KWOTA </b>
  1060. $POZ_S_N_R_KWOTA_2 ==??== $KWOTA_2 ||| result_S_N_R[ACTION_LOCAL_VAL]==$result_S_N_R[ACTION_LOCAL_VAL] result_S_N_R[ACTION_LOCAL_STRONA]==$result_S_N_R[ACTION_LOCAL_STRONA]
  1061. " ;
  1062. if(!$KWOTA) {
  1063. if($_SESSION[DEBUG]>3) echo "<br><b> WYKRYWAM KWOTE ZALEGLOSCI DLA $SRC_ID_BILLING_NUMBERS, ($ACTION) </b>" ;
  1064. //Bylo przed 2005-01-13 - problem z kilkoma dokumentami i joinem - zle sumowalo mozna joinowac tylko raz samego siebie
  1065. // $sql=" select t1.ID_BILLING_NUMBERS AS NR_DOK ,t1.ID_BILLING_USERS as PLATNIK ,t1.WINIEN,t1.MA , t1.ID_FIN_WINIEN as ID_F_W, t1.ID_FIN_WINIEN_VAL as F_WINIEN_V, t1.ID_FIN_MA as ID_F_M, t1.ID_FIN_MA_VAL as F_MA_V, max(t2.ID), sum(t2.ID_FIN_WINIEN_VAL) as ROZ_WINIEN , max(t3.ID), sum(t3.ID_FIN_MA_VAL) as ROZ_MA, t1.WINIEN - sum(t2.ID_FIN_WINIEN_VAL) - sum(t3.ID_FIN_MA_VAL) as POZ_WINIEN, t1.MA - sum(t3.ID_FIN_MA_VAL) - sum(t2.ID_FIN_WINIEN_VAL) as POZ_MA from BILLING_ACCOUNTS_FILES as t1 left join BILLING_ACCOUNTS_FILES as t2 on t1.ID_BILLING_NUMBERS=t2.ID_FIN_WINIEN left join BILLING_ACCOUNTS_FILES as t3 on t1.ID_BILLING_NUMBERS=t3.ID_FIN_MA where t1.ID_FIN_WINIEN is NULL and t1.ID_FIN_MA is NULL and t1.".$WHERE." = 0 and t1.".$WHERE_PRIM." > 0 and t1.ID_BILLING_NUMBERS='$SRC_ID_BILLING_NUMBERS' and t1.ID_BILLING_USERS=".$ID_BILLING_USERS." group by t1.ID_BILLING_NUMBERS limit 0,1 ";
  1066. $sql=" select t1.ID_BILLING_NUMBERS AS NR_DOK ,t1.ID_BILLING_USERS as PLATNIK ,t1.WINIEN,t1.MA , t1.ID_FIN_WINIEN as ID_F_W, t1.ID_FIN_WINIEN_VAL as F_WINIEN_V,
  1067. t1.ID_FIN_MA as ID_F_M, t1.ID_FIN_MA_VAL as F_MA_V, max(t2.ID), sum(t2.ID_FIN_WINIEN_VAL) as ROZ_WINIEN , max(t2.ID), sum(t2.ID_FIN_MA_VAL) as ROZ_MA,
  1068. t1.WINIEN - sum(t2.ID_FIN_WINIEN_VAL) - sum(t2.ID_FIN_MA_VAL) as POZ_WINIEN, t1.MA - sum(t2.ID_FIN_MA_VAL) - sum(t2.ID_FIN_WINIEN_VAL) as POZ_MA
  1069. from BILLING_ACCOUNTS_FILES as t1
  1070. left join BILLING_ACCOUNTS_FILES as t2 on t2.ID_BILLING_USERS=".$ID_BILLING_USERS." and ( t1.ID_BILLING_NUMBERS=t2.ID_FIN_WINIEN or t1.ID_BILLING_NUMBERS=t2.ID_FIN_MA )
  1071. where
  1072. t1.ID_FIN_WINIEN is NULL and t1.ID_FIN_MA is NULL and t1.".$WHERE." = 0 and t1.".$WHERE_PRIM." > 0 and
  1073. t1.ID_BILLING_NUMBERS='$SRC_ID_BILLING_NUMBERS' and
  1074. t1.ID_BILLING_USERS=".$ID_BILLING_USERS." group by t1.ID_BILLING_NUMBERS limit 0,1 ";
  1075. //echo "<br>$sql " ;
  1076. $result_S_N_R_K=$this->db->query($sql); $result_S_N_R_K=$this->db->fetch_assoc($result_S_N_R_K);
  1077. $KWOTA = $result_S_N_R_K[$WHERE_PRIM]-$result_S_N_R_K["ROZ_".$WHERE_PRIM]-$result_S_N_R_K["ROZ_".$WHERE] ;
  1078. DEBUG_S(3,'result_S_N_R_K',array($result_S_N_R_K,$sql),__FILE__,__FUNCTION__,__LINE__);
  1079. if($_SESSION[DEBUG]>3) echo "..... <font color=red> <b>WYKRYLEM POZOSTALA KWOTE KWOTE $KWOTA (a nasza to $POZ_S_N_R_KWOTA) </b></font>" ;
  1080. // print_r($result_S_N_R_K) ;
  1081. }
  1082. if(round($POZ_S_N_R_KWOTA,2) == round($KWOTA,2)) {
  1083. $result_S_N_R[ACTION_REMOTE_VAL] = "0" ; $result_S_N_R[ACTION_LOCAL_VAL] = "$KWOTA" ;
  1084. $result_S_N_R[ACTION_REMOTE_STRONA] = "$WHERE" ; $result_S_N_R[ACTION_LOCAL_STRONA] = "$WHERE" ;
  1085. if($_SESSION[DEBUG]>3) echo " <b> NASZ DOKUMENT ($KWOTA) W CALOSCI ROZLICZA DOKUMENT $result_S_N_R[NR_DOK] oraz SAM SIEBIE </b> result_S_N_R[ACTION_LOCAL_VAL]==$result_S_N_R[ACTION_LOCAL_VAL] result_S_N_R[ACTION_LOCAL_STRONA]==$result_S_N_R[ACTION_LOCAL_STRONA] result_S_N_R[ACTION_REMOTE_VAL]==$result_S_N_R[ACTION_REMOTE_VAL] result_S_N_R[ACTION_REMOTE_STRONA]==$result_S_N_R[ACTION_REMOTE_STRONA] " ;
  1086. $WARIANT=$LEWO_PRAWO."3" ;
  1087. } else if(round($POZ_S_N_R_KWOTA,2) > round($KWOTA,2) ) {
  1088. $WARIANT=$LEWO_PRAWO."1" ;
  1089. $result_S_N_R[ACTION_REMOTE_VAL] = "" ; $result_S_N_R[ACTION_LOCAL_VAL] = "$KWOTA" ;
  1090. $result_S_N_R[ACTION_REMOTE_STRONA] = "" ; $result_S_N_R[ACTION_LOCAL_STRONA] = "$WHERE" ;
  1091. if($_SESSION[DEBUG]>3) echo " <b> NASZ DOKUMENT ($KWOTA) W CALOSCI ROZLICZA SIE NA DOKUMENCIE $result_S_N_R[NR_DOK] </b> result_S_N_R[ACTION_LOCAL_VAL]==$result_S_N_R[ACTION_LOCAL_VAL] result_S_N_R[ACTION_LOCAL_STRONA]==$result_S_N_R[ACTION_LOCAL_STRONA] " ;
  1092. } else if(round($POZ_S_N_R_KWOTA,2) < round($KWOTA,2) ) {
  1093. $WARIANT=$LEWO_PRAWO."2" ;
  1094. // $result_S_N_R[NR_DOK] = "$SRC_ID_BILLING_NUMBERS" ;
  1095. $result_S_N_R[ACTION_REMOTE_VAL] = "$POZ_S_N_R_KWOTA" ; $result_S_N_R[ACTION_LOCAL_VAL] = "" ;
  1096. $result_S_N_R[ACTION_REMOTE_STRONA] = "$WHERE" ; $result_S_N_R[ACTION_LOCAL_STRONA] = "" ;
  1097. if($_SESSION[DEBUG]>3) echo " <b> WARIANT2 NASZ DOKUMENT ($KWOTA) W CALOSCI ROZLICZA DOKUMENT $result_S_N_R[NR_DOK] kwota $POZ_S_N_R_KWOTA i zostaje reszta :$POZ_S_N_R_KWOTA ( $POZ_S_N_R_KWOTA ) < ( $KWOTA) </b> result_S_N_R[ACTION_REMOTE_VAL]==$result_S_N_R[ACTION_REMOTE_VAL] result_S_N_R[ACTION_REMOTE_STRONA]==$result_S_N_R[ACTION_REMOTE_STRONA] " ;
  1098. } else $ERROR = $ERROR . "<br> Niedopuszczalny wyjatek w funkcji SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI" ;
  1099. }
  1100. if($_SESSION[DEBUG]>3) echo "<br> Wariant to $WARIANT a akcja to $ACTION EOL";
  1101. // print_r($result_S_N_R);
  1102. if(!$ERROR) {
  1103. if($ACTION=="KSIEGUJ_I_ROZLICZ") {
  1104. if($WARIANT==$LEWO_PRAWO."0") { if($_SESSION[DEBUG]>3) echo "<br> TYLKO KSIEGUJE_DOKUMENT_FK($SRC_ID_BILLING_NUMBERS)" ;
  1105. ZAMKNIJ_DOKUMENT_TYLKO_KSIEGUJ($SRC_ID_BILLING_NUMBERS);
  1106. } else if($WARIANT==$LEWO_PRAWO."1") {
  1107. if($_SESSION[DEBUG]>3) echo "<b> Na prawde probuje zrobic $ACTION W1 </b>... ";
  1108. ZAMKNIJ_DOKUMENT_TYLKO_KSIEGUJ($SRC_ID_BILLING_NUMBERS, array( "ID_FIN_".$WHERE => $result_S_N_R[NR_DOK] , "ID_FIN_".$WHERE."_VAL" => "$KWOTA" ) );
  1109. } else if($WARIANT==$LEWO_PRAWO."2") {
  1110. if($_SESSION[DEBUG]>3) echo "<b> Na prawde probuje zrobic $ACTION W2 </b> ... ";
  1111. $RES_ZAMKNIJ_DOKUMENT_TYLKO_KSIEGUJ=ZAMKNIJ_DOKUMENT_TYLKO_KSIEGUJ($SRC_ID_BILLING_NUMBERS);
  1112. if($RES_ZAMKNIJ_DOKUMENT_TYLKO_KSIEGUJ==1) {
  1113. $RES_ROZLICZ_DOKUMENT_FK=ROZLICZ_DOKUMENT_FK($result_S_N_R[NR_DOK],array( "ID_FIN_".$WHERE => $SRC_ID_BILLING_NUMBERS , "ID_FIN_".$WHERE."_VAL" => "$POZ_S_N_R_KWOTA" , "WHERE" => "$WHERE" )) ;
  1114. //TODO TU PISZE TERAZ
  1115. // $result_S_N_R=SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI($FINANCE_KSIEGOWANIE,$result_FK[ID_BILLING_USERS],$FINANCE_KSIEGOWANIE_KWOTA,'',$ID_BILLING_NUMBERS,'KSIEGUJ_I_ROZLICZ') ;
  1116. if($_SESSION[DEBUG]>3) echo "<font color=#444444><br>TODO TESTING rozliczanie dokumentu w petli... SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI($LEWO_PRAWO,$ID_BILLING_USERS,$KWOTA,$ID_BILLING_NUMBERS,$SRC_ID_BILLING_NUMBERS,$ACTION) </font>";
  1117. //TODO pytanie czy zapodawac w tym momencie ID_BILLING_NUMBERS ??? chyba nie
  1118. SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI($LEWO_PRAWO,$ID_BILLING_USERS,'',$ID_BILLING_NUMBERS,$SRC_ID_BILLING_NUMBERS,'TYLKO_ROZLICZ') ;
  1119. } else $ERROR = $ERROR . "<br> f. ZAMKNIJ_DOKUMENT_TYLKO_KSIEGUJ($SRC_ID_BILLING_NUMBERS) nie wpisala dokumentu prawidlowo, nie rozliczono dokumentu z z uwagi na problem " ;
  1120. } else if($WARIANT==$LEWO_PRAWO."3") {
  1121. if($_SESSION[DEBUG]>3) echo "<b> Na prawde probuje zrobic $ACTION W3 </b>... ";
  1122. $RES_ZAMKNIJ_DOKUMENT_TYLKO_KSIEGUJ=ZAMKNIJ_DOKUMENT_TYLKO_KSIEGUJ($SRC_ID_BILLING_NUMBERS, array( "ID_FIN_".$WHERE => $result_S_N_R[NR_DOK] , "ID_FIN_".$WHERE."_VAL" => "$KWOTA" ) );
  1123. if($RES_ZAMKNIJ_DOKUMENT_TYLKO_KSIEGUJ==1) {
  1124. $RES_ROZLICZ_DOKUMENT_FK=ROZLICZ_DOKUMENT_FK($result_S_N_R[NR_DOK],array( "ID_FIN_".$WHERE => $SRC_ID_BILLING_NUMBERS , "ID_FIN_".$WHERE."_VAL" => "0" , "WHERE" => "$WHERE" )) ;
  1125. } else $ERROR = $ERROR . "<br> f. ZAMKNIJ_DOKUMENT_TYLKO_KSIEGUJ($SRC_ID_BILLING_NUMBERS) nie wpisala dokumentu prawidlowo, nie rozliczono dokumentu z z uwagi na problem " ;
  1126. if($ERROR) echo $ERROR ;
  1127. }
  1128. } else if($ACTION=="TYLKO_ROZLICZ") {
  1129. if($_SESSION[DEBUG]>3) echo "<br> TYLKO_ROZLICZ_W_TOKU ********** " ;
  1130. if($WARIANT==$LEWO_PRAWO."0") { if($_SESSION[DEBUG]>3) echo "<br> TYLKO KSIEGUJE_DOKUMENT_FK($SRC_ID_BILLING_NUMBERS)" ;
  1131. if($_SESSION[DEBUG]>2) echo "ZAMKNIJ_DOKUMENT_TYLKO_KSIEGUJ($SRC_ID_BILLING_NUMBERS)" ;
  1132. } else if($WARIANT==$LEWO_PRAWO."1") {
  1133. if($_SESSION[DEBUG]>3) echo "<b> Na prawde probuje zrobic $ACTION W1 </b>... ";
  1134. $RES_ROZLICZ_DOKUMENT_FK=ROZLICZ_DOKUMENT_FK($SRC_ID_BILLING_NUMBERS,array( "ID_FIN_".$WHERE => $result_S_N_R[NR_DOK] , "ID_FIN_".$WHERE."_VAL" => "$KWOTA" , "WHERE" => "$WHERE" )) ;
  1135. // ZAMKNIJ_DOKUMENT_TYLKO_KSIEGUJ($SRC_ID_BILLING_NUMBERS, array( "ID_FIN_".$WHERE => $result_S_N_R[NR_DOK] , "ID_FIN_".$WHERE."_VAL" => "$KWOTA" ) );
  1136. } else if($WARIANT==$LEWO_PRAWO."2") {
  1137. if($_SESSION[DEBUG]>3) echo "<b> Na prawde probuje zrobic $ACTION W2 </b> ... ";
  1138. // $RES_ZAMKNIJ_DOKUMENT_TYLKO_KSIEGUJ=ZAMKNIJ_DOKUMENT_TYLKO_KSIEGUJ($SRC_ID_BILLING_NUMBERS);
  1139. // if($RES_ZAMKNIJ_DOKUMENT_TYLKO_KSIEGUJ==1) {
  1140. $RES_ROZLICZ_DOKUMENT_FK=ROZLICZ_DOKUMENT_FK($result_S_N_R[NR_DOK],array( "ID_FIN_".$WHERE => $SRC_ID_BILLING_NUMBERS , "ID_FIN_".$WHERE."_VAL" => "$POZ_S_N_R_KWOTA" , "WHERE" => "$WHERE" )) ;
  1141. if($_SESSION[DEBUG]>3) echo "<font color=#444444><br>TODO TESTING rozliczanie dokumentu w petli... SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI($LEWO_PRAWO,$ID_BILLING_USERS,$KWOTA,$ID_BILLING_NUMBERS,$SRC_ID_BILLING_NUMBERS,$ACTION) </font>";
  1142. if($RES_ROZLICZ_DOKUMENT_FK) SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI($LEWO_PRAWO,$ID_BILLING_USERS,'',$ID_BILLING_NUMBERS,$SRC_ID_BILLING_NUMBERS,'TYLKO_ROZLICZ') ;
  1143. // } else $ERROR = $ERROR . "<br> f. ZAMKNIJ_DOKUMENT_TYLKO_KSIEGUJ($SRC_ID_BILLING_NUMBERS) nie wpisala dokumentu prawidlowo, nie rozliczono dokumentu z z uwagi na problem " ;
  1144. } else if($WARIANT==$LEWO_PRAWO."3") {
  1145. if($_SESSION[DEBUG]>3) echo "<b> Na prawde probuje zrobic $ACTION W3 linia 864 </b>... ";
  1146. $RES_ROZLICZ_DOKUMENT_FK=ROZLICZ_DOKUMENT_FK($SRC_ID_BILLING_NUMBERS,array( "ID_FIN_".$WHERE => $result_S_N_R[NR_DOK] , "ID_FIN_".$WHERE."_VAL" => "$KWOTA" , "WHERE" => "$WHERE" )) ;
  1147. echo "<br> res1/2::$RES_ROZLICZ_DOKUMENT_FK " ;
  1148. $RES_ROZLICZ_DOKUMENT_FK=ROZLICZ_DOKUMENT_FK($result_S_N_R[NR_DOK],array( "ID_FIN_".$WHERE => $SRC_ID_BILLING_NUMBERS , "ID_FIN_".$WHERE."_VAL" => "0" , "WHERE" => "$WHERE" )) ;
  1149. echo "<br> res2/2::$RES_ROZLICZ_DOKUMENT_FK " ;
  1150. }
  1151. }
  1152. return $result_S_N_R ;
  1153. }
  1154. // echo "<br>$sql" ;
  1155. }
  1156. function ROZLICZ_DOKUMENT_FK($ID_BILLING_NUMBERS,$FLAGI) {
  1157. global $vdb, $ERROR ,$uid ;
  1158. $sql="update BILLING_ACCOUNTS_FILES set ID_FIN_".$FLAGI[WHERE]."='". $FLAGI["ID_FIN_".$FLAGI[WHERE]]."', ID_FIN_".$FLAGI[WHERE]."_VAL='". $FLAGI["ID_FIN_".$FLAGI[WHERE]."_VAL"]."' where ID_BILLING_NUMBERS='$ID_BILLING_NUMBERS' " ;
  1159. $result_UPD_BAF=$vdb->sql_query($sql);
  1160. if($_SESSION[DEBUG]>3) echo "<hr><font color=blue> $sql</font> , result == $result_UPD_BAF *** " ;
  1161. if(!($result_UPD_BAF)) $ERROR = $ERROR . "<br> f. ROZLICZ_DOKUMENT_FK($ID_BILLING_NUMBERS,$FLAGI) nie zaktualizowala informacji rozliczeniowych ($sql) TODO" ;
  1162. return $result_UPD_BAF ;
  1163. } //EOF func
  1164. function ZAMKNIJ_DOKUMENT_TYLKO_KSIEGUJ($ID_BILLING_NUMBERS,$FLAGI) {
  1165. global $vdb, $ERROR ;
  1166. //print_r($FLAGI) ;
  1167. //FLAGI=(ID_W,W$,ID_M,M$)
  1168. if($FLAGI[ID_FIN_WINIEN]) {
  1169. $FLAGI_FIELDS=", ID_FIN_WINIEN , ID_FIN_WINIEN_VAL" ;
  1170. $FLAGI_VAL=", '$FLAGI[ID_FIN_WINIEN]', '$FLAGI[ID_FIN_WINIEN_VAL]' " ;
  1171. $COMA="," ;
  1172. }
  1173. if($FLAGI[ID_FIN_MA]) {
  1174. if(!$FLAGI_FIELDS) $COMA="," ;
  1175. $FLAGI_FIELDS="$FLAGI_FIELDS $COMA ID_FIN_MA, ID_FIN_MA_VAL" ;
  1176. $FLAGI_VAL="$FLAGI_VAL $COMA '$FLAGI[ID_FIN_MA]','$FLAGI[ID_FIN_MA_VAL]' " ;
  1177. $COMA="," ;
  1178. }
  1179. if($_SESSION[DEBUG]>3) echo "<br> Flagi VAL $FLAGI_FIELDS |||| $FLAGI_VAL EOL .... ";
  1180. $sql="select t2.* from BILLING_NUMBERS as t1, BILLING_NUMBERS_TYPE as t2 where t1.ID_BILLING_NUMBERS_TYPE=t2.ID and t1.ID='$ID_BILLING_NUMBERS'" ;
  1181. $result_TABLE_NAME=$vdb->sql_query("$sql") ;
  1182. $result_TABLE_NAME=$vdb->sql_fetchrow($result_TABLE_NAME[0]);
  1183. //echo "<br>$sql";
  1184. if($result_TABLE_NAME["CLASS"]=="FINANCE") {
  1185. $sql="select ".$result_TABLE_NAME[TABLE].".ID, ".$result_TABLE_NAME[TABLE].".ID_FK_DEKRET,
  1186. ".$result_TABLE_NAME[TABLE].".OPEN , ".$result_TABLE_NAME[TABLE].".ID_BILLING_NUMBERS,
  1187. ".$result_TABLE_NAME[TABLE].".ID_CURRENCY, ".$result_TABLE_NAME[TABLE].".WINIEN , ".$result_TABLE_NAME[TABLE].".MA ,
  1188. ".$result_TABLE_NAME[TABLE].".ID_BILLING_USERS
  1189. from ".$result_TABLE_NAME[TABLE]." where
  1190. ".$result_TABLE_NAME[TABLE].".OPEN='N' and ".$result_TABLE_NAME[TABLE].".FK_ZAKSIEG='N' and ".$result_TABLE_NAME[TABLE].".ID_BILLING_NUMBERS='$ID_BILLING_NUMBERS' ";
  1191. // echo "<br> $sql *********** " ;
  1192. $result_BIGJOIN=$vdb->sql_query("$sql") ;
  1193. $result_BIGJOIN=$vdb->sql_fetchrow("$result_BIGJOIN[0]") ;
  1194. if(($result_BIGJOIN[1]==0) || (!($result_BIGJOIN[1]))) {
  1195. //print_r($result_BIGJOIN);
  1196. $WARTOSC_DOK_WINIEN=$result_BIGJOIN[5] ; $WARTOSC_DOK_MA=$result_BIGJOIN[6] ; $ID_BILLING_USERS_DOK=$result_BIGJOIN[7] ;
  1197. if($_SESSION[DEBUG]>3) echo "<br> WARTOSC_DOK_WINIEN: $WARTOSC_DOK_WINIEN , WARTOSC_DOK_MA: $WARTOSC_DOK_MA , ID_BILLING_USERS_DOK , $ID_BILLING_USERS_DOK ***--** ";
  1198. if(VERIFYUPDATE_BILLING_ACCOUNTS($ID_BILLING_USERS_DOK)) {
  1199. $sql="insert into BILLING_ACCOUNTS_FILES ( ID ,ID_BILLING_USERS ,ID_BILLING_NUMBERS_TYPE,ID_BILLING_NUMBERS ,WINIEN,MA ,A_RECORD_CREATE_AUTHOR $FLAGI_FIELDS ) values
  1200. ('','$ID_BILLING_USERS_DOK','$result_TABLE_NAME[ID]','$ID_BILLING_NUMBERS','$WARTOSC_DOK_WINIEN','$WARTOSC_DOK_MA','$uid' $FLAGI_VAL )" ;
  1201. if($_SESSION[DEBUG]>3) echo "<br>$sql ---- TYLKO_KSIEGUJ_SQL";
  1202. $result_B_A_L_INSERT=$vdb->sql_query("$sql") ;
  1203. if($result_B_A_L_INSERT) {
  1204. $result_B_A_L_INSERT=$vdb->sql_nextid();
  1205. $sql="update ".$result_TABLE_NAME[TABLE]." set ID_FK_DEKRET='$result_B_A_L_INSERT' , OPEN='N' , FK_ZAKSIEG='Y' where ID='$result_BIGJOIN[0]'";
  1206. $result_DOK_UPDATE=$vdb->sql_query($sql) ;
  1207. if($_SESSION[DEBUG]>3) echo "<br>result_DOK_UPDATE to $result_DOK_UPDATE " ;
  1208. return $result_DOK_UPDATE ;
  1209. } else {
  1210. //funkcja nie wykonala ksiegowania i napotkala na opor, wyglada na to, ze sa dane w tabeli z wplatami nie zaznaczone w fakturach
  1211. echo "<br>function ZAMKNIJ_DOKUMENT($ID_BILLING_NUMBERS) Probuje naprawic bledna spojnosc tabel... TODO" ;
  1212. } } }
  1213. } //EOF if CLASS==FINANCE
  1214. } //EOF FUNC
  1215. function VERIFYUPDATE_BILLING_ACCOUNTS($ID_BILLING_USERS) {
  1216. global $process_services,$execute_process,$ERROR,$process_services,$vdb,$uid ;
  1217. $sql="select * from BILLING_ACCOUNTS where ID_BILLING_USERS='$ID_BILLING_USERS'" ;
  1218. $result_BILLING_ACCOUNTS=$vdb->sql_query("$sql") ;
  1219. $result_BILLING_ACCOUNTS=$vdb->sql_fetchrow("$result_BILLING_ACCOUNTS[0]") ;
  1220. if($ID_BILLING_USERS) {
  1221. if($result_BILLING_ACCOUNTS[ID]) {
  1222. if($_SESSION[DEBUG]>3) echo "<br>Detected existing account (ID=$result_BILLING_ACCOUNTS[ID])" ;
  1223. return "$result_BILLING_ACCOUNTS[ID]" ;
  1224. } else {
  1225. $sql="insert into BILLING_ACCOUNTS (ID,ID_BILLING_USERS,WINIEN,MA) values ('','$ID_BILLING_USERS','0','0') " ;
  1226. $result_BILLING_ACCOUNTS_2=$vdb->sql_query("$sql") ;
  1227. if($result_BILLING_ACCOUNTS_2) {
  1228. $result_BILLING_NUMBERS=$vdb->sql_nextid();
  1229. if($_SESSION[DEBUG]>3) echo "<br> Utworzono nowy wpis w tablicy zobowiazan (ID=$result_BILLING_NUMBERS)" ;
  1230. return "$result_BILLING_NUMBERS";
  1231. }
  1232. }
  1233. } else echo "<br>BLAD function VERIFYUPDATE_BILLING_ACCOUNTS($ID_BILLING_USERS) oczekuje argumentu.";
  1234. } //EOF func
  1235. function UAKTUALNIJ_KONTA($ID_BILLING_USERS) {
  1236. global $process_services,$execute_process,$ERROR,$process_services,$vdb,$uid ;
  1237. //TODO where zeby robilo tylko ten rok... i bylo szybsze...
  1238. if($ID_BILLING_USERS) {
  1239. $sql=" create temporary table TEMP_BILLING_ACCOUNTS select ID_BILLING_USERS,sum(WINIEN) as WINIEN ,sum(MA) as MA ,max(TIMESTAMP) as TIMESTAMP
  1240. from BILLING_ACCOUNTS_FILES where ID_BILLING_USERS='$ID_BILLING_USERS' group by ID_BILLING_USERS " ;
  1241. $sql_till=" create temporary table TEMP_BILLING_ACCOUNTS_TILL select BILLING_ACCOUNTS_FILES.ID_BILLING_USERS,sum(BILLING_ACCOUNTS_FILES.WINIEN) as WINIEN ,sum(BILLING_ACCOUNTS_FILES.MA) as MA ,max(BILLING_ACCOUNTS_FILES.TIMESTAMP) as TIMESTAMP ,YEAR(BILLING_NUMBERS.TIMESTAMP) as TILL
  1242. from BILLING_ACCOUNTS_FILES inner join BILLING_NUMBERS on BILLING_NUMBERS.ID=BILLING_ACCOUNTS_FILES.ID_BILLING_NUMBERS
  1243. where BILLING_ACCOUNTS_FILES.ID_BILLING_USERS='$ID_BILLING_USERS' and YEAR(BILLING_NUMBERS.TIMESTAMP) < YEAR(NOW())
  1244. group by BILLING_ACCOUNTS_FILES.ID_BILLING_USERS,YEAR(BILLING_NUMBERS.TIMESTAMP) " ;
  1245. // echo "<br> $sql_till <br>";
  1246. } else {
  1247. $sql=" create temporary table TEMP_BILLING_ACCOUNTS select ID_BILLING_USERS,sum(WINIEN) as WINIEN ,sum(MA) as MA ,max(TIMESTAMP) as TIMESTAMP
  1248. from BILLING_ACCOUNTS_FILES group by ID_BILLING_USERS " ;
  1249. $sql_till=" create temporary table TEMP_BILLING_ACCOUNTS_TILL select BILLING_ACCOUNTS_FILES.ID_BILLING_USERS,sum(BILLING_ACCOUNTS_FILES.WINIEN) as WINIEN ,sum(BILLING_ACCOUNTS_FILES.MA) as MA ,max(BILLING_ACCOUNTS_FILES.TIMESTAMP) as TIMESTAMP ,YEAR(BILLING_NUMBERS.TIMESTAMP) as TILL
  1250. from BILLING_ACCOUNTS_FILES inner join BILLING_NUMBERS on BILLING_NUMBERS.ID=BILLING_ACCOUNTS_FILES.ID_BILLING_NUMBERS
  1251. where YEAR(BILLING_NUMBERS.TIMESTAMP) < YEAR(NOW())
  1252. group by BILLING_ACCOUNTS_FILES.ID_BILLING_USERS,YEAR(BILLING_NUMBERS.TIMESTAMP) " ;
  1253. // echo "<br> $sql_till <br>";
  1254. }
  1255. $result_CREATE=$vdb->sql_query($sql) ;
  1256. $result_CREATE_TILL=$vdb->sql_query($sql_till) ;
  1257. $sql="alter table TEMP_BILLING_ACCOUNTS add UNIQUE(ID_BILLING_USERS)";
  1258. $result_ALTER=$vdb->sql_query($sql);
  1259. $sql="alter table TEMP_BILLING_ACCOUNTS_TILL add INDEX(ID_BILLING_USERS,TILL)";
  1260. $result_ALTER_TILL=$vdb->sql_query($sql);
  1261. $sql="update BILLING_ACCOUNTS, TEMP_BILLING_ACCOUNTS set BILLING_ACCOUNTS.WINIEN=TEMP_BILLING_ACCOUNTS.WINIEN, BILLING_ACCOUNTS.MA=TEMP_BILLING_ACCOUNTS.MA , BILLING_ACCOUNTS.TIMESTAMP=TEMP_BILLING_ACCOUNTS.TIMESTAMP where BILLING_ACCOUNTS.ID_BILLING_USERS=TEMP_BILLING_ACCOUNTS.ID_BILLING_USERS ";
  1262. $result_UPDATE=$vdb->sql_query($sql);
  1263. $sql="insert ignore into BILLING_ACCOUNTS_TILL (ID_BILLING_USERS ,WINIEN ,MA ,TIMESTAMP ,TILL ) select TEMP_BILLING_ACCOUNTS_TILL.ID_BILLING_USERS,TEMP_BILLING_ACCOUNTS_TILL.WINIEN, TEMP_BILLING_ACCOUNTS_TILL.MA , TEMP_BILLING_ACCOUNTS_TILL.TIMESTAMP , TEMP_BILLING_ACCOUNTS_TILL.TILL from TEMP_BILLING_ACCOUNTS_TILL ";
  1264. $result_INSERT_TILL=$vdb->sql_query($sql);
  1265. // echo "<br> $sql <br> ";
  1266. $sql="update BILLING_ACCOUNTS_TILL, TEMP_BILLING_ACCOUNTS_TILL set BILLING_ACCOUNTS_TILL.WINIEN=TEMP_BILLING_ACCOUNTS_TILL.WINIEN, BILLING_ACCOUNTS_TILL.MA=TEMP_BILLING_ACCOUNTS_TILL.MA , BILLING_ACCOUNTS_TILL.TIMESTAMP=TEMP_BILLING_ACCOUNTS_TILL.TIMESTAMP , BILLING_ACCOUNTS_TILL.TILL=TEMP_BILLING_ACCOUNTS_TILL.TILL where BILLING_ACCOUNTS_TILL.ID_BILLING_USERS=TEMP_BILLING_ACCOUNTS_TILL.ID_BILLING_USERS and BILLING_ACCOUNTS_TILL.TILL=TEMP_BILLING_ACCOUNTS_TILL.TILL ";
  1267. $result_UPDATE_TILL=$vdb->sql_query($sql);
  1268. // echo "<br>result_UPDATE_TILL:: $sql <br>";
  1269. $sql="drop table TEMP_BILLING_ACCOUNTS";
  1270. $result_DROP=$vdb->sql_query($sql) ;
  1271. // echo "<br>Result: $result_CREATE , $result_CREATE_TILL , $result_ALTER , $result_ALTER_TILL , $result_UPDATE ,i: $result_INSERT_TILL , $result_UPDATE_TILL ,$result_DROP " ;
  1272. if($ID_BILLING_USERS) {
  1273. if(($result_CREATE==1)&&($result_ALTER==1)&&($result_UPDATE==1)&&($result_DROP)) return "OK" ; else {
  1274. echo "<br> function UAKTUALNIJ_KONTA($ID_BILLING_USERS) error with update accounts CREATE,ALTER,UPDATE,DROP: $result_CREATE , $result_ALTER , $result_UPDATE ,$result_DROP ";
  1275. }
  1276. } else {
  1277. if(($result_CREATE)&&($result_ALTER)&&($result_UPDATE)&&($result_DROP)) {
  1278. echo "<br>function UAKTUALNIJ_KONTA($ID_BILLING_USERS) zaktualizowalo $result_UPDATE rekordow" ;
  1279. return "$result_UPDATE";
  1280. } else {
  1281. echo "<br> function UAKTUALNIJ_KONTA($ID_BILLING_USERS) error with update accounts CREATE,ALTER,UPDATE,DROP: $result_CREATE , $result_ALTER , $result_UPDATE ,$result_DROP ";
  1282. }
  1283. }
  1284. } //EOF func
  1285. //@2012-02-06 - funkcja ktora ma rozliczac dokumenty do wyzwalania, jak jest z czyms problem, podamy jako argument numer rekordu dziennika
  1286. function ROZLICZ_1_TRANSAKCJE($SRC_ID_BILLING_NUMBERS) {
  1287. //$SRC_ID_BILLING_NUMBERS='394581'; //TODO tutaj wyzwalac parametr numer ID_BILLING_NUMBERS dla nie rozliczonej transakcji
  1288. //$SRC_ID_BILLING_NUMBERS='485763485763'; //TODO@2012-03-13 sprawdzamy nierozlicozne ostatnie KPna 1300 PLN, sa stare nierozliczone faktury
  1289. //$SRC_ID_BILLING_NUMBERS='440803';
  1290. echo "<br>f.ROZLICZ_1_TRANSAKCJE , dla argumentu numeru ID_BILLING_NUMBERS: ".$ID_BILLING_NUMBERS." <br> \n";
  1291. global $vdb, $result_BILLING_NUMBERS_TYPE ;
  1292. //szukamy jaki dokument ma typ:
  1293. if(!isset($SRC_ID_BILLING_NUMBERS)) die("Funkcja potrzebuje argumentu - nr ID_BILLING_NUMERS do rozliczenia");
  1294. $sql="select t1.*, t3.WINIEN, t3.MA, t3.ID_BILLING_USERS , t3.ID_BILLING_NUMBERS from BILLING_NUMBERS_TYPE as t1
  1295. right join BILLING_NUMBERS as t2 on t2.ID_BILLING_NUMBERS_TYPE=t1.ID
  1296. right join BILLING_ACCOUNTS_FILES as t3 on t3.ID_BILLING_NUMBERS=t2.ID
  1297. where t2.ID='".$SRC_ID_BILLING_NUMBERS."' and t3.ID_FIN_WINIEN is NULL and t3.ID_FIN_MA is NULL limit 1 ";
  1298. echo "<pre><br>".$sql."<br></pre>";
  1299. $result_BILLING_NUMBERS_TYPE=$vdb->sql_query($sql) ;
  1300. $result_BILLING_NUMBERS_TYPE=$vdb->sql_fetchrow($result_BILLING_NUMBERS_TYPE[0]) ;
  1301. if($result_BILLING_NUMBERS_TYPE) {
  1302. $ID_BILLING_USERS=$result_BILLING_NUMBERS_TYPE['ID_BILLING_USERS'];
  1303. // $ID_BILLING_NUMBERS=$result_BILLING_NUMBERS_TYPE['ID_BILLING_NUMBERS'];
  1304. $SRC_ID_BILLING_NUMBERS=$result_BILLING_NUMBERS_TYPE['ID_BILLING_NUMBERS'];
  1305. if($result_BILLING_NUMBERS_TYPE['WINIEN']>0) {
  1306. $LEWO_PRAWO="PRAWO" ;
  1307. $KWOTA=$result_BILLING_NUMBERS_TYPE['WINIEN'] ;
  1308. }
  1309. if($result_BILLING_NUMBERS_TYPE['MA']>0) {
  1310. $LEWO_PRAWO="LEWO" ;
  1311. $KWOTA=$result_BILLING_NUMBERS_TYPE['MA'] ;
  1312. }
  1313. $ERROR = $ERROR . "Problem z dokumentem $ID_BILLING_NUMBERS , (wartosci po obu stronach) ksiegowanie niemozliwe" ;
  1314. }
  1315. echo "f.ROZLICZ_1_TRANSAKCJE";
  1316. print_r($result_BILLING_NUMBERS_TYPE);
  1317. //$LEWO_PRAWO='LEWO';
  1318. echo "<br> Bedziemy odpalac SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI(LEWO_PRAWO,ID_BILLING_USERS,KWOTA,ID_BILLING_NUMBERS,SRC_ID_BILLING_NUMBERS,ACTION,do_dokumentu)=(".$LEWO_PRAWO.",".$ID_BILLING_USERS.",".$KWOTA.",".$ID_BILLING_NUMBERS.",".$SRC_ID_BILLING_NUMBERS.",".$ACTION.",".$do_dokumentu.") <br> ";
  1319. //odpalamy funkcje SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI dla LEWO lub PRAWO
  1320. // $KWOTA - moze byc pusta - system wykryje
  1321. //
  1322. //function SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI($LEWO_PRAWO,$ID_BILLING_USERS,$KWOTA,$ID_BILLING_NUMBERS,$SRC_ID_BILLING_NUMBERS,$ACTION,$do_dokumentu) {
  1323. //BEGIN wklejenie z funkcji SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI
  1324. if($LEWO_PRAWO=="PRAWO") {
  1325. $WHERE="WINIEN" ;
  1326. $WHERE_PRIM="MA" ;
  1327. } else if($LEWO_PRAWO=="LEWO") {
  1328. $WHERE="MA" ;
  1329. $WHERE_PRIM="WINIEN" ;
  1330. }
  1331. if($ID_BILLING_NUMBERS) {
  1332. $WHERE_ID_BILLING_NUMBERS=" t1.ID_BILLING_NUMBERS='$ID_BILLING_NUMBERS' and " ;
  1333. }
  1334. $WARIANT=$LEWO_PRAWO."0" ;
  1335. if(strlen($do_dokumentu)<>0) $KROK=0; else $KROK=2 ;
  1336. for(;$KROK<=2;$KROK++) {
  1337. echo "<br> 1141 LEWO_PRAWO to ".$LEWO_PRAWO." , WHERE to ".$WHERE." <br>";
  1338. // $vdb->sql_query('lock tables BILLING_ACCOUNTS_FILES WRITE') ;
  1339. //Bylo przed 2005-01-13 - problem z kilkoma dokumentami i joinem - zle sumowalo mozna joinowac tylko raz samego siebie
  1340. // $sql=" select t1.ID_BILLING_NUMBERS AS NR_DOK ,t1.ID_BILLING_USERS as PLATNIK ,t1.WINIEN,t1.MA , t1.ID_FIN_WINIEN as ID_F_W, t1.ID_FIN_WINIEN_VAL as F_WINIEN_V, t1.ID_FIN_MA as ID_F_M, t1.ID_FIN_MA_VAL as F_MA_V, max(t2.ID), sum(t2.ID_FIN_WINIEN_VAL) as ROZ_WINIEN , max(t3.ID), sum(t3.ID_FIN_MA_VAL) as ROZ_MA, t1.WINIEN - sum(t2.ID_FIN_WINIEN_VAL) - sum(t3.ID_FIN_MA_VAL) as POZ_WINIEN, t1.MA - sum(t3.ID_FIN_MA_VAL) - sum(t2.ID_FIN_WINIEN_VAL) as POZ_MA from BILLING_ACCOUNTS_FILES as t1 left join BILLING_ACCOUNTS_FILES as t2 on t1.ID_BILLING_NUMBERS=t2.ID_FIN_WINIEN left join BILLING_ACCOUNTS_FILES as t3 on t1.ID_BILLING_NUMBERS=t3.ID_FIN_MA where t1.ID_FIN_WINIEN is NULL and t1.ID_FIN_MA is NULL and t1.".$WHERE_PRIM." = 0 and t1.".$WHERE." > 0 and $WHERE_ID_BILLING_NUMBERS t1.ID_BILLING_USERS=".$ID_BILLING_USERS." ".DO_DOKUMENTU_MAKESQL($do_dokumentu,$KROK)." group by t1.ID_BILLING_NUMBERS limit 0,1 ";
  1341. //Jakas transakcja obca ktora szukamy - sprawdzamy jak jest rozliczona -> $POZ_S_N_R_KWOTA
  1342. $sql=" select t1.ID_BILLING_NUMBERS AS NR_DOK ,t1.ID_BILLING_USERS as PLATNIK ,t1.WINIEN,t1.MA , t1.ID_FIN_WINIEN as ID_F_W, t1.ID_FIN_WINIEN_VAL as F_WINIEN_V,
  1343. t1.ID_FIN_MA as ID_F_M, t1.ID_FIN_MA_VAL as F_MA_V, max(t2.ID), sum(t2.ID_FIN_WINIEN_VAL) as ROZ_WINIEN , max(t2.ID) as MAX_ID_1 , sum(t2.ID_FIN_MA_VAL) as ROZ_MA,
  1344. t1.WINIEN - coalesce(sum(t2.ID_FIN_WINIEN_VAL),0) - coalesce(sum(t2.ID_FIN_MA_VAL),0) as POZ_WINIEN,
  1345. t1.MA - coalesce(sum(t2.ID_FIN_MA_VAL),0) - coalesce(sum(t2.ID_FIN_WINIEN_VAL),0) as POZ_MA
  1346. from BILLING_ACCOUNTS_FILES as t1
  1347. left join BILLING_ACCOUNTS_FILES as t2 on t2.ID_BILLING_USERS=".$ID_BILLING_USERS." and ( t1.ID_BILLING_NUMBERS=t2.ID_FIN_WINIEN or t1.ID_BILLING_NUMBERS=t2.ID_FIN_MA )
  1348. where
  1349. t1.ID_BILLING_NUMBERS!='".$SRC_ID_BILLING_NUMBERS."' and
  1350. t1.ID_FIN_WINIEN is NULL and t1.ID_FIN_MA is NULL and t1.".$WHERE." = 0 and t1.".$WHERE_PRIM." > 0
  1351. and
  1352. $WHERE_ID_BILLING_NUMBERS
  1353. t1.ID_BILLING_USERS=".$ID_BILLING_USERS." ".DO_DOKUMENTU_MAKESQL($do_dokumentu,$KROK)." group by t1.ID_BILLING_NUMBERS limit 0,1 ";
  1354. //if($_SESSION[DEBUG]>3)
  1355. echo "<br> krok: $KROK SQL(SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI) to <pre>".$sql."</pre> ***";
  1356. $result_S_N_R=$vdb->sql_query($sql); $result_S_N_R=$vdb->sql_fetchrow($result_S_N_R[0]);
  1357. if($result_S_N_R) break ;
  1358. // $vdb->sql_query('unlock tables') ;
  1359. // echo "<br>$sql<hr>";
  1360. } //EOF for $do_dokumentu petla KROK
  1361. if($result_S_N_R) {
  1362. echo"<pre>result_S_N_R WHERE=(".$WHERE."):\n"; print_r($result_S_N_R) ; echo"</pre>";
  1363. //Jakas transakcja opca ktora znalezlismy - sprawdzamy jak jest rozliczona -> $POZ_S_N_R_KWOTA
  1364. $POZ_S_N_R_KWOTA = $result_S_N_R[$WHERE_PRIM]-abs($result_S_N_R["ROZ_".$WHERE])-abs($result_S_N_R["ROZ_".$WHERE_PRIM]) ;
  1365. $result_S_N_R[POZ_S_N_R_KWOTA] = $POZ_S_N_R_KWOTA ;
  1366. $result_S_N_R[WHERE] = $WHERE ;
  1367. $result_S_N_R[WHERE_PRIM] = $WHERE_PRIM ;
  1368. $MAX_ID_1=$result_S_N_R['MAX_ID_1'];
  1369. $POZ_S_N_R_KWOTA = round($POZ_S_N_R_KWOTA,2);
  1370. $KWOTA = round($KWOTA,2);
  1371. //if($_SESSION[DEBUG]>3)
  1372. echo "<br> Usiluje rozliczyc kwote $KWOTA do <font color=green>( ". $result_S_N_R[$WHERE]."-".$result_S_N_R["ROZ_".$WHERE]."-".$result_S_N_R["ROZ_".$WHERE_PRIM]." ) </font> <b> $POZ_S_N_R_KWOTA ?=?=? $KWOTA </b>
  1373. $POZ_S_N_R_KWOTA_2 ==??== $KWOTA_2 ||| result_S_N_R[ACTION_LOCAL_VAL]==$result_S_N_R[ACTION_LOCAL_VAL] result_S_N_R[ACTION_LOCAL_STRONA]==$result_S_N_R[ACTION_LOCAL_STRONA]
  1374. <br> POZ_S_N_R_KWOTA== ".$POZ_S_N_R_KWOTA." EOL<br>" ;
  1375. //if($_SESSION[DEBUG]>3)
  1376. echo "<br><b> WYKRYWAM KWOTE ZALEGLOSCI DLA $SRC_ID_BILLING_NUMBERS, ($ACTION) </b>" ;
  1377. //Bylo przed 2005-01-13 - problem z kilkoma dokumentami i joinem - zle sumowalo mozna joinowac tylko raz samego siebie
  1378. // $sql=" select t1.ID_BILLING_NUMBERS AS NR_DOK ,t1.ID_BILLING_USERS as PLATNIK ,t1.WINIEN,t1.MA , t1.ID_FIN_WINIEN as ID_F_W, t1.ID_FIN_WINIEN_VAL as F_WINIEN_V, t1.ID_FIN_MA as ID_F_M, t1.ID_FIN_MA_VAL as F_MA_V, max(t2.ID), sum(t2.ID_FIN_WINIEN_VAL) as ROZ_WINIEN , max(t3.ID), sum(t3.ID_FIN_MA_VAL) as ROZ_MA, t1.WINIEN - sum(t2.ID_FIN_WINIEN_VAL) - sum(t3.ID_FIN_MA_VAL) as POZ_WINIEN, t1.MA - sum(t3.ID_FIN_MA_VAL) - sum(t2.ID_FIN_WINIEN_VAL) as POZ_MA from BILLING_ACCOUNTS_FILES as t1 left join BILLING_ACCOUNTS_FILES as t2 on t1.ID_BILLING_NUMBERS=t2.ID_FIN_WINIEN left join BILLING_ACCOUNTS_FILES as t3 on t1.ID_BILLING_NUMBERS=t3.ID_FIN_MA where t1.ID_FIN_WINIEN is NULL and t1.ID_FIN_MA is NULL and t1.".$WHERE." = 0 and t1.".$WHERE_PRIM." > 0 and t1.ID_BILLING_NUMBERS='$SRC_ID_BILLING_NUMBERS' and t1.ID_BILLING_USERS=".$ID_BILLING_USERS." group by t1.ID_BILLING_NUMBERS limit 0,1 ";
  1379. //tutaj sprawdzamy rodzima transakcje...
  1380. $sql=" select t1.ID_BILLING_NUMBERS AS NR_DOK ,t1.ID_BILLING_USERS as PLATNIK ,t1.WINIEN,t1.MA , t1.ID_FIN_WINIEN as ID_F_W, t1.ID_FIN_WINIEN_VAL as F_WINIEN_V,
  1381. t1.ID_FIN_MA as ID_F_M, t1.ID_FIN_MA_VAL as F_MA_V, max(t2.ID), sum(t2.ID_FIN_WINIEN_VAL) as ROZ_WINIEN , max(t2.ID), sum(t2.ID_FIN_MA_VAL) as ROZ_MA,
  1382. t1.WINIEN - coalesce(sum(t2.ID_FIN_WINIEN_VAL),0) - coalesce(sum(t2.ID_FIN_MA_VAL),0) as POZ_WINIEN,
  1383. t1.MA - coalesce(sum(t2.ID_FIN_MA_VAL),0) - coalesce(sum(t2.ID_FIN_WINIEN_VAL),0) as POZ_MA
  1384. from BILLING_ACCOUNTS_FILES as t1
  1385. left join BILLING_ACCOUNTS_FILES as t2 on t2.ID_BILLING_USERS=".$ID_BILLING_USERS." and ( t1.ID_BILLING_NUMBERS=t2.ID_FIN_WINIEN or t1.ID_BILLING_NUMBERS=t2.ID_FIN_MA )
  1386. where
  1387. t1.ID_BILLING_USERS=".$ID_BILLING_USERS." and t1.ID_FIN_WINIEN is NULL and t1.ID_FIN_MA is NULL and t1.".$WHERE_PRIM." = 0 and t1.".$WHERE." > 0 and
  1388. t1.ID_BILLING_NUMBERS='$SRC_ID_BILLING_NUMBERS' group by t1.ID_BILLING_NUMBERS limit 0,1 ";
  1389. echo "<br><pre>".$sql."</pre> " ;
  1390. $result_S_N_R_K=$vdb->sql_query($sql); $result_S_N_R_K=$vdb->sql_fetchrow($result_S_N_R_K[0]);
  1391. //@2012-03-13 bylo $KWOTA = $result_S_N_R_K[$WHERE_PRIM]-$result_S_N_R_K["ROZ_".$WHERE_PRIM]-$result_S_N_R_K["ROZ_".$WHERE] ;
  1392. $KWOTA = $result_S_N_R_K[$WHERE]+$result_S_N_R_K[$WHERE_PRIM]-$result_S_N_R_K["ROZ_".$WHERE_PRIM]-$result_S_N_R_K["ROZ_".$WHERE] ;
  1393. $KWOTA=abs($KWOTA); //todo@2012-03-13 testing!!!
  1394. echo "<br>result_S_N_R_K[WHERE_PRIM](".$WHERE_PRIM.")=".$result_S_N_R_K[$WHERE_PRIM];
  1395. echo "<br>result_S_N_R_K[ROZ_WHERE_PRIM]=".$result_S_N_R_K["ROZ_".$WHERE_PRIM];
  1396. echo "<br>result_S_N_R_K[ROZ_WHERE](".$WHERE.")=".$result_S_N_R_K["ROZ_".$WHERE];
  1397. echo "<pre>";print_r($result_S_N_R_K);echo "\n bo KWOTA==</pre>";
  1398. //if($_SESSION[DEBUG]>3)
  1399. echo "..... <font color=red> <b>WYKRYLEM POZOSTALA KWOTE KWOTE $KWOTA (a nasza to $POZ_S_N_R_KWOTA) </b></font>" ;
  1400. // print_r($result_S_N_R_K) ;
  1401. if(round($POZ_S_N_R_KWOTA,2) == round($KWOTA,2)) {
  1402. $result_S_N_R[ACTION_REMOTE_VAL] = "0" ; $result_S_N_R[ACTION_LOCAL_VAL] = "$KWOTA" ;
  1403. $result_S_N_R[ACTION_REMOTE_STRONA] = "$WHERE" ; $result_S_N_R[ACTION_LOCAL_STRONA] = "$WHERE" ;
  1404. //if($_SESSION[DEBUG]>3)
  1405. echo " <b> Wariant 3 : NASZ DOKUMENT ($KWOTA) W CALOSCI ROZLICZA DOKUMENT $result_S_N_R[NR_DOK] oraz SAM SIEBIE </b> result_S_N_R[ACTION_LOCAL_VAL]==$result_S_N_R[ACTION_LOCAL_VAL] result_S_N_R[ACTION_LOCAL_STRONA]==$result_S_N_R[ACTION_LOCAL_STRONA] result_S_N_R[ACTION_REMOTE_VAL]==$result_S_N_R[ACTION_REMOTE_VAL] result_S_N_R[ACTION_REMOTE_STRONA]==$result_S_N_R[ACTION_REMOTE_STRONA] " ;
  1406. $WARIANT=$LEWO_PRAWO."3" ;
  1407. } else if(round($POZ_S_N_R_KWOTA,2) > round($KWOTA,2) ) {
  1408. $WARIANT=$LEWO_PRAWO."1" ;
  1409. $result_S_N_R[ACTION_REMOTE_VAL] = "" ; $result_S_N_R[ACTION_LOCAL_VAL] = "$KWOTA" ;
  1410. $result_S_N_R[ACTION_REMOTE_STRONA] = "" ; $result_S_N_R[ACTION_LOCAL_STRONA] = "$WHERE" ;
  1411. //if($_SESSION[DEBUG]>3)
  1412. echo " <b>Wariant 1 : NASZ DOKUMENT ( POZ_S_N_R_KWOTA &gt; $KWOTA (KWOTA)) W CALOSCI ROZLICZA SIE NA DOKUMENCIE $result_S_N_R[NR_DOK] </b> result_S_N_R[ACTION_LOCAL_VAL]==$result_S_N_R[ACTION_LOCAL_VAL] result_S_N_R[ACTION_LOCAL_STRONA]==$result_S_N_R[ACTION_LOCAL_STRONA] " ;
  1413. } else if(round($POZ_S_N_R_KWOTA,2) < round($KWOTA,2) ) {
  1414. $WARIANT=$LEWO_PRAWO."2" ;
  1415. // $result_S_N_R[NR_DOK] = "$SRC_ID_BILLING_NUMBERS" ;
  1416. $result_S_N_R[ACTION_REMOTE_VAL] = "$POZ_S_N_R_KWOTA" ; $result_S_N_R[ACTION_LOCAL_VAL] = "" ;
  1417. $result_S_N_R[ACTION_REMOTE_STRONA] = "$WHERE" ; $result_S_N_R[ACTION_LOCAL_STRONA] = "" ;
  1418. //if($_SESSION[DEBUG]>3)
  1419. echo " <b> WARIANT 2 : NASZ DOKUMENT ($KWOTA) W CALOSCI ROZLICZA DOKUMENT $result_S_N_R[NR_DOK] kwota $POZ_S_N_R_KWOTA i zostaje reszta :$POZ_S_N_R_KWOTA ( $POZ_S_N_R_KWOTA ) < ( $KWOTA) </b> result_S_N_R[ACTION_REMOTE_VAL]==$result_S_N_R[ACTION_REMOTE_VAL] result_S_N_R[ACTION_REMOTE_STRONA]==$result_S_N_R[ACTION_REMOTE_STRONA] " ;
  1420. } else $ERROR = $ERROR . "<br> Niedopuszczalny wyjatek w funkcji SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI" ;
  1421. /////////BEGIN
  1422. if(($WARIANT==$LEWO_PRAWO."1")) {
  1423. echo "\nJade wariant 1 ROZLICZ_DOKUMENT_FK(".$SRC_ID_BILLING_NUMBERS.",array( ID_FIN_".$WHERE_PRIM." => ".$result_S_N_R['NR_DOK']." , ID_FIN_".$WHERE_PRIM."_VAL => ".$KWOTA." , WHERE => ".$WHERE_PRIM." )) " ;
  1424. $RES_ROZLICZ_DOKUMENT_FK=ROZLICZ_DOKUMENT_FK($SRC_ID_BILLING_NUMBERS,array( "ID_FIN_".$WHERE_PRIM => $result_S_N_R['NR_DOK'] , "ID_FIN_".$WHERE_PRIM."_VAL" => "$KWOTA" , "WHERE" => "$WHERE_PRIM" )) ;
  1425. } else if($WARIANT==$LEWO_PRAWO."2") {
  1426. echo "Jade wariant 2 - tested @2012-02-04 ale trzeba uncomment w poczekaniu na przypadek (bindera)";
  1427. echo "\nJade wariant 2 ROZLICZ_DOKUMENT_FK(".$result_S_N_R['NR_DOK'].",array( ID_FIN_".$WHERE." => ".$SRC_ID_BILLING_NUMBERS." , ID_FIN_".$WHERE."_VAL => ".$POZ_S_N_R_KWOTA." , WHERE => ".$WHERE." )) " ;
  1428. $RES_ROZLICZ_DOKUMENT_FK=ROZLICZ_DOKUMENT_FK($result_S_N_R['NR_DOK'] , array( "ID_FIN_".$WHERE => $SRC_ID_BILLING_NUMBERS , "ID_FIN_".$WHERE."_VAL" => "$POZ_S_N_R_KWOTA" , "WHERE" => "$WHERE" )) ;
  1429. } else if($WARIANT==$LEWO_PRAWO."3") {
  1430. echo "Jade wariant 3";
  1431. //echo "\nJade wariant 3 ROZLICZ_DOKUMENT_FK(".$result_S_N_R['NR_DOK'].",array( ID_FIN_".$WHERE." => ".$SRC_ID_BILLING_NUMBERS." , ID_FIN_".$WHERE."_VAL => ".$POZ_S_N_R_KWOTA." , WHERE => ".$WHERE." )) " ;
  1432. //$RES_ROZLICZ_DOKUMENT_FK=ROZLICZ_DOKUMENT_FK($result_S_N_R[NR_DOK],array( "ID_FIN_".$WHERE => $SRC_ID_BILLING_NUMBERS , "ID_FIN_".$WHERE."_VAL" => "$POZ_S_N_R_KWOTA" , "WHERE" => "$WHERE" )) ;
  1433. $RES_ROZLICZ_DOKUMENT_FK=ROZLICZ_DOKUMENT_FK($SRC_ID_BILLING_NUMBERS,array( "ID_FIN_".$WHERE => $result_S_N_R['NR_DOK'] , "ID_FIN_".$WHERE."_VAL" => "$KWOTA" , "WHERE" => "$WHERE" )) ;
  1434. echo "<br> res1/2::$RES_ROZLICZ_DOKUMENT_FK " ;
  1435. $RES_ROZLICZ_DOKUMENT_FK=ROZLICZ_DOKUMENT_FK($result_S_N_R['NR_DOK'],array( "ID_FIN_".$WHERE => $SRC_ID_BILLING_NUMBERS , "ID_FIN_".$WHERE."_VAL" => "0" , "WHERE" => "$WHERE" )) ;
  1436. echo "<br> res2/2::$RES_ROZLICZ_DOKUMENT_FK " ;
  1437. }
  1438. echo "<pre> \n Rozliczam dokument FK <br>\n";
  1439. print_r($RES_ROZLICZ_DOKUMENT_FK);
  1440. echo "</pre>";
  1441. ////////EOF
  1442. }
  1443. /////////////////////
  1444. //EOF wklejenie z funkcji SZUKAJ_NIEROZLICZONEJ_TRANSAKCJI
  1445. } //eof func.
  1446. //@2012-02-04 binder arkadiusz
  1447. //funkcja do wyszukiwania wszystkich nierozliczonych transakcji w BILLING_ACCOUNT_FILES - szuka i rozlicza
  1448. //jak poda sie platnika, to uporzadkuje jego transakcje, jak sie nie poda, bedzie starac sie rozliczac wszystkie
  1449. function UPORZADKUJ_NIEROZLICZONE_TRANSAKCJE($ID_BILLING_USERS_1){
  1450. //$ID_BILLING_USERS_1=7446 ; //TODO@2012-03-12 nie rozlicza chyba czegos co powinno
  1451. //$ID_BILLING_USERS_1=5147 ; //TODO@2012-03-12 testowany nie rozwiazane rozliczenia po obydwu stronach
  1452. if(isset($ID_BILLING_USERS_1)) $and=" and ID_BILLING_USERS='".$ID_BILLING_USERS_1."' ";
  1453. // $sql="select ID_BILLING_NUMBERS, ID_BILLING_USERS from BILLING_ACCOUNTS_FILES where ID_FIN_WINIEN is NULL and ID_FIN_MA is NULL ".$and;
  1454. $sql="SELECT
  1455. `ID_BILLING_USERS` ,
  1456. `ID_BILLING_NUMBERS` , count(*) as ILOSC ,
  1457. sum(if(`WINIEN`>0,1,0)) as WINIENN , sum(if(`MA`>1,1,0)) as MAA
  1458. FROM `BILLING_ACCOUNTS_FILES` WHERE
  1459. `ID_FIN_WINIEN` IS NULL and `ID_FIN_MA` IS NULL ".$and."
  1460. group by ID_BILLING_USERS
  1461. having ILOSC>2 and (WINIENN>=1 and MAA>=1) "; //Wyszukujemy rozrachunki, ktore maja przynajmniej po jednej transakcji nierozliczonej po kazdej ze stron
  1462. $result2=$vdb->sql_query($sql) ;
  1463. echo "<br>SQL1284: ".$sql."<br>";
  1464. while($h2=$vdb->sql_fetchrow($result2)) {
  1465. echo "<br> f. UPORZADKUJ_NIEROZLICZONE_TRANSAKCJE(".$ID_BILLING_USERS_1.") znalazla:";
  1466. print_r($h2);
  1467. ROZLICZ_1_TRANSAKCJE($h2['ID_BILLING_NUMBERS']);
  1468. // die("not completed!");
  1469. flush();
  1470. }
  1471. } //eof FUNC
  1472. function formatuj_grosze($kwota) {
  1473. $kwota=round($kwota,2);
  1474. $liczba=explode(".", $kwota);
  1475. if(!$liczba[1]) { $liczba=explode(",", $kwota);
  1476. if(!$liczba[1]) $liczba[1]="00";
  1477. }
  1478. if(strlen($liczba[1])==1) $liczba[1]=$liczba[1]."0";
  1479. $liczba_out=$liczba[0]."."."$liczba[1]";
  1480. return $liczba_out ;
  1481. }
  1482. function policz($l,$t1,$t2,$t3) {
  1483. $j = array("", "jeden ", "dwa ", "trzy ", "cztery ", "pięć ", "sześć ",
  1484. "siedem ", "osiem ", "dziewięć ", "dziesięć ", "jedenaście ",
  1485. "dwanaście ", "trzynaście ", "czternaście ", "piętnaście ",
  1486. "szesnaście ", "siedemnaście ", "osiemnaście ", "dziewiętnaście ");
  1487. $d = array("", "", "dwadzieścia ", "trzydzieści ", "czterdzieści ",
  1488. "piêædziesiąt ", "sześćdziesiąt ", "siedemdziesiąt ",
  1489. "osiemdziesiąt ", "dziewięćdziesiąt ");
  1490. $s = array("","sto ", "dwieście ", "trzysta ", "czterysta ", "pięćset ",
  1491. "sześćset ", "siedemset ", "osiemset ", "dziewięćset ");
  1492. $txt = $s[0+substr($l,0,1)];
  1493. if (substr($l,1,2)<20) $txt .= $j[0+substr($l,1,2)];
  1494. else $txt .= $d[0+substr($l, 1,1)].$j[0+substr($l, 2,1)];
  1495. if ($l<>0) if ($l==1) $txt .= "$t1 "; else {
  1496. if ((substr($l,2,1)==2 or substr($l,2,1)==3 or substr($l,2,1)==4)
  1497. and (substr($l,1,2)>20 or substr($l,1,2)<10))
  1498. $txt .= "$t2 "; else $txt .= "$t3 ";
  1499. }
  1500. return $txt;
  1501. }
  1502. function slownie($liczba) {
  1503. $kwota=explode(".", $liczba);
  1504. if(strlen($kwota[1])==1) $kwota[1]=$kwota[1]."0";
  1505. $kwotazl=sprintf("%012d",$kwota[0]);
  1506. $kwotagr=sprintf("%03d",$kwota[1]);
  1507. $txt .= self::policz(substr($kwotazl, 0,3),"miliard","miliardy","miliardów");
  1508. $txt .= self::policz(substr($kwotazl, 3,3),"milion","miliony","milionów");
  1509. $txt .= self::policz(substr($kwotazl, 6,3),"tysiąc","tysiące","tysięcy");
  1510. $txt .= self::policz(substr($kwotazl, 9,3),"złoty","złote","złotych");
  1511. if ($kwotazl==0) $txt .= "zero złotych ";
  1512. $txt .= " i ";
  1513. $txt .= self::policz($kwotagr,"grosz","grosze","groszy");
  1514. if ($kwotagr==0) $txt .= "zero groszy";
  1515. // echo "<br> wedlug slownie daje kwotegr $kwotagr ";
  1516. return $txt;
  1517. }
  1518. }