View.php 123 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059
  1. <?php
  2. Lib::loadClass('CompanyHelper');
  3. Lib::loadClass('PokazOfertyView');
  4. Lib::loadClass('ProcesHelper');
  5. Lib::loadClass('Windykacja_StatsHelper');
  6. Lib::loadClass('Windykacja_StatsModel');
  7. Lib::loadClass('Windykacja_FunkcjeL1');
  8. class Windykacja_View {
  9. public static function user(&$user) {
  10. $bad_address_task = V::get('bad_address', '', $_POST);
  11. $bad_address_msg = array();
  12. if ($bad_address_task) {
  13. $id_koresp = V::get('ID_KORESP', 0, $_POST, 'int');
  14. if ($id_koresp <= 0) {
  15. $bad_address_msg['error_id_koresp'] = true;
  16. } else {
  17. if ($bad_address_task == 'save') {
  18. if (!Windykacja_StatsHelper::bad_address_save($user, $id_koresp)) {
  19. $bad_address_msg['error'] = true;
  20. } else {
  21. $bad_address_msg['ok'] = true;
  22. }
  23. }
  24. else if ($bad_address_task == 'confirm') {
  25. if (!Windykacja_StatsHelper::bad_address_confirm($user, $id_koresp)) {
  26. $bad_address_msg['error'] = true;
  27. } else {
  28. $bad_address_msg['ok'] = true;
  29. }
  30. }
  31. }
  32. }
  33. $change_status_task = V::get('change_status', '', $_POST);
  34. $change_status_msg = array();
  35. if ($change_status_task) {
  36. if ($change_status_task == 'change') {
  37. $new_status = V::get('new_status', '', $_POST);
  38. $fltr_arr = Windykacja_StatsHelper::get_filters();
  39. if (!array_key_exists($new_status, $fltr_arr)) {
  40. $change_status_msg['error'] = true;
  41. } else {
  42. if (!Windykacja_StatsHelper::change_status_save($user, $new_status)) {
  43. $change_status_msg['error'] = true;
  44. } else {
  45. $change_status_msg['ok'] = true;
  46. }
  47. }
  48. }
  49. }
  50. $set_nr_sprawy_krd_task = V::get('set_nr_sprawy_krd', '', $_POST);
  51. $set_nr_sprawy_krd_msg = array();
  52. if ($set_nr_sprawy_krd_task) {
  53. if ($set_nr_sprawy_krd_task == 'change') {
  54. $nr_sprawy_krd = V::get('nr_sprawy_krd', '', $_POST);
  55. if (!Windykacja_StatsHelper::nr_sprawy_krd_save($user, $nr_sprawy_krd)) {
  56. $set_nr_sprawy_krd_msg['error'] = true;
  57. } else {
  58. $set_nr_sprawy_krd_msg['ok'] = true;
  59. }
  60. }
  61. }
  62. $set_nr_sprawy_sad_task = V::get('set_nr_sprawy_sad', '', $_POST);
  63. $set_nr_sprawy_sad_msg = array();
  64. if ($set_nr_sprawy_sad_task) {
  65. if ($set_nr_sprawy_sad_task == 'change') {
  66. $nr_sprawy_sad = V::get('nr_sprawy_sad', '', $_POST);
  67. if (!Windykacja_StatsHelper::nr_sprawy_sad_save($user, $nr_sprawy_sad)) {
  68. $set_nr_sprawy_sad_msg['error'] = true;
  69. } else {
  70. $set_nr_sprawy_sad_msg['ok'] = true;
  71. }
  72. }
  73. }
  74. $set_nr_sprawy_komornik_task = V::get('set_nr_sprawy_komornik', '', $_POST);
  75. $set_nr_sprawy_komornik_msg = array();
  76. if ($set_nr_sprawy_komornik_task) {
  77. if ($set_nr_sprawy_komornik_task == 'change') {
  78. $nr_sprawy_komornik = V::get('nr_sprawy_komornik', '', $_POST);
  79. if (!Windykacja_StatsHelper::nr_sprawy_komornik_save($user, $nr_sprawy_komornik)) {
  80. $set_nr_sprawy_komornik_msg['error'] = true;
  81. } else {
  82. $set_nr_sprawy_komornik_msg['ok'] = true;
  83. }
  84. }
  85. }
  86. $set_ustalenia_info_task = V::get('set_ustalenia_info', '', $_POST);
  87. $set_ustalenia_info_msg = array();
  88. if ($set_ustalenia_info_task) {
  89. if ($set_ustalenia_info_task == 'change') {
  90. $ustalenia_date = V::get('ustalenia_date', '', $_POST);
  91. $ustalenia_info = V::get('ustalenia_info', '', $_POST);
  92. if (!Windykacja_StatsHelper::ustalenia_info_save($user, $ustalenia_date, $ustalenia_info)) {
  93. $set_ustalenia_info_msg['error'] = true;
  94. } else {
  95. $set_ustalenia_info_msg['ok'] = true;
  96. }
  97. }
  98. }
  99. $dataBlokady = '';
  100. if ($user->STATUS == 9) {
  101. $db = DB::getDB();
  102. $sqlDataBlokadyTest = "
  103. select c.`ID`, c.`STATUS`, h.`STATUS` as h_status, h.`A_RECORD_UPDATE_DATE`, h.`A_RECORD_CREATE_DATE`
  104. from `COMPANIES` c
  105. join `COMPANIES_HIST` h on(h.`ID_USERS2`=c.`ID`)
  106. where (h.`STATUS`='9' or c.`STATUS`='9')
  107. ";
  108. $sqlDataBlokadyTestHasNoDate = "
  109. select c.`ID`, c.`STATUS`
  110. from `COMPANIES` c
  111. where c.`STATUS`='9'
  112. and not exists(select h.`ID`
  113. from `COMPANIES_HIST` h
  114. where h.`ID_USERS2`=c.`ID`
  115. and h.`STATUS`='9'
  116. )
  117. ";
  118. $sqlDataBlokady = "select h.`A_RECORD_UPDATE_DATE`
  119. from `COMPANIES_HIST` h
  120. where h.`ID_USERS2`='{$user->ID_BILLING_USERS}'
  121. and h.`STATUS`='9'
  122. order by h.`ID` desc
  123. limit 1
  124. ";
  125. $res = $db->query($sqlDataBlokady);
  126. if ($r = $db->fetch($res)) {
  127. $dataBlokady = $r->A_RECORD_UPDATE_DATE;
  128. }
  129. }
  130. $company = Windykacja_StatsModel::get_company($user);
  131. $nr_konta = Windykacja_FunkcjeL1::bankowy_formatuj_nrach(Windykacja_FunkcjeL1::bankowy_make_nrach($company->NR_RACH_MASS_PAY, $user->ID_BILLING_USERS, 0));
  132. echo'<h3>';
  133. echo' <a href="'."?MENU_INIT=USERS2_WINDYKACJA_STATUS&q=".V::get('q','', $_REQUEST)."&_p=".V::get('_p', '', $_REQUEST)."&_f=".V::get('_f', '', $_REQUEST)."&_oby=".V::get('_oby', '', $_REQUEST)."&_odir=".V::get('_odir', '', $_REQUEST).'">'."Klienci".'</a>';
  134. echo ' &raquo; <code style="font-size:normal;color:green;">'."[".$user->id_users."]".'</code>';
  135. echo ' <b>'.$user->P_NAME.' '.$user->P_NAME_SECOND.'</b>';
  136. echo'</h3>';
  137. echo '<table class="" cellspacing="0" cellpadding="0" border="0"><tr><td style="vertical-align:top">';
  138. echo '<table class="tbl-view tbl-umowy-l2" cellspacing="0" cellpadding="0" border="1">';
  139. echo '<caption>';
  140. echo "Dane " . (($user->is_firma)? "firmy" : "klienta") . " ";
  141. if ($user->BAD_ADDRESS) {
  142. echo '<form action="" method="POST" style="display:inline">';
  143. echo '<input type="hidden" name="'."bad_address".'" value="'."confirm".'" />';
  144. $js = "if(this.nextSibling.style.display=='none'){this.nextSibling.style.display='block'}else{this.nextSibling.style.display='none'}; return false;";
  145. echo '<input type="button" value="'."popraw adres".'" onclick="'.$js.'" style="margin:1px 2px;padding:0 6px;" />';
  146. echo '<div style="display:none;">';
  147. echo '<label for="ID_KORESP">'."ID Koresp.".'</label>';
  148. echo '<input type="text" name="' . "ID_KORESP" . '" size="5" value="' . "" . '" />';
  149. echo '<input type="submit" value="'."zapisz".'" />';
  150. echo '</div>';
  151. echo '</form>';
  152. } else {
  153. echo '<form action="" method="POST" style="display:inline">';
  154. echo '<input type="hidden" name="'."bad_address".'" value="'."save".'" />';
  155. $js = "if(this.nextSibling.style.display=='none'){this.nextSibling.style.display='block'}else{this.nextSibling.style.display='none'}; return false;";
  156. echo '<input type="button" value="'."zgłoś błędny adres".'" onclick="'.$js.'" style="margin:1px 2px;padding:0 6px;" />';
  157. echo '<div style="display:none;">';
  158. echo '<label for="ID_KORESP">'."ID Koresp.".'</label>';
  159. echo '<input type="text" name="' . "ID_KORESP" . '" size="5" value="' . "" . '" />';
  160. echo '<input type="submit" value="'."zapisz".'" />';
  161. echo '</div>';
  162. echo '</form>';
  163. }
  164. if (!empty($bad_address_msg)) {
  165. if ('id_koresp' == V::get('error', '', $bad_address_msg)) {
  166. echo '<div class="red">'."Podaj poprawny ID Koresp.".'</div>';
  167. } else if (true == V::get('error', false, $bad_address_msg)) {
  168. echo '<div class="red">'."Error!".'</div>';
  169. } else if (true == V::get('ok', false, $bad_address_msg)) {
  170. echo '<div style="color:green">'."Zapisano pomyślnie.".'</div>';
  171. }
  172. }
  173. echo '</caption>';
  174. echo'<tr>';
  175. echo'<th>' . "Adres:" . '</th>';
  176. echo'<td'.(($user->BAD_ADDRESS)? ' style="background-color:#FF7878;"' : '').'>';
  177. echo "ul. ".$user->P_ADDRESS_STREET." ".$user->P_ADDRESS_HOUSE."/".$user->P_ADDRESS_HOME.", ".$user->P_ADDRESS_POST_CODE." ".$user->P_ADDRESS_CITY;
  178. echo'</td>';
  179. echo'</tr>';
  180. ?>
  181. <?php if ($user->P_ADRESS_KORESP_1282) : ?>
  182. <tr>
  183. <th title="Adres do korespondencji">Adres koresp.</th>
  184. <td><?php echo $user->P_ADRESS_KORESP_1282; ?></td>
  185. </tr>
  186. <?php endif; ?>
  187. <?php
  188. echo'<tr>';
  189. echo'<th>' . "Pesel:" . '</th>';
  190. echo'<td>';
  191. if ($user->P_PESEL) {
  192. echo $user->P_PESEL;
  193. } else {
  194. echo '<span style="color:#f00;">'."Brak numeru PESEL!".'</span>';
  195. }
  196. echo'</td>';
  197. echo'</tr>';
  198. echo'<tr>';
  199. echo'<th>' . "Nr telefonu:" . '</th>';
  200. echo'<td>';
  201. if ($user->P_PHONE) {
  202. echo $user->P_PHONE;
  203. } else {
  204. echo '<span style="color:#f00;">'."Brak!".'</span>';
  205. }
  206. echo'</td>';
  207. echo'</tr>';
  208. echo'<tr>';
  209. echo'<th>' . "Nr dowodu:" . '</th>';
  210. echo'<td>';
  211. if ($user->P_OTHER_DOC) {
  212. echo $user->P_OTHER_DOC;
  213. } else {
  214. echo '<span style="color:#f00;">'."Brak!".'</span>';
  215. }
  216. echo'</td>';
  217. echo'</tr>';
  218. echo'<tr>';
  219. echo'<th>' . "e-mail:" . '</th>';
  220. echo'<td>';
  221. if ($user->user_mail_contact) {
  222. echo '<a href="mailto:'.$user->user_mail_contact.'">'.$user->user_mail_contact.'</a>';
  223. } else {
  224. echo '<span style="color:#f00;">'."Brak!".'</span>';
  225. }
  226. echo'</td>';
  227. echo'</tr>';
  228. echo'<tr>';
  229. echo'<th>' . "Klient firmy:" . '</th>';
  230. echo'<td>';
  231. if ($user->BILLING_OWNER == 1) {
  232. echo 'BN - BIALL-NET';
  233. } else if ($user->BILLING_OWNER == 2) {
  234. echo 'ND - NETDAY';
  235. } else {
  236. echo 'nieznany';
  237. }
  238. echo'</td>';
  239. echo'</tr>';
  240. echo'<tr>';
  241. echo'<th>' . "Blokada:" . '</th>';
  242. echo'<td>';
  243. if ($user->STATUS == 9) {
  244. echo '<b style="color:red">' . "ZABLOKOWANY" . '</b>';
  245. if (!empty($dataBlokady)) {
  246. echo '<br>' . "od dnia " . substr($dataBlokady, 0, 10);
  247. }
  248. } else {
  249. echo 'brak blokady';
  250. }
  251. echo'</td>';
  252. echo'</tr>';
  253. ?>
  254. <tr>
  255. <th>Nr konta:</th>
  256. <td><?php echo $nr_konta; ?></td>
  257. </tr>
  258. <?php
  259. echo '</table>';
  260. echo '</td><td>' . "&nbsp;" . '</td><td style="vertical-align:top">';
  261. echo '<table class="tbl-view tbl-umowy-l2'.(($user->A_STATUS_UPDATE_DATE < date("Y-m-d"))? ' wind-status-old' : '').'" cellspacing="0" cellpadding="0" border="1">';
  262. echo '<caption>';
  263. echo "Status windykacji ";
  264. echo '<code style="font-size:x-small; color:#ccc;">' . "(" . $user->WINDYKACJA_ID . ")" . '</code>';
  265. if ($user->A_STATUS_UPDATE_DATE < date("Y-m-d")) {
  266. echo " " . '<a style="color:red" href="' . "?MENU_INIT=USERS2_WINDYKACJA_STATUS&q=".V::get('q','', $_REQUEST)."&_p=".V::get('_p','', $_REQUEST)."&_f=".V::get('_f', '', $_REQUEST)."&_user_id=".$user->ID . '">' . "Aktualizuj status" . '</a>'; // Reload page, data updated below
  267. }
  268. // TODO: zmien status klienta - przypisanie do odpowiedniej grupy
  269. echo '</caption>';
  270. echo '<tr>';
  271. echo '<th>' . "status:" . '</th>';
  272. echo '<td>';
  273. echo $user->A_STATUS;
  274. if (V::get('DBG', '', $_GET, 'int') > 0) {// TODO: TEST
  275. if ($user->A_STATUS == 'waiting-krd') {
  276. echo '<br />' . "wezwanie2_DATE: {$user->wezwanie2_DATE}";
  277. $wzw2 = new stdClass();
  278. $wzw2->Y = intval(substr($user->wezwanie2_DATE, 0, 4));
  279. $wzw2->m = intval(substr($user->wezwanie2_DATE, 5, 2));
  280. $wzw2->d = intval(substr($user->wezwanie2_DATE, 8, 2));
  281. echo '<br />' . "wzw2: {$wzw2->Y}-{$wzw2->m}-{$wzw2->d}";
  282. $wzw2->plus_60 = date("Y-m-d", mktime(0,0,0, $wzw2->m, $wzw2->d + 60, $wzw2->Y));
  283. echo '<br />' . "wezwanie2_DATE + 60 dni: {$wzw2->plus_60}";
  284. if ($wzw2->plus_60 < date("Y-m-d")) {
  285. echo '<br />' . "TODO: przenieść do krd";
  286. }
  287. }
  288. }// TODO: TEST
  289. echo ' &nbsp;&nbsp; <form action="" method="POST" style="display:inline">';
  290. echo '<input type="hidden" name="'."change_status".'" value="'."change".'" />';
  291. $fltr_arr = Windykacja_StatsHelper::get_filters();
  292. $fltr_options = array();
  293. foreach ($fltr_arr as $k_status => $v_arr) {
  294. $fltr_options[$k_status] = reset($v_arr);
  295. }
  296. echo '<select name="' . "new_status" . '">';
  297. foreach ($fltr_options as $k_ind => $v_label) {
  298. $sel = ($k_ind == $user->A_STATUS)? ' selected="selected"' : '';
  299. echo '<option value="' . $k_ind . '"' . $sel . '>' . "{$k_ind}: {$v_label}" . '</option>';
  300. }
  301. echo '</select>';
  302. echo '<input type="submit" value="'."zmień".'" />';
  303. echo '</form>';
  304. echo '</td>';
  305. echo '</tr>';
  306. echo '<tr>';
  307. echo '<th>' . "Nr sprawy w krd" . '</th>';
  308. echo '<td>';
  309. echo ' <form action="" method="POST" style="display:inline">';
  310. echo '<input type="hidden" name="'."set_nr_sprawy_krd".'" value="'."change".'" />';
  311. echo '<input type="text" name="'."nr_sprawy_krd".'" value="'.$user->NR_SPRAWY_KRD.'" />';
  312. echo '<input type="submit" value="'."zmień".'" />';
  313. echo '</form>';
  314. echo '</td>';
  315. echo '</tr>';
  316. echo '<tr>';
  317. echo '<th>' . "Nr sprawy w sądzie" . '</th>';
  318. echo '<td>';
  319. echo ' <form action="" method="POST" style="display:inline">';
  320. echo '<input type="hidden" name="'."set_nr_sprawy_sad".'" value="'."change".'" />';
  321. echo '<input type="text" name="'."nr_sprawy_sad".'" value="'.$user->NR_SPRAWY_SAD.'" />';
  322. echo '<input type="submit" value="'."zmień".'" />';
  323. echo '</form>';
  324. echo '</td>';
  325. echo '</tr>';
  326. echo '<tr>';
  327. echo '<th>' . "Nr sprawy u komornika" . '</th>';
  328. echo '<td>';
  329. echo ' <form action="" method="POST" style="display:inline">';
  330. echo '<input type="hidden" name="'."set_nr_sprawy_komornik".'" value="'."change".'" />';
  331. echo '<input type="text" name="'."nr_sprawy_komornik".'" value="'.$user->NR_SPRAWY_KOMORNIK.'" />';
  332. echo '<input type="submit" value="'."zmień".'" />';
  333. echo '</form>';
  334. echo '</td>';
  335. echo '</tr>';
  336. echo '<tr>';
  337. echo '<th>' . "Aktualne ustalenia z klientem" . '</th>';
  338. echo '<td>';
  339. echo ' <form action="" method="POST" style="display:inline">';
  340. echo '<input type="hidden" name="'."set_ustalenia_info".'" value="'."change".'" />';
  341. echo '<textarea style="width:100%" type="text" name="'."ustalenia_info".'">' . $user->L_APPOITMENT_INFO . '</textarea>';
  342. echo '<br />' . "Data: ";
  343. echo '<input type="text" name="'."ustalenia_date".'" value="'.$user->L_APPOITMENT_DATE.'" />';
  344. echo '<input type="submit" value="'."zmień".'" />';
  345. $js = "this.form.ustalenia_info.value=''; this.form.ustalenia_date.value='0000-00-00'; return false;";
  346. echo '<input type="reset" value="'."wyszyść".'" onclick="'.$js.'" />';
  347. echo '</form>';
  348. echo '</td>';
  349. echo '</tr>';
  350. echo '<tr>';
  351. echo '<th>' . "data ostatniej wpłaty:" . '</th>';
  352. echo '<td>';
  353. if ($user->LAST_PAY_DATE && $user->LAST_PAY_DATE != '0000-00-00') {
  354. echo $user->LAST_PAY_DATE;
  355. } else {
  356. echo '---';
  357. }
  358. echo '</td>';
  359. echo '</tr>';
  360. echo '<tr>';
  361. echo '<th>' . "data wymagalności ostatniej faktury:" . '</th>';
  362. echo '<td>';
  363. if ($user->PAY_DATE != '0000-00-00') {
  364. echo $user->PAY_DATE;
  365. }
  366. echo '</td>';
  367. echo '</tr>';
  368. echo '<tr>';
  369. echo '<th>' . "data wymagalności pierwszej faktury:" . '</th>';
  370. echo '<td>';
  371. if ($user->PAY_DATE_FIRST_FVAT != '0000-00-00') {
  372. echo $user->PAY_DATE_FIRST_FVAT;
  373. }
  374. echo '</td>';
  375. echo '</tr>';
  376. echo '<tr>';
  377. echo '<th>' . "termin płatności:" . '</th>';
  378. echo '<td>';
  379. if ($user->PAY_TERM != '0000-00-00') {
  380. echo $user->PAY_TERM;
  381. }
  382. echo '</td>';
  383. echo '</tr>';
  384. echo '<tr>';
  385. echo '<th>' . "Przeniesienie do Vectra?:" . '</th>';
  386. echo '<td>';
  387. if ($user->IS_MOVED_TO_VECTRA) {
  388. echo 'TAK';
  389. } else {
  390. echo '<span class="text-muted">NIE</span>';
  391. }
  392. echo '</td>';
  393. echo '</tr>';
  394. echo '</table>';
  395. echo '</td></tr></table>';
  396. // TODO: windykacja_status_info - grupa filtrow do ktorej nalezy klient
  397. Lib::loadClass('CompanyHelper');
  398. $db = DB::getDB();
  399. $comHelper = new CompanyHelper($db);
  400. $usr = $comHelper->getById($user->ID);
  401. $dealsActive = $comHelper->getDealsFull($user->ID, false);
  402. Lib::loadClass('PokazOfertyView');
  403. $pokaz_oferty_view = new PokazOfertyView();
  404. echo $pokaz_oferty_view->print_css();
  405. $pokaz_oferty_view->printServices($usr, $dealsActive);
  406. if(V::get('DBG_ACTIVE_SRV', '', $_GET) > 2){
  407. $activeServicesByType = array();
  408. $db = DB::getDB();
  409. $idUser = $user->ID;
  410. $sql = "
  411. select srv.`ID` as `ID_SERVICES`
  412. , srv.`NAME_LIST_SERVICES`
  413. , A_STATUS_L2_SQL_L1(srv.`ID`) as A_STATUS_CURRENT
  414. from `SERVICES` srv
  415. where srv.`ID_BILLING_USERS`='{$idUser}'
  416. ";
  417. DBG::_(true, true, "sql", $sql, __CLASS__, __FUNCTION__, __LINE__);
  418. $res = $db->query($sql);
  419. while ($r = $db->fetch($res)) {
  420. $activeServicesByType[] = $r;
  421. }
  422. DBG::_(true, true, "activeServicesByType", $activeServicesByType, __CLASS__, __FUNCTION__, __LINE__);
  423. $sql = "
  424. select
  425. IF(1 = (
  426. select 1 as hasActiveNET
  427. from `SERVICES` srv
  428. where srv.`ID_BILLING_USERS`='{$idUser}'
  429. and srv.`NAME_LIST_SERVICES`='USERS2'
  430. and 'NORMAL'=A_STATUS_L2_SQL_L1(srv.`ID`)
  431. limit 1
  432. ), 1, 0) as hasActiveNET
  433. ,
  434. IF(1 = (
  435. select 1 as hasActiveTV
  436. from `SERVICES` srv
  437. where srv.`ID_BILLING_USERS`='{$idUser}'
  438. and srv.`NAME_LIST_SERVICES`='TV'
  439. and 'NORMAL'=A_STATUS_L2_SQL_L1(srv.`ID`)
  440. limit 1
  441. ), 1, 0) as hasActiveTV
  442. ";
  443. DBG::_(true, true, "sql", $sql, __CLASS__, __FUNCTION__, __LINE__);
  444. $activeServicesByType = array();
  445. $res = $db->query($sql);
  446. while ($r = $db->fetch($res)) {
  447. $activeServicesByType = $r;
  448. }
  449. DBG::_(true, true, "activeServicesByType", $activeServicesByType, __CLASS__, __FUNCTION__, __LINE__);
  450. }
  451. // aktualny status klienta
  452. echo'<div>';
  453. if ($user->A_STATUS_UPDATE_DATE < date("Y-m-d")) {
  454. }
  455. else {
  456. switch ($user->A_STATUS) {
  457. case 'WAITING': {
  458. echo'<p>' . "Status OK" . '</p>';
  459. }
  460. break;
  461. case 'wezwanie1': {
  462. $default_PAY_TERM = date("Y-m-d", mktime(0,0,0,date('m'), date('d') + 14, date('Y')));
  463. $frm_errors = array();
  464. $frm_msgs = array();
  465. $frm = array();
  466. $frm['wezwanie1_DATE'] = date("Y-m-d");
  467. $frm['PAY_TERM'] = V::get('PAY_TERM', $default_PAY_TERM, $_POST);
  468. $frm['ID_PROJ'] = V::get('ID_PROJ', 0, $_POST, 'int');
  469. if ('set_wezwanie' == V::get('user_task', '', $_POST)) {
  470. if ($frm['ID_PROJ'] == 0) {
  471. $frm_errors[] = "Brak numeru ID Projketu";
  472. }
  473. if (empty($frm_errors)) {
  474. $ret = Windykacja_StatsHelper::update_user($user, $frm);
  475. if ($ret) {
  476. $frm_msgs[] = "Status klienta został zaktualizowany";
  477. } else {
  478. $frm_errors[] = "Status klienta nie został zaktualizowany";
  479. }
  480. }
  481. }
  482. echo '<div class="box box-blue" style="margin:6px 0;">';
  483. if ($user->PAY_FVAT > 0 && $user->PAY_SALDO <= -0.05) {
  484. echo "Saldo klienta: " . '<b style="color:#f00">' . "{$user->PAY_SALDO} zł" . '</b>' . " ({$user->PAY_FVAT} niezapłaconych faktur)" . '<br />';
  485. echo'<br />';
  486. }
  487. echo '<b style="color:#0B0B8E">'."Wysłać wezwanie do zapłaty".'</b>'.'<br />';
  488. if (!empty($frm_errors)) {
  489. echo'<p style="color:#f00">' . implode('<br />', $frm_errors) . '</p>';
  490. }
  491. if (!empty($frm_msgs)) {
  492. echo'<p style="color:green">' . implode('<br />', $frm_msgs) . '</p>';
  493. }
  494. echo'<form action="" method="post">';
  495. echo'<input type="hidden" name="'."user_task".'" value="'."set_wezwanie".'" />';
  496. echo "Data płatności: ";
  497. echo'<input type="text" name="'."PAY_TERM".'" value="'.$frm['PAY_TERM'].'" />';
  498. echo " ID Projektu (np. 335 - klienci BIALL-NET lub 4956 - klienci Vectra): ";
  499. echo'<input type="text" name="'."ID_PROJ".'" value="'.$frm['ID_PROJ'].'" />';
  500. echo'<input type="submit" value="'."Zapisz".'" />';
  501. echo'</form>';
  502. if ($user->wezwanie1_DATE != '0000-00-00') {
  503. echo'<br />';
  504. $ico_print = '<img src="icon/print.gif" height="16" />';
  505. echo'<a href="'."?MENU_INIT=USERS2_WINDYKACJA_STATUS&q=".V::get('q','', $_REQUEST)."&task="."wezwanie"."&user_id=".$user->ID.'" target="_blank">'.$ico_print." wezwanie do zapłaty".'</a>';
  506. }
  507. echo '</div>';// .box-blue
  508. }
  509. break;
  510. case 'waiting-wezwanie2': {// TODO: only auto update ?
  511. echo '<div class="box box-blue" style="margin:6px 0;">';
  512. if ($user->PAY_FVAT > 0 && $user->PAY_SALDO <= -0.05) {
  513. echo "Saldo klienta: " . '<b style="color:#f00">' . $user->PAY_SALDO . " zł" . '</b>' . " (" . $user->PAY_FVAT ." niezapłaconych faktur)" . '<br />';
  514. echo'<br />';
  515. }
  516. echo '<b style="color:#0B0B8E">'."Oczekiwanie na uzbieranie kwoty 300zł (firmy 500zł)".'</b>'.'<br />';
  517. if (!empty($frm_errors)) {
  518. echo'<p style="color:#f00">';
  519. echo implode('<br />', $frm_errors);
  520. echo'</p>';
  521. }
  522. echo'<form action="" method="post">';
  523. // echo'<input type="hidden" name="'."user_task".'" value="'."set_".'" />';
  524. // echo'<input type="submit" value="'."Zapisz".'" />';
  525. echo'</form>';
  526. if ($user->wezwanie1_DATE != '0000-00-00') {
  527. echo'<br />';
  528. $ico_print = '<img src="icon/print.gif" height="16" />';
  529. echo'<a href="'."?MENU_INIT=USERS2_WINDYKACJA_STATUS&q=".V::get('q','', $_REQUEST)."&task="."wezwanie"."&user_id=".$user->ID.'" target="_blank">' . $ico_print . " wezwanie do zapłaty".'</a>'.'<em>'." (termin płatności: " . $user->PAY_TERM . ")".'</em>';
  530. }
  531. echo '</div>';// .box-blue
  532. }
  533. break;
  534. case 'wezwanie2': {
  535. $default_PAY_TERM = date("Y-m-d", mktime(0,0,0,date('m'), date('d') + 14, date('Y')));
  536. $frm_msgs = array();
  537. $frm_errors = array();
  538. $frm = array();
  539. $frm['wezwanie2_DATE'] = date("Y-m-d");
  540. $frm['PAY_TERM'] = V::get('PAY_TERM', $default_PAY_TERM, $_POST);
  541. $frm['ID_PROJ'] = V::get('ID_PROJ', 0, $_POST, 'int');
  542. if ('set_wezwanie2' == V::get('user_task', '', $_POST)) {
  543. if ($frm['ID_PROJ'] == 0) {
  544. $frm_errors[] = "Brak numeru ID korespondencji";
  545. }
  546. if (empty($frm_errors)) {
  547. $ret = Windykacja_StatsHelper::update_user($user, $frm);
  548. if ($ret) {
  549. $frm_msgs[] = "Status klienta został zaktualizowany";
  550. } else {
  551. $frm_errors[] = "Status klienta nie został zaktualizowany";
  552. }
  553. }
  554. }
  555. echo '<div class="box box-blue" style="margin:6px 0;border-color:#666;">';
  556. if ($user->PAY_FVAT > 0 && $user->PAY_SALDO <= -0.05) {
  557. echo "Saldo klienta: " . '<b style="color:#f00">' . "{$user->PAY_SALDO} zł" . '</b>' . " ({$user->PAY_FVAT} niezapłaconych faktur)" . '<br />';
  558. echo'<br />';
  559. }
  560. echo '<b style="color:#0B0B8E">'."Wysłać ostateczne wezwanie do zapłaty".'</b>'.'<br />';
  561. if (!empty($frm_errors)) {
  562. echo'<p style="color:#f00">' . implode('<br />', $frm_errors) . '</p>';
  563. }
  564. if (!empty($frm_msgs)) {
  565. echo'<p style="color:green">' . implode('<br />', $frm_msgs) . '</p>';
  566. }
  567. echo'<form action="" method="post">';
  568. echo'<input type="hidden" name="'."user_task".'" value="'."set_wezwanie2".'" />';
  569. echo "Data płatności: ";
  570. echo'<input type="text" name="'."PAY_TERM".'" value="'.$frm['PAY_TERM'].'" />';
  571. echo " ID Projektu: ";
  572. echo'<input type="text" name="'."ID_PROJ".'" value="'.$frm['ID_PROJ'].'" />';
  573. echo'<input type="submit" value="'."Zapisz".'" />';
  574. echo'</form>';
  575. if ($user->wezwanie2_DATE != '0000-00-00') {
  576. echo'<br />';
  577. $ico_print = '<img src="icon/print.gif" height="16" />';
  578. echo'<a href="'."?MENU_INIT=USERS2_WINDYKACJA_STATUS&q=".V::get('q','', $_REQUEST)."&task="."wezwanie_ostateczne"."&user_id=".$user->ID.'" target="_blank">' . $ico_print . " ostateczne wezwanie do zapłaty".'</a>';
  579. }
  580. echo '</div>';// .box-blue
  581. }
  582. break;
  583. case 'waiting-krd': {
  584. if ($user->wezwanie2_DATE != '0000-00-00') {
  585. echo'<br />';
  586. $ico_print = '<img src="icon/print.gif" height="16" />';
  587. echo'<a href="'."?MENU_INIT=USERS2_WINDYKACJA_STATUS&q=".V::get('q','', $_REQUEST)."&task="."wezwanie_ostateczne"."&user_id=".$user->ID.'" target="_blank">' . $ico_print . " ostateczne wezwanie do zapłaty".'</a>';
  588. }
  589. }
  590. break;
  591. default:
  592. echo'<p>' . "TODO: (".$user->A_STATUS.")" . '</p>';
  593. }
  594. }
  595. //if ($user->BA_TIMESTAMP) {
  596. // echo "Stan wzajemnych rozrachunków:";
  597. // echo " WINIEN: <b>".$user->BA_WINIEN."</b> - MA: <b>".$user->BA_MA."</b> SALDO(DO ZAPŁATY): <b>".($user->BA_WINIEN - $user->BA_MA)."</b>";
  598. // echo", i jest to stan na dzień ".date("Y-m-d",$user->BA_TIMESTAMP)." ";
  599. //}
  600. // phone contact
  601. $phone_status_info = Windykacja_StatsHelper::get_phone_status_info($user);
  602. $sms_status_info = Windykacja_StatsHelper::get_sms_status_info($user);
  603. $mail_status_info = Windykacja_StatsHelper::get_mail_status_info($user);
  604. $frm_errors = array();
  605. $frm_msgs = array();
  606. if (1 == V::get('phone_contact_save', 0, $_POST, 'int')) {
  607. if ('' == ($phone_status = V::get('phone_status', '', $_POST))) {
  608. $frm_errors[] = "Nic nie zaznaczono!";
  609. } else {
  610. if (!array_key_exists($phone_status, $phone_status_info)) {
  611. $frm_errors[] = "Nieprawidłowa wartość!";
  612. } else {
  613. $ret = Windykacja_StatsHelper::update_phone_status($user, $phone_status);
  614. if ($ret) {
  615. $frm_msgs[] = "Dane zapisano pomyślnie";
  616. } else {
  617. $frm_errors[] = "Wystąpił błąd podczas zapisu danych";
  618. }
  619. }
  620. }
  621. }
  622. if (1 == V::get('sms_contact_save', 0, $_POST, 'int')) {
  623. if ('' == ($sms_status = V::get('sms_status', '', $_POST))) {
  624. $frm_errors[] = "Nic nie zaznaczono!";
  625. } else {
  626. if (!array_key_exists($sms_status, $sms_status_info)) {
  627. $frm_errors[] = "Nieprawidłowa wartość!";
  628. } else {
  629. $ret = Windykacja_StatsHelper::update_sms_status($user, $sms_status);
  630. if ($ret) {
  631. $frm_msgs[] = "Dane zapisano pomyślnie";
  632. } else {
  633. $frm_errors[] = "Wystąpił błąd podczas zapisu danych";
  634. }
  635. }
  636. }
  637. }
  638. if (1 == V::get('mail_contact_save', 0, $_POST, 'int')) {
  639. if ('' == ($mail_status = V::get('mail_status', '', $_POST))) {
  640. $frm_errors[] = "Nic nie zaznaczono!";
  641. } else {
  642. if (!array_key_exists($mail_status, $mail_status_info)) {
  643. $frm_errors[] = "Nieprawidłowa wartość!";
  644. } else {
  645. $ret = Windykacja_StatsHelper::update_mail_status($user, $mail_status);
  646. if ($ret) {
  647. $frm_msgs[] = "Dane zapisano pomyślnie";
  648. } else {
  649. $frm_errors[] = "Wystąpił błąd podczas zapisu danych";
  650. }
  651. }
  652. }
  653. }
  654. // add old id_koresp to hist (events)
  655. if (1 == V::get('contact_add_id_koresp_save', 0, $_POST, 'int')) {
  656. if (($id_koresp = V::get('id_koresp', '', $_POST, 'int')) <= 0) {
  657. $frm_errors[] = "Nie podano numeru korespondencji!";
  658. } else {
  659. $koresp_type = V::get('koresp_type', '', $_POST);
  660. $ret = Windykacja_StatsHelper::update_old_id_koresp($user, $id_koresp, $koresp_type);
  661. if ($ret) {
  662. $frm_msgs[] = "Dane zapisano pomyślnie";
  663. } else {
  664. $frm_errors[] = "Wystąpił błąd podczas zapisu danych";
  665. }
  666. }
  667. }
  668. ?>
  669. <script type="text/javascript">
  670. function frm_kontakt_phone_submit_callback(frm){
  671. var len=frm.phone_status.length;
  672. var val='';
  673. for(var i=0; i < len; i++){
  674. if(frm.phone_status[i].checked){
  675. var val = frm.phone_status[i].value;
  676. }
  677. }
  678. if (val!='') {
  679. return true;
  680. } else {
  681. alert('Nic nie zaznaczono.');
  682. }
  683. return false;
  684. }
  685. function frm_kontakt_sms_submit_callback(frm){
  686. var len=frm.sms_status.length;
  687. var val='';
  688. if (!len && frm.sms_status.type && frm.sms_status.type == 'radio') {
  689. if (frm.sms_status.checked) {
  690. val = frm.sms_status[i].value;
  691. }
  692. } else {
  693. for(var i=0; i < len; i++){
  694. if(frm.sms_status[i].checked){
  695. var val = frm.sms_status[i].value;
  696. }
  697. }
  698. }
  699. if (val!='') {
  700. return true;
  701. } else {
  702. alert('Nic nie zaznaczono.');
  703. }
  704. return false;
  705. }
  706. function frm_kontakt_add_id_koresp(frm){
  707. var val=frm.id_koresp.value;
  708. if (val!='') {
  709. return true;
  710. } else {
  711. alert('Nie podano numeru korespondencji.');
  712. }
  713. return false;
  714. }
  715. </script>
  716. <div class="box" style="margin:6px 0;border-color:#666;">
  717. <?php if (!empty($frm_errors)) {
  718. echo'<p style="color:#f00">' . implode('<br />', $frm_errors) . '</p>';
  719. }
  720. if (!empty($frm_msgs)) {
  721. echo'<p style="color:green">' . implode('<br />', $frm_msgs) . '</p>';
  722. }
  723. ?>
  724. <table cellspacing="0" cellpadding="0" border="0" class="tbl-td-top"><tr>
  725. <td style="padding:0 20px 0 0;color:blue;">
  726. <img src="icon/phone.png" alt="tel" />
  727. kontakt z klientem
  728. </td>
  729. <td style="padding:0 5px;text-align:right">
  730. <nobr>Co ustalono:</nobr>
  731. </td>
  732. <td style="min-width:300px;">
  733. <form action="" method="post" onsubmit="return frm_kontakt_phone_submit_callback(this);">
  734. <div id="kontakt-phone">
  735. <input type="hidden" name="phone_contact_save" value="1" />
  736. <?php foreach ($phone_status_info as $k_type => $v_info) {
  737. echo '<input type="radio" name="'."phone_status".'" value="' . $k_type . '" />'; echo " " . $v_info['label'] . " " . $v_info['date'] . '<br />';
  738. } ?>
  739. </div>
  740. <input type="submit" value="zapisz" />
  741. </form>
  742. </td>
  743. <td style="width:40px">
  744. </td>
  745. <td>
  746. <?php if (!empty($sms_status_info)) : ?>
  747. <form action="" method="post" onsubmit="return frm_kontakt_sms_submit_callback(this);">
  748. <div id="kontakt-sms">
  749. <input type="hidden" name="sms_contact_save" value="1" />
  750. <?php foreach ($sms_status_info as $k_type => $v_info) {
  751. echo '<input type="radio" name="'."sms_status".'" value="' . $k_type . '" />'; echo " {$v_info['label']}:<br> {$v_info['msg']}" . '<br />';
  752. } ?>
  753. </div>
  754. <input type="submit" value="wyślij" />
  755. </form>
  756. <?php endif; ?>
  757. </td>
  758. <td style="width:40px">
  759. </td>
  760. <td>
  761. <?php if (!empty($mail_status_info)) : ?>
  762. <form action="" method="post" onsubmit="return frm_kontakt_mail_submit_callback(this);">
  763. <div id="kontakt-mail">
  764. <input type="hidden" name="mail_contact_save" value="1" />
  765. <?php foreach ($mail_status_info as $k_type => $v_info) {
  766. echo '<input type="radio" name="'."mail_status".'" value="' . $k_type . '" />'; echo " {$v_info['label']}:<br> {$v_info['msg']}" . '<br />';
  767. } ?>
  768. </div>
  769. <input type="submit" value="wyślij" />
  770. </form>
  771. <?php endif; ?>
  772. </td>
  773. </tr></table>
  774. </div>
  775. <div class="box" style="margin:6px 0;border-color:#666;">
  776. <form action="" method="post" onsubmit="return frm_kontakt_add_id_koresp(this);">
  777. <input type="hidden" name="contact_add_id_koresp_save" value="1" />
  778. Dodaj korespondencję z klientem - ID_KORESP:
  779. <input type="text" name="id_koresp" value="" class="i" />
  780. <input type="submit" value="zapisz" />
  781. </form>
  782. </div>
  783. <div class="box" style="margin:6px 0;border-color:#666;">
  784. <?php
  785. $ico_print = '<img src="icon/print.gif" height="16" />';
  786. echo '<a href="'."?MENU_INIT=USERS2_WINDYKACJA_STATUS&q=".V::get('q','', $_REQUEST)."&task="."bok_rozwiazanie_umowy"."&user_id=".$user->ID.'" target="_blank">' . $ico_print . " rozwiązanie umowy".'</a>';
  787. ?>
  788. </div>
  789. </div>
  790. <?php
  791. }
  792. public static function items_filters() {
  793. $filter_arr = Windykacja_StatsHelper::get_filters();
  794. $filter_selected = Windykacja_StatsHelper::get_filter_selected();
  795. $status_cnt = Windykacja_StatsHelper::get_status_count();// {cnt, suma_zaleglosci}
  796. // pomin filtry
  797. unset($filter_arr['15']);
  798. unset($filter_arr['blokada']);
  799. unset($filter_arr['WAITING']);
  800. $sub_filters = array('tel1', 'bad_address', '3 m-ce przed', 'po-terminie', 'has_nr_sad', 'has_nr_komornik', 'has_ustalenia', 'sad_and_komornik', 'sad_bez_komornik', 'isMovedToVectra');
  801. $sub_filters_arr = array();
  802. foreach ($sub_filters as $v_filter_name) {
  803. if (array_key_exists($v_filter_name, $filter_arr)) {
  804. $sub_filters_arr[$v_filter_name] = $filter_arr[$v_filter_name];
  805. unset($filter_arr[$v_filter_name]);
  806. }
  807. }
  808. $zewn_filters = array('waiting-sad', 'docs-in-sad', 'sad');
  809. $zewn_filters_arr = array();
  810. foreach ($zewn_filters as $v_filter_name) {
  811. if (array_key_exists($v_filter_name, $filter_arr)) {
  812. $zewn_filters_arr[$v_filter_name] = $filter_arr[$v_filter_name];
  813. unset($filter_arr[$v_filter_name]);
  814. }
  815. }
  816. echo'<table cellspacing="0" cellpadding="0" border="1" style="background:#ddd;border-color:#666;"><tr><td style="vertical-align:top">';
  817. if (!empty($filter_selected)) {
  818. echo'<a href="' . "??MENU_INIT=USERS2_WINDYKACJA_STATUS" . '" title="'."Kasuj filtry".'">' . '<img src="icon/del.png" height="16" alt="'."Kasuj filtry".'" />' . '</a>';
  819. echo '</td><td>';
  820. }
  821. echo'<table class="tbl-view historia-platnosci-filters" cellspacing="0" cellpadding="0" border="1">';
  822. echo'<thead>';
  823. echo'<tr>';
  824. foreach ($filter_arr as $k => $v_arr) {
  825. $cls = ($filter_selected == $k)? ' class="selected"' : '';
  826. echo'<td' . $cls . '>';
  827. if ($desc = V::get('desc', '', $v_arr)) {
  828. echo '<span title="' . end($desc) . '">' . reset($desc) . '</span>';
  829. }
  830. echo'</td>';
  831. }
  832. if (!empty($zewn_filters_arr)) {
  833. echo '<td colspan="'.count($zewn_filters_arr).'" style="background:#f00;color:#fff;font-weight:bold;">' . "Windykacja zewnętrzna" . '</td>';
  834. }
  835. echo'</tr>';
  836. echo'<tr>';
  837. foreach ($filter_arr as $k => $v_arr) {
  838. $cls = ($filter_selected == $k)? ' class="selected"' : '';
  839. echo'<td' . $cls . '>';
  840. echo '<a href="' . "?MENU_INIT=USERS2_WINDYKACJA_STATUS&_f=" . $k . '">' . reset($v_arr) . '</a>';
  841. //$stat_cnt = V::get($k, 0, $status_cnt, 'int');
  842. //echo ' <span style="color:#f00;" title="' . $stat_cnt . " klinetów" . '">' . "(" . $stat_cnt . ")" . '</span>';
  843. $stat_cnt = 0;
  844. if (array_key_exists($k, $status_cnt)) {
  845. $stat_cnt = $status_cnt[$k]->cnt;
  846. echo ' <span style="color:#000;" title="' . $stat_cnt . " klinetów" . '">' . "(" . $stat_cnt . ")" . '</span>';
  847. $stat_saldo = number_format($status_cnt[$k]->suma_zaleglosci, 2, ',', ' ');
  848. echo '<br />' . '<span style="color:#f00;" title="' . $stat_saldo . " zł zagdłużenia" . '">' . $stat_saldo . '</span>';
  849. } else {
  850. echo ' <span style="color:#000;" title="' . $stat_cnt . " klinetów" . '">' . "(" . $stat_cnt . ")" . '</span>';
  851. }
  852. echo'</td>';
  853. }
  854. if (!empty($zewn_filters_arr)) {
  855. foreach ($zewn_filters_arr as $k => $v_arr) {
  856. $cls = ($filter_selected == $k)? ' class="selected"' : '';
  857. echo'<td' . $cls . '>';
  858. echo '<a href="' . "?MENU_INIT=USERS2_WINDYKACJA_STATUS&_f=" . $k . '">' . reset($v_arr) . '</a>';
  859. //$stat_cnt = V::get($k, 0, $status_cnt, 'int');
  860. //echo ' <span style="color:#f00;" title="' . $stat_cnt . " klinetów" . '">' . "(" . $stat_cnt . ")" . '</span>';
  861. $stat_cnt = 0;
  862. if (array_key_exists($k, $status_cnt)) {
  863. $stat_cnt = $status_cnt[$k]->cnt;
  864. echo ' <span style="color:#000;" title="' . $stat_cnt . " klinetów" . '">' . "(" . $stat_cnt . ")" . '</span>';
  865. $stat_saldo = number_format($status_cnt[$k]->suma_zaleglosci, 2, ',', ' ');
  866. echo '<br />' . '<span style="color:#f00;" title="' . $stat_saldo . " zł zagdłużenia" . '">' . $stat_saldo . '</span>';
  867. } else {
  868. echo ' <span style="color:#000;" title="' . $stat_cnt . " klinetów" . '">' . "(" . $stat_cnt . ")" . '</span>';
  869. }
  870. echo'</td>';
  871. }
  872. }
  873. echo'</tr>';
  874. echo'</thead>';
  875. echo'</table>';
  876. if (!empty($sub_filters_arr)) {
  877. echo '<table class="tbl-view historia-platnosci-subfilters" cellspacing="0" cellpadding="0" border="1">';
  878. echo '<thead><tr>';
  879. foreach ($sub_filters_arr as $k => $v_arr) {
  880. $cls = ($filter_selected == $k)? ' class="selected"' : '';
  881. echo'<td' . $cls . '>';
  882. echo '<a href="' . "?MENU_INIT=USERS2_WINDYKACJA_STATUS&_f=" . $k . '">' . reset($v_arr) . '</a>';
  883. //$stat_cnt = V::get($k, 0, $status_cnt, 'int');
  884. //echo ' <span style="color:#f00;" title="' . $stat_cnt . " klinetów" . '">' . "(" . $stat_cnt . ")" . '</span>';
  885. $stat_cnt = 0;
  886. if (array_key_exists($k, $status_cnt)) {
  887. $stat_cnt = $status_cnt[$k]->cnt;
  888. echo ' <span style="color:#000;" title="' . $stat_cnt . " klinetów" . '">' . "(" . $stat_cnt . ")" . '</span>';
  889. $stat_saldo = number_format($status_cnt[$k]->suma_zaleglosci, 2, ',', ' ');
  890. echo '<br />' . '<span style="color:#000;" title="' . $stat_saldo . " zł zagdłużenia" . '">' . $stat_saldo . '</span>';
  891. } else {
  892. echo ' <span style="color:#000;" title="' . $stat_cnt . " klinetów" . '">' . "(" . $stat_cnt . ")" . '</span>';
  893. }
  894. echo'</td>';
  895. }
  896. echo '</tr></thead>';
  897. echo '</table>';
  898. }
  899. echo '</td></tr></table>';
  900. echo'<br />';
  901. }
  902. public static function items($q, &$page_nav, &$items) {
  903. $page_nav->links = array();
  904. $out_link_arr = V::copy($page_nav->base_link_arr);
  905. $out_link_arr['_p'] = 0;
  906. $out_link = V::make_link('', $out_link_arr);
  907. $page_nav->links[] = '<a href="' . $out_link . '" title="'."Pierwsza strona".'">'."|&lt;&lt;".'</a>';
  908. if ($page_nav->page_nr > 0) {
  909. $out_link_arr = V::copy($page_nav->base_link_arr);
  910. $out_link_arr['_p'] = $page_nav->page_nr - 1;
  911. $out_link = V::make_link('', $out_link_arr);
  912. $page_nav->links[] = '<a href="' . $out_link . '" title="'."Poprzednia strona".'">'."&lt;&lt; -{$page_nav->page_limit}".'</a>';
  913. } else {
  914. $page_nav->links[] = " &lt;&lt; ";
  915. }
  916. $page_nav->links[] = '<span>'.($page_nav->page_nr * $page_nav->page_limit).'</span>';
  917. $page_nav->links[] = '<span title="'."Znaleziono ".$page_nav->total." rekordów".'">'."({$page_nav->total}) ".'</span>';
  918. $out_link_arr = V::copy($page_nav->base_link_arr);
  919. $out_link_arr['_p'] = $page_nav->page_nr + 1;
  920. $out_link = V::make_link('', $out_link_arr);
  921. $page_nav->links[] = '<a href="' . $out_link . '" title="'."Nastepna strona".'">'."+{$page_nav->page_limit} &gt;&gt;".'</a>';
  922. $out_link_arr = V::copy($page_nav->base_link_arr);
  923. $out_link_arr['_p'] = $page_nav->last_page_nr;
  924. $out_link = V::make_link('', $out_link_arr);
  925. $page_nav->links[] = '<a href="' . $out_link . '" title="'."Ostatnia strona".'">'."&gt;&gt;|".'</a>';
  926. $page_nav_out = '<div class="tbl-page-nav">' . implode(" ", $page_nav->links);
  927. $out_link_arr = V::copy($page_nav->base_link_arr);
  928. $out_link_arr['task'] = 'export_csv';
  929. $out_link_arr['HEADER_NOT_INIT'] = 'YES';
  930. $out_link = V::make_link('', $out_link_arr);
  931. $page_nav_out .= ' <a style="margin:0 0 0 20px;" href="' . $out_link . '" target="_blank">export csv</a>';
  932. $out_link_arr = V::copy($page_nav->base_link_arr);
  933. $out_link_arr['task'] = 'send_mass_mail';
  934. $out_link = V::make_link('', $out_link_arr);
  935. $page_nav_out .= ' <a style="margin:0 0 0 20px;" href="' . $out_link . '" target="_blank">send mail</a>';
  936. $out_link_arr = V::copy($page_nav->base_link_arr);
  937. $out_link_arr['task'] = 'send_mass_sms';
  938. $out_link = V::make_link('', $out_link_arr);
  939. $page_nav_out .= ' <a style="margin:0 0 0 20px;" href="' . $out_link . '" target="_blank">send sms</a>';
  940. $page_nav_out .= '</div>';
  941. if (empty($items)) {
  942. echo'<p style="color:red">'."Brak danych".'</p>';
  943. return;
  944. }
  945. echo $page_nav_out;
  946. $cols_order_by = Windykacja_StatsModel::get_order_by_fields();
  947. $cols = array();
  948. $cols['ID_BILLING_USERS'] = array('label'=>'Nr klienta', 'title'=>'ID_BILLING_USERS');
  949. $cols['is_firma'] = array('label'=>'F', 'title'=>'is_firma: Firma 1 - tak, 0 nie');
  950. $cols['BILLING_OWNER'] = array('label'=>'COM', 'title'=>'BILLING_OWNER: Klient firmy 1 - BIALL-NET, 2 - NETDAY');
  951. $cols['BLOKADA'] = array('label'=>'B', 'title'=>'BLOKADA: Informacja o blokadzie');
  952. $cols['P_NAME'] = array('label'=>'imie i nazwisko', 'title'=>'P_NAME');
  953. $cols['P_ADDRESS_STREET'] = array('label'=>'adres', 'title'=>'P_ADDRESS_STREET');
  954. $cols['P_ADDRESS_Koresp'] = array('label'=>'adres koresp.', 'title'=>'Adres do korespondencji');
  955. $cols['P_PHONE'] = array('label'=>'nr telefonu', 'title'=>'P_PHONE');
  956. $cols['user_mail_contact'] = array('label'=>'adres e-mail', 'title'=>'user_mail_contact');
  957. $cols['A_STATUS'] = array('label'=>'status', 'title'=>'A_STATUS');
  958. $cols['A_STATUS_UPDATE_DATE'] = array('label'=>'data aktualizacji', 'title'=>'A_STATUS_UPDATE_DATE');
  959. $cols['PAY_SALDO'] = array('label'=>'saldo', 'title'=>'PAY_SALDO');
  960. $cols['PAY_SALDO_30_DNI'] = array('label'=>'saldo 30 dni', 'title'=>'Saldo bez faktur z terminem płatności < 30 dni');
  961. $cols['PAY_SALDO_ISSUED'] = array('label'=>'saldo wystawione', 'title'=>'Saldo wg daty wystawienia faktur');
  962. $cols['PAY_FVAT'] = array('label'=>'zaległe faktury', 'title'=>'PAY_FVAT');
  963. $cols['PAY_DATE_FIRST_FVAT'] = array('label'=>'data wymagalności<br> pierwszej faktury', 'title'=>'PAY_DATE_FIRST_FVAT');
  964. $cols['PAY_DATE'] = array('label'=>'data wymagalności<br> ostatniej faktury', 'title'=>'PAY_DATE');
  965. $cols['LAST_FVAT_VALUE'] = array('label'=>'kwota ostatniej faktury', 'title'=>'LAST_FVAT_VALUE');
  966. $cols['LAST_PAY_DATE'] = array('label'=>'data ostatniej wpłaty', 'title'=>'LAST_PAY_DATE');
  967. $cols['LAST_PAY_VALUE'] = array('label'=>'kwota ostatniej wpłaty', 'title'=>'LAST_PAY_VALUE');
  968. $cols['PAY_TERM'] = array('label'=>'termin płatności', 'title'=>'PAY_TERM');
  969. $cols['IS_MOVED_TO_VECTRA'] = array('label'=>'Przeniesienie do Vectra?', 'title'=>'IS_MOVED_TO_VECTRA');
  970. $cols['HAS_ACTIVE_NET'] = array('label'=>'NET', 'title'=>'Aktywne usługi NET');
  971. $cols['HAS_ACTIVE_TV'] = array('label'=>'TV', 'title'=>'Aktywne uslugi TV');
  972. echo'<table class="tbl-view historia-platnosci" border="1" cellspacing="0" cellpaddin="0">';
  973. echo'<thead>';
  974. echo'<tr>';
  975. foreach ($cols as $k_field => $v_params) {
  976. echo'<th' . ((!empty($v_params['title'])) ? ' title="' . $v_params['title'] . '"' : '') . '>';
  977. echo $v_params['label'];
  978. if (in_array($k_field, $cols_order_by)) {
  979. $sel_oby = (isset($page_nav->base_link_arr['_oby']))? $page_nav->base_link_arr['_oby'] : '';
  980. $sel_odir = 'DESC';
  981. if ($k_field == $sel_oby) {
  982. $sel_odir = (isset($page_nav->base_link_arr['_odir']))? $page_nav->base_link_arr['_odir'] : '';
  983. $sel_odir = ($sel_odir == 'ASC')? 'ASC' : 'DESC';
  984. }
  985. $out_link_arr = V::copy($page_nav->base_link_arr);
  986. $out_link_arr['_p'] = 0;
  987. $out_link_arr['_oby'] = $k_field;
  988. $out_link_arr['_odir'] = ($sel_odir == 'DESC')? 'ASC' : 'DESC';
  989. $out_link = V::make_link('', $out_link_arr);
  990. echo ' <a style="' . (($k_field == $sel_oby)? 'color:red;' : '') . 'text-decoration:none" href="' . $out_link . '">' . (($sel_odir == 'DESC')? 'v' : '^') . '</a>';
  991. }
  992. echo '</th>';
  993. }
  994. echo'</tr>';
  995. echo'</thead>';
  996. echo'<tbody>';
  997. $t = 0;
  998. foreach ($items as $k_id => $user) {
  999. echo'<tr class="row-'.($t = 1 - $t).'">';
  1000. echo'<td>';
  1001. echo'<nobr>';
  1002. $out_link_arr = V::copy($page_nav->base_link_arr);
  1003. $out_link_arr['_user_id'] = $k_id;
  1004. $out_link = V::make_link('', $out_link_arr);
  1005. echo '<a href="' . $out_link . '">'.'<img src="icon/edit.png" height="16" alt="Edit">'.'</a>';
  1006. echo " ";
  1007. echo '<a href="' . $out_link . '">'.$k_id.'</a>';
  1008. echo'</nobr>';
  1009. echo'</td>';
  1010. echo '<td>';
  1011. echo $user->is_firma;
  1012. echo '</td>';
  1013. echo '<td>';
  1014. if ($user->BILLING_OWNER == 1) {
  1015. echo '<span title="' . "BIALL-NET" . '">' . 'BN' . '</span>';
  1016. } else if ($user->BILLING_OWNER == 2) {
  1017. echo '<span title="' . "NETDAY" . '">' . 'ND' . '</span>';
  1018. } else {
  1019. echo '0';
  1020. }
  1021. echo '</td>';
  1022. echo '<td>';
  1023. if ($user->STATUS == 9) {
  1024. echo '<b style="color:red" title="' . "ZABLOKOWANY" . '">' . "Z" . '</b>';
  1025. } else {
  1026. echo '<em style="color:silver" title="' . "brak blokady" . '">' . "0" . '</em>';
  1027. }
  1028. echo '</td>';
  1029. echo'<td style="white-space:nowrap;">';
  1030. $cell_out = $user->P_NAME.' '.$user->P_NAME_SECOND;
  1031. echo '<b title="' . $cell_out . '">' . ((strlen($cell_out) > 30)? substr($cell_out, 0, 30) . ' ...' : $cell_out) . '</b>';
  1032. echo'</td>';
  1033. echo'<td style="white-space:nowrap;'.(($user->BAD_ADDRESS)? 'background-color:#FF7878;' : '').'">';
  1034. $cell_out = "ul. " . $user->P_ADDRESS_STREET . " " . $user->P_ADDRESS_HOUSE . "/" . $user->P_ADDRESS_HOME . ", " . $user->P_ADDRESS_POST_CODE . " " . $user->P_ADDRESS_CITY;
  1035. echo '<i title="' . (($user->BAD_ADDRESS)? "błędny adres zameldowania: " : '') . $cell_out . '">' . ((strlen($cell_out) > 30)? mb_substr($cell_out, 0, 30, "UTF-8") . ' ...' : $cell_out) . '</i>';
  1036. echo'</td>';
  1037. ?>
  1038. <?php if ($user->P_ADRESS_KORESP_1282) : ?>
  1039. <td title="Adres do korespondencji: <?php echo $user->P_ADRESS_KORESP_1282; ?>">
  1040. <?php echo $user->P_ADRESS_KORESP_1282; ?>
  1041. </td>
  1042. <?php else: ?>
  1043. <td></td>
  1044. <?php endif; ?>
  1045. <?php
  1046. echo '<td>' . $user->P_PHONE . '</td>';
  1047. echo '<td>' . $user->user_mail_contact . '</td>';
  1048. echo'<td>';
  1049. echo '<nobr>';
  1050. switch ($user->A_STATUS) {
  1051. case 'WAITING':
  1052. echo '<span style="color:#666;">' . $user->A_STATUS . '</span>';
  1053. break;
  1054. default:
  1055. echo $user->A_STATUS;
  1056. }
  1057. echo '</nobr>';
  1058. echo'</td>';
  1059. echo'<td>';
  1060. if ($user->A_STATUS_UPDATE_DATE != '0000-00-00') {
  1061. echo $user->A_STATUS_UPDATE_DATE;
  1062. } else {
  1063. echo '<span style="color:#666;">' . $user->A_STATUS_UPDATE_DATE . '</span>';
  1064. }
  1065. echo'</td>';
  1066. echo'<td>';
  1067. echo '<nobr>';
  1068. if ($user->PAY_SALDO != 0) {
  1069. $col = ($user->PAY_SALDO > 0)? '#333' : '#f00';
  1070. echo '<span style="color:' . $col . '">' . "{$user->PAY_SALDO} zł" . '</span>';
  1071. } else {
  1072. echo'<span style="color:#666">' . "0" . '</span>';
  1073. }
  1074. echo '</nobr>';
  1075. echo'</td>';
  1076. echo'<td>';
  1077. echo '<nobr>';
  1078. if ($user->PAY_SALDO_30_DNI != 0) {
  1079. $col = ($user->PAY_SALDO_30_DNI > 0)? '#333' : '#f00';
  1080. echo '<span style="color:' . $col . '">' . "{$user->PAY_SALDO_30_DNI} zł" . '</span>';
  1081. } else {
  1082. echo'<span style="color:#666">' . "0" . '</span>';
  1083. }
  1084. echo '</nobr>';
  1085. echo'</td>';
  1086. echo'<td>';
  1087. echo '<nobr>';
  1088. if ($user->PAY_SALDO_ISSUED != 0) {
  1089. $col = ($user->PAY_SALDO_ISSUED > 0)? '#333' : '#f00';
  1090. echo '<span style="color:' . $col . '">' . "{$user->PAY_SALDO_ISSUED} zł" . '</span>';
  1091. } else {
  1092. echo'<span style="color:#666">' . "0" . '</span>';
  1093. }
  1094. echo '</nobr>';
  1095. echo'</td>';
  1096. echo'<td>';
  1097. if ($user->PAY_FVAT > 0) {
  1098. $st = ($user->PAY_FVAT > 1)? ' style="color:#f00"' : '';
  1099. echo' <span title="' . "{$user->PAY_FVAT} nieopłaconych faktur" . '"'.$st.'>' . $user->PAY_FVAT . '</span>';
  1100. } else {
  1101. echo $user->PAY_FVAT;
  1102. }
  1103. echo'</td>';
  1104. echo'<td>';
  1105. if ($user->PAY_DATE_FIRST_FVAT != '0000-00-00') {
  1106. echo $user->PAY_DATE_FIRST_FVAT;
  1107. }
  1108. echo'</td>';
  1109. echo'<td>';
  1110. if ($user->PAY_DATE != '0000-00-00') {
  1111. echo $user->PAY_DATE;
  1112. }
  1113. echo'</td>';
  1114. echo'<td>';
  1115. echo $user->LAST_FVAT_VALUE;
  1116. echo'</td>';
  1117. echo'<td>';
  1118. if ($user->LAST_PAY_DATE && $user->LAST_PAY_DATE != '0000-00-00') {
  1119. echo $user->LAST_PAY_DATE;
  1120. } else {
  1121. echo '---';
  1122. }
  1123. echo'</td>';
  1124. echo'<td>';
  1125. echo $user->LAST_PAY_VALUE;
  1126. echo'</td>';
  1127. echo'<td>';
  1128. if ($user->PAY_TERM != '0000-00-00') {
  1129. echo $user->PAY_TERM;
  1130. }
  1131. echo'</td>';
  1132. echo'<td>';
  1133. if ($user->IS_MOVED_TO_VECTRA) {
  1134. echo 'TAK';
  1135. } else {
  1136. echo '<span class="text-muted">NIE</span>';
  1137. }
  1138. echo'</td>';
  1139. echo'<td>' . $user->HAS_ACTIVE_NET . '</td>';
  1140. echo'<td>' . $user->HAS_ACTIVE_TV . '</td>';
  1141. //, w.`USER_PAY_TERM_ADD`
  1142. //, w.`L_APPOITMENT_DATE`
  1143. //, w.`L_APPOITMENT_USER`
  1144. echo'</tr>';
  1145. }
  1146. echo'</tbody>';
  1147. echo'</table>';
  1148. echo $page_nav_out;
  1149. }
  1150. public static function export_csv($q, &$page_nav, &$items) {
  1151. if (empty($items)) {
  1152. echo "Brak danych";
  1153. return;
  1154. }
  1155. $activeFiltr = V::get('_f', 'all', $_GET);
  1156. $csvFileName = "Windykacja-{$activeFiltr}";
  1157. header('Content-Type: text/csv; charset=utf-8');
  1158. header("Content-Disposition: attachment; filename={$csvFileName}.csv");
  1159. $cols_order_by = Windykacja_StatsModel::get_order_by_fields();
  1160. $cols = array();
  1161. $cols['ID_BILLING_USERS'] = array('label'=>'Nr klienta', 'title'=>'ID_BILLING_USERS');
  1162. $cols['is_firma'] = array('label'=>'F', 'title'=>'is_firma: Firma 1 - tak, 0 nie');
  1163. $cols['BILLING_OWNER'] = array('label'=>'COM', 'title'=>'BILLING_OWNER: Klient firmy 1 - BIALL-NET, 2 - NETDAY');
  1164. $cols['BLOKADA'] = array('label'=>'B', 'title'=>'BLOKADA: Informacja o blokadzie');
  1165. $cols['P_NAME'] = array('label'=>'imie i nazwisko', 'title'=>'P_NAME');
  1166. $cols['P_ADDRESS_STREET'] = array('label'=>'adres', 'title'=>'P_ADDRESS_STREET');
  1167. $cols['P_ADDRESS_Koresp'] = array('label'=>'adres koresp.', 'title'=>'Adres do korespondencji');
  1168. $cols['P_PHONE'] = array('label'=>'nr telefonu', 'title'=>'P_PHONE');
  1169. $cols['user_mail_contact'] = array('label'=>'adres e-mail', 'title'=>'user_mail_contact');
  1170. $cols['P_PESEL'] = array('label'=>'pesel', 'title'=>'P_PESEL');
  1171. $cols['A_STATUS'] = array('label'=>'status', 'title'=>'A_STATUS');
  1172. $cols['A_STATUS_UPDATE_DATE'] = array('label'=>'data aktualizacji', 'title'=>'A_STATUS_UPDATE_DATE');
  1173. $cols['PAY_SALDO'] = array('label'=>'saldo', 'title'=>'PAY_SALDO');
  1174. $cols['PAY_SALDO_30_DNI'] = array('label'=>'saldo 30 dni', 'title'=>'Saldo bez faktur z terminem płatności < 30 dni');
  1175. $cols['PAY_SALDO_ISSUED'] = array('label'=>'saldo wystawione', 'title'=>'Saldo wg daty wystawienia faktur');
  1176. $cols['PAY_FVAT'] = array('label'=>'zaległe faktury', 'title'=>'PAY_FVAT');
  1177. $cols['PAY_DATE_FIRST_FVAT'] = array('label'=>'data wymagalności pierwszej faktury', 'title'=>'PAY_DATE_FIRST_FVAT');
  1178. $cols['PAY_DATE'] = array('label'=>'data wymagalności ostatniej faktury', 'title'=>'PAY_DATE');
  1179. $cols['LAST_FVAT_VALUE'] = array('label'=>'kwota ostatniej faktury', 'title'=>'LAST_FVAT_VALUE');
  1180. $cols['LAST_PAY_DATE'] = array('label'=>'data ostatniej wpłaty', 'title'=>'LAST_PAY_DATE');
  1181. $cols['LAST_PAY_VALUE'] = array('label'=>'kwota ostatniej wpłaty', 'title'=>'LAST_PAY_VALUE');
  1182. $cols['PAY_TERM'] = array('label'=>'termin płatności', 'title'=>'PAY_TERM');
  1183. $cols['ACCOUNT_NUMBER'] = array('label'=>'nr konta', 'title'=>'ACCOUNT_NUMBER');
  1184. $cols['SERVICES_STREETS'] = array('label'=>'adresy usług', 'title'=>'SERVICES_STREETS');
  1185. $cols['IS_MOVED_TO_VECTRA'] = array('label'=>'Przeniesienie do Vectra', 'title'=>'IS_MOVED_TO_VECTRA');
  1186. $cols['HAS_ACTIVE_NET'] = array('label'=>'NET', 'title'=>'Aktywne usługi NET');
  1187. $cols['HAS_ACTIVE_TV'] = array('label'=>'TV', 'title'=>'Aktywne uslugi TV');
  1188. $out_cols = array();
  1189. foreach ($cols as $k_field => $v_params) {
  1190. $out_cols[] = '"' . $v_params['label'] . '"';
  1191. }
  1192. echo implode(";", $out_cols) . "\n";
  1193. foreach ($items as $k_id => $user) {
  1194. $out_cols = array();
  1195. $out_cols[] = '"' . $k_id . '"';
  1196. $out_cols[] = '"' . $user->is_firma . '"';
  1197. if ($user->BILLING_OWNER == 1) {
  1198. $out_cols[] = '"' . 'BN' . '"';
  1199. } else if ($user->BILLING_OWNER == 2) {
  1200. $out_cols[] = '"' . 'ND' . '"';
  1201. } else {
  1202. $out_cols[] = '"' . '0' . '"';
  1203. }
  1204. $out_cols[] = '"' . (($user->STATUS == 9)? "Z" : "0") . '"';
  1205. $out_cols[] = '"' . $user->P_NAME.' '.$user->P_NAME_SECOND . '"';
  1206. $out_cols[] = '"' . "ul. {$user->P_ADDRESS_STREET} {$user->P_ADDRESS_HOUSE}/{$user->P_ADDRESS_HOME}, {$user->P_ADDRESS_POST_CODE} {$user->P_ADDRESS_CITY}" . '"';
  1207. if ($user->P_ADRESS_KORESP_1282) {
  1208. $out_cols[] = '"' . $user->P_ADRESS_KORESP_1282 . '"';
  1209. } else {
  1210. $out_cols[] = '""';
  1211. }
  1212. $out_cols[] = '"' . $user->P_PHONE . '"';
  1213. $out_cols[] = '"' . $user->user_mail_contact . '"';
  1214. $out_cols[] = '"' . $user->P_PESEL . '"';
  1215. $out_cols[] = '"' . $user->A_STATUS . '"';
  1216. $out_cols[] = '"' . $user->A_STATUS_UPDATE_DATE . '"';
  1217. $out_cols[] = '"' . (($user->PAY_SALDO != 0)? "{$user->PAY_SALDO} zł" : "0") . '"';
  1218. $out_cols[] = '"' . (($user->PAY_SALDO_30_DNI != 0)? "{$user->PAY_SALDO_30_DNI} zł" : "0") . '"';
  1219. $out_cols[] = '"' . (($user->PAY_SALDO_ISSUED != 0)? "{$user->PAY_SALDO_ISSUED} zł" : "0") . '"';
  1220. $out_cols[] = '"' . $user->PAY_FVAT . '"';
  1221. $out_cols[] = '"' . (($user->PAY_DATE_FIRST_FVAT != '0000-00-00')? $user->PAY_DATE_FIRST_FVAT : '') . '"';
  1222. $out_cols[] = '"' . (($user->PAY_DATE != '0000-00-00')? $user->PAY_DATE : '') . '"';
  1223. $out_cols[] = '"' . $user->LAST_FVAT_VALUE . '"';
  1224. $out_cols[] = '"' . (($user->LAST_PAY_DATE && $user->LAST_PAY_DATE != '0000-00-00')? $user->LAST_PAY_DATE : '---') . '"';
  1225. $out_cols[] = '"' . $user->LAST_PAY_VALUE . '"';
  1226. $out_cols[] = '"' . (($user->PAY_TERM != '0000-00-00')? $user->PAY_TERM : '') . '"';
  1227. $out_cols[] = '"' . $user->ACCOUNT_NUMBER . '"';
  1228. $out_cols[] = '"' . $user->SERVICES_STREETS . '"';
  1229. $out_cols[] = '"' . (($user->IS_MOVED_TO_VECTRA)? 'TAK' : 'NIE') . '"';
  1230. $out_cols[] = '"' . $user->HAS_ACTIVE_NET . '"';
  1231. $out_cols[] = '"' . $user->HAS_ACTIVE_TV . '"';
  1232. echo implode(";", $out_cols) . "\n";
  1233. }
  1234. }
  1235. public static function form($q = '') {
  1236. SEF("MENU");
  1237. MENU();
  1238. echo'<div class="box box-blue">';
  1239. echo'<form action="" method="get">';
  1240. echo'<input type="hidden" name="'."MENU_INIT".'" value="'."USERS2_WINDYKACJA_STATUS".'" />';
  1241. echo'<p style="margin:0;">'."Wyszukaj klienta: ";
  1242. echo'<input type="text" name="'."q".'" value="'.htmlspecialchars($q).'" />';
  1243. echo " ".'<em>'."(imie, nazwisko lub numer klineta)".'</em>';//, adres
  1244. echo " ".'<input type="submit" value="'."szukaj".'" />';
  1245. echo'</p>';
  1246. echo'</form>';
  1247. echo'</div>';// .box-blue
  1248. }
  1249. public static function css() {
  1250. echo'<style type="text/css">'."
  1251. body{font-family:arial;line-height:1.4;}
  1252. .box{border:1px solid #999;padding:5px;margin:5px;}
  1253. .box-center{border:1px solid #999;padding:5px;margin:5px auto;}
  1254. .box-silver{border-color:#999;}
  1255. .box-red{border-color:#f00;}
  1256. .box-blue{border-color:#00f;}
  1257. .box-green{border-color:#008000;}
  1258. .box-hover-active{background:#fff;border-color:#999;}
  1259. .box-hover-active:hover{background:#eee;border-color:#000;}
  1260. .btn-box{margin:0 2px 0 0;padding:0 3px;background:#bbb;color:#fff;text-decoration:none;border:0;font-weight:bold;}
  1261. .tbl-page-nav{font-size:small;}
  1262. .tbl-page-nav a{font-size:small; text-decoration:none;}
  1263. .tbl-page-nav a:hover{background-color:#eee;}
  1264. .tbl-view {margin:0;font-size:small;}
  1265. .tbl-view caption{text-align:left;font-style:italic;font-size:medium;}
  1266. .tbl-view caption em{padding:0 5px;font-size:13px;font-style:normal;}
  1267. .tbl-view th{padding:0 3px;font-size:small;}
  1268. .tbl-view td{padding:0 3px;}
  1269. .tbl-view .r{text-align:right;}
  1270. .tbl-view thead th {background:#F3F3F3;}
  1271. .tbl-view thead td {background:#F3F3F3;}
  1272. .historia-platnosci-filters thead td{text-align:center;}
  1273. .historia-platnosci-filters td.selected {background-color:#FFE6E9;}
  1274. .historia-platnosci-filters td:hover {background-color:#E6FFE6;}
  1275. .historia-platnosci-subfilters thead td{text-align:center;background:#fff;}
  1276. .historia-platnosci-subfilters td.selected {background-color:#FFE6E9;}
  1277. .historia-platnosci-subfilters td:hover {background-color:#E6FFE6;}
  1278. .tbl-td-top th,
  1279. .tbl-td-top td {vertical-align:top;}
  1280. ".'</style>';
  1281. }
  1282. public static function user_umowy(&$user) {
  1283. Lib::loadClass('Tree');
  1284. Lib::loadClass('TreeHelper');
  1285. // build tree by P_ID - array or 0
  1286. function Tree_Helper__create_tree_rec($p_id, &$items) {
  1287. static $rec_ind;
  1288. $rec_ind++;
  1289. $ret = array();
  1290. if (!array_key_exists($p_id, $items)) {
  1291. return false;
  1292. } else {
  1293. $r = $items[$p_id];
  1294. if (empty($r->sub)) {
  1295. return false;
  1296. }
  1297. foreach ($r->sub as $k_id => $v) {
  1298. $ret[$k_id] = Tree_Helper__create_tree_rec($k_id, $items);
  1299. }
  1300. return $ret;
  1301. }
  1302. }
  1303. function tree_callback__show_item_from_SERVICES(&$r, &$tree) {
  1304. $cls = array();
  1305. $cls[] = 'HANGUP_STATUS-' . $r->HANGUP_STATUS;
  1306. $cls = (!empty($cls))? ' class="'.implode(' ', $cls).'"' : '';
  1307. echo'<dl'.$cls.'>';
  1308. echo'<dt>';
  1309. $out_id = ($r->ID < 10)? '&nbsp;'.$r->ID.'' : $r->ID;
  1310. echo'<b class="item_id btn-box">'.$out_id.'</b>';
  1311. //echo'<a href="'."?MENU_INIT=IN7_MK_BAZA_DYSTRYBUCJI_EDIT&ARG1=EDIT&ARG1_VAL=".$r->ID.'" class="btn" title="'."Edit".'">'."E".'</a>';
  1312. $st_status_bg = '';
  1313. if ($r->A_STATUS == 'NORMAL') {
  1314. $st_status_bg = '#8F8;';
  1315. } else if ($r->A_STATUS == 'WAITING') {
  1316. $st_status_bg = '#F8F;';
  1317. } else if ($r->A_STATUS == 'DELETED') {
  1318. $st_status_bg = '#ccc;';
  1319. } else if ($r->A_STATUS == 'OFF_SOFT') {
  1320. $st_status_bg = '#F99;';
  1321. } else if ($r->A_STATUS == 'OFF_HARD') {
  1322. $st_status_bg = '#eee;';
  1323. }
  1324. $st_status_bg = ($st_status_bg)? 'background-color:'.$st_status_bg : '';
  1325. echo'<span class="desc">';
  1326. echo'<span class="btn-box" style="'.$st_status_bg.'">'.$r->A_STATUS.'</span>';
  1327. echo' <b style="color:#333;">'.$r->description.'</b>';
  1328. if ($r->ID_OFFERS) {
  1329. echo' <code>' . "(Nr oferty: {$r->ID_OFFERS})" . '</code>';
  1330. } else {
  1331. echo' <span style="color:#f00">'."Brak numeru oferty!".'</span>';
  1332. }
  1333. $st_status_bg = '';
  1334. if ($r->HANGUP_STATUS == 'NORMAL') {
  1335. $st_status_bg = 'background-color:#8F8;';
  1336. } else if ($r->HANGUP_STATUS == 'WAITING') {
  1337. $st_status_bg = 'background-color:#F8F;';
  1338. } else if ($r->HANGUP_STATUS == 'DELETED') {
  1339. $st_status_bg = 'background-color:#ccc;';
  1340. } else if ($r->HANGUP_STATUS == 'OFF_SOFT') {
  1341. $st_status_bg = 'background-color:#F99;';
  1342. } else if ($r->HANGUP_STATUS == 'OFF_HARD') {
  1343. $st_status_bg = 'background-color:#f00;color:#fff;';
  1344. }
  1345. echo ' <span class="btn-box" style="' . $st_status_bg . '">' . "{$r->HANGUP_STATUS} ({$r->HANGUP_FROM} - {$r->HANGUP_TILL}) - {$r->A_STATUS_DESC}" .'</span>';
  1346. echo'</span>';
  1347. echo'</dt>';
  1348. echo'</dl>'."\n";
  1349. }
  1350. $uslugi_l2 = Windykacja_StatsModel::get_uslugi_from_l2($user);
  1351. $umowy_l2 = Windykacja_StatsModel::get_umowy_from_l2($user);
  1352. $uslugi_l2_nieprzypisane = array();
  1353. foreach ($uslugi_l2 as $k_id => $h) {
  1354. $uslugi_l2_nieprzypisane[$k_id] = true;
  1355. }
  1356. if (is_array($umowy_l2) && !empty($umowy_l2)) {
  1357. if (is_array($uslugi_l2) && !empty($uslugi_l2)) {
  1358. foreach ($umowy_l2 as $k_umowa_ind => $h_umowa) {
  1359. $umowy_l2[$k_umowa_ind]['uslugi'] = array();
  1360. foreach ($uslugi_l2 as $k_id => $h_usluga) {
  1361. if ($h_usluga['ID_DEALS_TABLE'] == $h_umowa['ID']) {
  1362. $umowy_l2[$k_umowa_ind]['uslugi'][$k_id] = $h_usluga;
  1363. if (isset($uslugi_l2_nieprzypisane[$k_id])) unset($uslugi_l2_nieprzypisane[$k_id]);
  1364. }
  1365. }
  1366. }
  1367. }
  1368. }
  1369. echo'<style type="text/css">'."
  1370. .tbl-umowy-l2 .umowa-id{font-weight:bold;font-size:big;font-family:arial;}
  1371. .tbl-umowy-l2 .row-umowa td{border-top:2px solid #00f;}
  1372. .wind-status-old td,
  1373. .wind-status-old th {color:#666;}
  1374. ".'</style>';
  1375. $ARGS['ZAPISZ'] = true;
  1376. Lay_Html_Toggle::start("Aktualne umowy i usługi ", array('open'=>(($ARGS['ZAPISZ'])? false : true)));
  1377. //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">umowy_l2: ';print_r($umowy_l2);echo'</pre>';
  1378. echo'<table class="tbl-view tbl-umowy-l2" cellspacing="0" cellpadding="0" border="1">';
  1379. //echo'<caption>'."Aktualne umowy".'<em>'." (l2)".'</em>'.'</caption>';
  1380. if ($umowy_l2 == -1) {
  1381. echo'<tr><td>';
  1382. echo'<span style="color:red">'."Blad polaczenia do bazy dancyh webone_billing - Zasob [931]".'</span>';
  1383. echo'</td></tr>';
  1384. } else if (empty($umowy_l2)) {
  1385. echo'<tr><td>'."Brak umów.".'</td></tr>';
  1386. }
  1387. else {
  1388. $tbl_umowy_cols = 5;
  1389. echo'<thead>';
  1390. echo'<tr>';
  1391. echo'<th>'."Nr umowy".'</th>';
  1392. echo'<th>'."Prefix".'</th>';
  1393. echo'<th>'."Data umowy".'</th>';
  1394. echo'<th>'."Termin".'</th>';
  1395. echo'<th>'."".'</th>';
  1396. echo'</tr>';
  1397. echo'</thead>';
  1398. $t = 0;
  1399. foreach ($umowy_l2 as $h) {
  1400. echo'<tr class="row-umowa row-'.($t = 1 - $t).'">';
  1401. echo'<td class="r umowa-id">' . $h['P_DEALNUMBER'] . '</td>';
  1402. echo'<td>' . $h['P_DEALPREFIX'] . '</td>';
  1403. echo'<td class="r">' . $h['P_DEALDATE'] . '</td>';
  1404. echo'<td class="r">' . $h['P_DEALDATE_TERM'] . '</td>';
  1405. echo'<td>';
  1406. if ($h['Wcześniejszy Nr umowy']) echo "Wcześniejszy Nr umowy: ".$h['Wcześniejszy Nr umowy'].'<br />';// TODO: Undefined index
  1407. if ($h['DEALDESC']) echo "Notatki: ".$h['DEALDESC'].'<br />';
  1408. echo "Koniecznosc podpisania aneksu lub innego dokumentu: ".$h['ANEX_NEEDED'].'<br />';
  1409. echo "Data potwierdzenia podpisania aneksu/dokumentu: ".$h['ANEX_CONFIRM_DATE'].'<br />';
  1410. echo'</td>';
  1411. echo'</tr>';
  1412. if (!empty($h['uslugi'])) {
  1413. // TODO: make TREE by P_ID_SERVICES
  1414. $items = array();
  1415. foreach ($h['uslugi'] as $k_id_usluga => $h_suluga) {
  1416. $h_suluga['sub'] = array();
  1417. $items[$k_id_usluga] = (object)$h_suluga;
  1418. }
  1419. $uslugi_tree = array();// tree root
  1420. foreach ($items as $k_id => $r) {
  1421. if ($r->P_ID == 0) {
  1422. $uslugi_tree[$r->ID] = array();
  1423. if (array_key_exists($r->P_ID, $items)) {
  1424. $items[$r->P_ID]->sub[$r->ID] = true;
  1425. }
  1426. } else {// array
  1427. if (array_key_exists($r->P_ID, $items)) {
  1428. $items[$r->P_ID]->sub[$r->ID] = true;
  1429. }
  1430. }
  1431. }
  1432. ksort($uslugi_tree);
  1433. // set up has_childrens
  1434. foreach ($items as $k_id => $r) {
  1435. $items[$k_id]->has_childrens = !empty($r->sub);
  1436. }
  1437. foreach ($uslugi_tree as $k_id => $v_childrens) {
  1438. if (array_key_exists($k_id, $items)) {
  1439. $uslugi_tree[$k_id] = Tree_Helper__create_tree_rec($k_id, $items);
  1440. }
  1441. }
  1442. echo'<tr class="row-'.($t).'">';
  1443. echo'<td>'."&nbsp;".'</td>';
  1444. echo'<td colspan="'.($tbl_umowy_cols - 1).'" style="padding:0;">';
  1445. $tree = new Tree('SERVICES');
  1446. $tree->set_parent_id_col('P_ID');
  1447. $tree->set_param('show_item_callback', "tree_callback__show_item_from_SERVICES");
  1448. $tree->set_param('ajax', "NIE");
  1449. $tree->set_param('rozwin', true);
  1450. $tree->show_css();
  1451. $tree->show_js();
  1452. $_COOKIE[$tree->cookie_name] = implode(' ', array_keys($items));
  1453. echo "\n".'<div class="tree-wrap">'."\n";
  1454. $tree->show_rec_by_tree($uslugi_tree, $items);
  1455. echo '</div>'."\n";
  1456. echo'</td>';
  1457. echo'</tr>';
  1458. }
  1459. }
  1460. }
  1461. echo'</table>';
  1462. if (!empty($uslugi_l2_nieprzypisane)) {
  1463. echo'<table class="tbl-view tbl-umowy-l2" cellspacing="0" cellpadding="0" border="1">';
  1464. echo'<caption>'."Nieprzypisane usługi".'<em>'." (l2)".'</em>'.'</caption>';
  1465. echo'<head>';
  1466. echo'<tr>';
  1467. echo'<th>'."ID".'</th>';
  1468. echo'<th>'."usługa".'</th>';
  1469. echo'<th>'."status".'</th>';
  1470. echo'<th>'."nr umowy".'</th>';
  1471. echo'<th>'."id oferty".'</th>';
  1472. echo'</tr>';
  1473. echo'</head>';
  1474. foreach ($uslugi_l2_nieprzypisane as $k_id => $v_bool) {
  1475. $h_usluga = $uslugi_l2[$k_id];
  1476. echo'<tr>';
  1477. echo'<td class="r">' . $h_usluga['ID'] . '</td>';
  1478. echo'<td>' . $h_usluga['description'] . '</td>';
  1479. echo'<td>' . $h_usluga['A_STATUS_DESC'] . '</td>';
  1480. echo'<td class="r">' . '<b>';
  1481. if (array_key_exists($h['ID_DEALS_TABLE'], $umowy_l2)) {
  1482. echo $umowy_l2[$h['ID_DEALS_TABLE']]['P_DEALNUMBER'];
  1483. } else {
  1484. //TODO: get P_DEALNUMBER from DEALS_TABLE where ID = $h['ID_DEALS_TABLE']
  1485. }
  1486. echo'</b>' . '</td>';
  1487. echo'<td class="r">';
  1488. if ($h_usluga['ID_OFFERS']) {
  1489. echo'<code>' . $h_usluga['ID_OFFERS'] . '</code>';
  1490. } else {
  1491. echo'<span style="color:#f00">'."Brak!".'</span>';
  1492. }
  1493. echo'</td>';
  1494. echo'</tr>';
  1495. }
  1496. echo'</table>';
  1497. }
  1498. Lay_Html_Toggle::end();
  1499. $umowy_l3 = Windykacja_StatsModel::get_umowy_from_l3($user);
  1500. $ARGS['ZAPISZ'] = true;
  1501. Lay_Html_Toggle::start("Aktualne usługi".'<em>'." (l3)".'</em>', array('open'=>(($ARGS['ZAPISZ'])? false : true)));
  1502. //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">umowy_l3: ';print_r($umowy_l3);echo'</pre>';
  1503. echo'<table class="tbl-view tbl-umowy-l2" cellspacing="0" cellpadding="0" border="1">';
  1504. if (empty($umowy_l3)) {
  1505. echo'<tr><td>'."Brak usług.".'</td></tr>';
  1506. }
  1507. else {
  1508. echo'<thead>';
  1509. echo'<tr>';
  1510. echo'<th rowspan="2">'."ID".'</th>';
  1511. echo'<th rowspan="2">'."status".'</th>';
  1512. echo'<th rowspan="2">'."data dok".'</th>';
  1513. echo'<th rowspan="2">'."adres".'</th>';
  1514. echo'<th rowspan="2">'."usługa".'</th>';
  1515. echo'<th rowspan="2">'."S_OTHER_INFO".'</th>';
  1516. echo'<th colspan="2" title="'."ID_BILLING_USERS".'">'. "nr klienta" .'</th>';
  1517. echo'<th colspan="2" title="'."ID_SERVICES".'">'."nr usługi".'</th>';
  1518. echo'<th colspan="2" title="'."P_OFFER_ID".'">'."nr oferty".'</th>';
  1519. echo'<th colspan="2" title="'."P_DEAL_DATE".'">'."data umowy".'</th>';
  1520. echo'<th colspan="2">'."nr umowy".'</th>';
  1521. echo'<th colspan="2">'."termin umowy".'</th>';
  1522. echo'<th colspan="2" title="'."MONTH COST".'">'."abonament".'</th>';
  1523. echo'<th rowspan="2">'."INICJALY HANDLOWCA".'</th>';
  1524. echo'<th rowspan="2">'."RODZAJ DZIALANIA HANDLOWEGO".'</th>';
  1525. echo'</tr>';
  1526. echo'<tr>';
  1527. echo'<td>'."OLD".'</td>';
  1528. echo'<td>'."NEW".'</td>';
  1529. echo'<td>'."OLD".'</td>';
  1530. echo'<td>'."NEW".'</td>';
  1531. echo'<td>'."OLD".'</td>';
  1532. echo'<td>'."NEW".'</td>';
  1533. echo'<td>'."OLD".'</td>';
  1534. echo'<td>'."NEW".'</td>';
  1535. echo'<td>'."OLD".'</td>';
  1536. echo'<td>'."NEW".'</td>';
  1537. echo'<td>'."OLD".'</td>';
  1538. echo'<td>'."NEW".'</td>';
  1539. echo'<td>'."OLD".'</td>';
  1540. echo'<td>'."NEW".'</td>';
  1541. echo'</tr>';
  1542. echo'</thead>';
  1543. foreach ($umowy_l3 as $h) {
  1544. echo'<tr>';
  1545. echo'<td>' . $h['ID'] . '</td>';
  1546. echo'<td>' . $h['A_STATUS'] . '</td>';
  1547. echo'<td>' . '<nobr>' . $h['DATA_DOK'] . '</nobr>' . '</td>';
  1548. echo'<td>' . $h['S_ADDRESS_STREET'] . '</td>';
  1549. echo'<td>' . '<b>' . $h['P_SERVICE'] . '</b>' . '</td>';
  1550. echo'<td>' . $h['S_OTHER_INFO'] . '</td>';
  1551. echo'<td>' . $h['ID_BILLING_USERS_OLD'] . '</td>';
  1552. echo'<td>' . $h['ID_BILLING_USERS_NEW'] . '</td>';
  1553. echo'<td>' . $h['ID_SERVICES_OLD'] . '</td>';
  1554. echo'<td>' . $h['ID_SERVICES_NEW'] . '</td>';
  1555. echo'<td>' . $h['P_OFFER_ID_OLD'] . '</td>';
  1556. echo'<td>' . $h['P_OFFER_ID_NEW'] . '</td>';
  1557. echo'<td>' . '<nobr>' . $h['P_DEAL_DATE_OLD'] . '</nobr>' . '</td>';
  1558. echo'<td>' . '<nobr>' . $h['P_DEAL_DATE_NEW'] . '</nobr>' . '</td>';
  1559. echo'<td>' . $h['P_DEALNUMBER_OLD'] . '</td>';
  1560. echo'<td>' . $h['P_DEALNUMBER_NEW'] . '</td>';
  1561. echo'<td>' . '<nobr>' . $h['P_DEALTERM_OLD'] . '</nobr>' . '</td>';
  1562. echo'<td>' . '<nobr>' . $h['P_DEALTERM_NEW'] . '</nobr>' . '</td>';
  1563. echo'<td>' . $h['MONTH_COST_OLD'] . '</td>';
  1564. echo'<td>' . $h['MONTH_COST_NEW'] . '</td>';
  1565. echo'<td>' . $h['INICJALY_HANDLOWCA'] . '</td>';
  1566. echo'<td>' . $h['RODZAJ_DZIALANIA_HANDLOWEGO'] . '</td>';
  1567. echo'</tr>';
  1568. }
  1569. }
  1570. echo'</table>';
  1571. Lay_Html_Toggle::end();
  1572. }
  1573. public static function user_historia_platnosci(&$user) {
  1574. ?>
  1575. <style type="text/css">
  1576. .hide .to-hide{display:none;}
  1577. .may-hide .btn-hide{display:inline;padding:0 5px;border:1px solid #bbb;}
  1578. .may-hide .btn-show{display:none;padding:0 5px;border:1px solid #bbb;}
  1579. .hide .btn-hide{display:none;}
  1580. .hide .btn-show{display:inline;}
  1581. </style>
  1582. <?php
  1583. Lay_Html_Toggle::show_js();
  1584. $billing_docs = Windykacja_StatsModel::get_bill_dosc_by_date($user);
  1585. // add events
  1586. $umowy_l2 = Windykacja_StatsModel::get_umowy_from_l2($user);
  1587. //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">billing_docs ';print_r($billing_docs);echo'</pre>';
  1588. //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">billing_docs ';print_r(reset($billing_docs));echo'</pre>';
  1589. //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">umowy_l2 ';print_r($umowy_l2);echo'</pre>';
  1590. if (!empty($umowy_l2)) {
  1591. foreach ($umowy_l2 as $h) {
  1592. $billing_docs->add_event($h['P_DEALDATE'], 'UMOWA', $h);
  1593. if ($h['P_DEALDATE_TERM'] != '0000-00-00') {// < date('Y-m-d')) {
  1594. $billing_docs->add_event($h['P_DEALDATE_TERM'], 'KONIEC UMOWY', $h);
  1595. }
  1596. }
  1597. }
  1598. $user_hist_events = Windykacja_StatsHelper::get_user_hist_status_events($user);
  1599. if (!empty($user_hist_events)) {
  1600. foreach ($user_hist_events as $v_hist) {
  1601. $bill_doc = (array)$v_hist;
  1602. $billing_docs->add_event($v_hist->A_STATUS_UPDATE_DATE, 'HIST_STATUS', $bill_doc);
  1603. }
  1604. }
  1605. $user_hist_events = Windykacja_StatsHelper::get_user_hist_phone_events($user);
  1606. if (!empty($user_hist_events)) {
  1607. foreach ($user_hist_events as $v_hist) {
  1608. $bill_doc = (array)$v_hist;
  1609. $billing_docs->add_event(substr($v_hist->A_RECORD_UPDATE_DATE, 0, 10), 'HIST_PHONE', $bill_doc);
  1610. }
  1611. }
  1612. $user_hist_events = Windykacja_StatsHelper::get_user_bad_address_events($user);
  1613. if (!empty($user_hist_events)) {
  1614. foreach ($user_hist_events as $v_hist) {
  1615. $bill_doc = (array)$v_hist;
  1616. $billing_docs->add_event(substr($v_hist->A_RECORD_UPDATE_DATE, 0, 10), 'HIST_BAD_ADDRESS', $bill_doc);
  1617. }
  1618. }
  1619. // add today
  1620. $bill_doc = array();
  1621. $bill_doc['saldo'] = $billing_docs->get_saldo();
  1622. $billing_docs->add_event(date('Y-m-d'), 'TODAY', $bill_doc);
  1623. $billing_docs->sort_docs();
  1624. //$billing_docs = array_reverse($billing_docs, true);
  1625. //echo'<pre style="max-height:300px;overflow:auto;border:1px solid red;">billing_docs: ';print_r($billing_docs);echo'</pre>';
  1626. $billing_docs_arr = $billing_docs->get_docs();
  1627. $types_finanse = array();
  1628. $types_finanse[] = 'KW';
  1629. $types_finanse[] = 'KP';
  1630. $types_finanse[] = 'WB_MASS';
  1631. $types_finanse[] = 'WB';
  1632. $types_finanse[] = 'KORV';
  1633. $types_finanse[] = 'FVAT';
  1634. $saldo_all = 0;
  1635. $out_tbl = array();
  1636. //echo'<pre>';print_r($billing_docs_arr);echo'</pre>';
  1637. foreach ($billing_docs_arr as $k_data => $v_docs_arr) {
  1638. foreach ($v_docs_arr as $k_ind => $v_doc) {
  1639. $out_tr = array();
  1640. $out_tr['data'] = $k_data;
  1641. if ($k_data == date("Y-m-d")) $out_tr['class'] = 'today';
  1642. $out_tr['ID'] = '';
  1643. $out_tr['nr'] = '';
  1644. $out_tr['winien'] = '';
  1645. $out_tr['ma'] = '';
  1646. $out_tr['saldo'] = '';
  1647. $out_tr['saldo_all'] = '';
  1648. if ($v_doc->get_class() == 'BILLING') {
  1649. $saldo_all += $v_doc->get_saldo();
  1650. $out_tr['ID'] = $v_doc->get_type();
  1651. $type_desc = Windykacja_StatsModel::get_billing_type_desc($v_doc->get_type());
  1652. if ($type_desc) {
  1653. if ($v_doc->get_type() == 'FVAT') $type_desc .= "\n Wystawiona: ".$v_doc->get('BILL_DATE')."\n Termin płatności: ".$v_doc->get('PAYMENT_TERM');
  1654. $out_tr['ID'] = '<span title="'.$type_desc.'">'.$out_tr['ID'].'</span>';
  1655. // TODO: podglad faktury
  1656. //if ($h['type'] == 'FVAT') $out_tr['ID'] .= ' <a href="'."?MENU_INIT=USERS2_WINDYKACJA_STATUS&_user_id=".$user->ID."&task=view_faktura&id=".$h['ID'].'" target="_blank">'.'<img src="'."icon/search.png".'" alt="'."U".'" title="'."Podgląd faktury".'" />'.'</a>';
  1657. }
  1658. $docNr = $v_doc->get('nr');
  1659. $docNrLabel = $v_doc->get('NUMBER') . '/' . $v_doc->get('ID_BILLING_PREFIXES');
  1660. /* links fomr l1:
  1661. * FV: https://l1.webone.pl/modules/make_billing/edit.php?mod=make_billing&form=html_faktura&adm=edit&uid=4014&fpos=&dz=&close=0&doc=799413&doctype=1
  1662. * KOR: https://l1.webone.pl/modules/make_billing/edit.php?mod=make_billing&form=html_faktura_korekta&adm=edit&uid=4014&fpos=&dz=&close=0&doc=809557&doctype=3
  1663. */
  1664. if ('FVAT' == $v_doc->get_type()) {
  1665. $out_tr['ID'] .= ' <a href="index.php?FUNCTION_INIT=bm_show_document&ARG1_VAL=' . $docNr . '" target="_blank">'."({$docNrLabel})".'</a>';
  1666. }
  1667. else if ('KORV' == $v_doc->get_type()) {
  1668. // https://biuro.biall-net.pl/dev-pl/se-master/index.php?FUNCTION_INIT=bm_show_document&ARG1_VAL=809557
  1669. $remoteFvNum = $v_doc->get('FV_NUMBER');
  1670. $korNr = $v_doc->get('ID_BILLING_NUMBERS');
  1671. $korTitle = "Korekta dotycząca faktury nr: {$remoteFvNum}";
  1672. $out_tr['ID'] .= ' <a href="index.php?FUNCTION_INIT=bm_show_document&ARG1_VAL=' . $korNr . '" target="_blank" title="'.$korTitle.'">'."({$docNrLabel})".'</a>';
  1673. }
  1674. $out_tr['nr'] = $docNrLabel;
  1675. $out_tr['winien'] = number_format($v_doc->get('WINIEN'), 2, ',', ' ');
  1676. $out_tr['ma'] = number_format($v_doc->get('MA'), 2, ',', ' ');
  1677. $out_tr['saldo'] = number_format($v_doc->get_saldo(), 2, ',', ' ');
  1678. $out_tr['saldo_all'] = number_format($saldo_all, 2, ',', ' ');
  1679. // style
  1680. if ($out_tr['winien'] == '0,00') $out_tr['winien'] = '<span style="color:#666;">' . $out_tr['winien'] . '</span>';
  1681. if ($out_tr['ma'] == '0,00') $out_tr['ma'] = '<span style="color:#666;">' . $out_tr['ma'] . '</span>';
  1682. }
  1683. else if ($v_doc->get_class() == 'EVENT') {
  1684. if ($v_doc->get_type() == 'TODAY') {
  1685. $out_tr['class'] = 'today';
  1686. $vDocSaldoData = $v_doc->get_data();
  1687. $v_doc_saldo = V::get('saldo', '', $vDocSaldoData);
  1688. $out_tr['saldo_all'] = number_format($v_doc_saldo, 2, ',', ' ');
  1689. }
  1690. else if ($v_doc->get_type() == 'HIST_STATUS') {
  1691. // search for koresp files
  1692. // TODO: mv to ::get_koresp_file($id_koresp);
  1693. $id_koresp = intval($v_doc->get('ID_KORESP'));
  1694. $found_files = array();
  1695. if(0){// turn off - old server
  1696. $CNF = new stdClass();
  1697. $CNF->koresp_dir = '/home/samba/BIALL-NET/PISMA/OUT';
  1698. $CNF->koresp_www_path = '/se-dev/PISMA/OUT';
  1699. if ($id_koresp > 0) {
  1700. $pattern = $CNF->koresp_dir . '/' . '*.' . $id_koresp . '.pdf';
  1701. $file_tmp_list = glob($pattern);//, GLOB_NOSORT);
  1702. if (!empty($file_tmp_list)) {
  1703. foreach ($file_tmp_list as $v_file) {
  1704. $test_file = explode('/', $v_file);
  1705. $test_file = end($test_file);
  1706. $found_files[] = $CNF->koresp_www_path . '/' . $test_file;
  1707. }
  1708. }
  1709. }
  1710. // return $found_files;
  1711. }
  1712. switch ($v_doc->get('A_STATUS')) {
  1713. case 'WAITING':
  1714. $out_tr['add'] = "powrót do oczekujących";
  1715. break;
  1716. case 'waiting-wezwanie2':
  1717. // TODO: get('LAST_ID_KORESP_WEZWANIE1')
  1718. $out_tr['add'] = "wezwanie do zapłaty - ID_KORESP: <b>".$v_doc->get('ID_KORESP')."</b> <em>(termin: ".$v_doc->get('PAY_TERM').")</em> ";
  1719. break;
  1720. case 'waiting-krd':
  1721. $out_tr['add'] = "wezwanie do zapłaty ost. - ID_KORESP: <b>".$v_doc->get('ID_KORESP')."</b> <em>(termin: ".$v_doc->get('PAY_TERM').")</em> ";
  1722. break;
  1723. case 'N/S;':
  1724. $out_tr['add'] = "ID_KORESP: <b>".$v_doc->get('ID_KORESP')."</b> <em>(" . $v_doc->get('K_ZAWARTOS') . ")</em>";// TODO: get opis from koresp
  1725. //echo '('.$v_doc->get('ID_KORESP').', '.$v_doc->get('K_ZAWARTOS').'='.substr($v_doc->get('K_ZAWARTOS'), 0, strlen('rozwiazanie umowy')).')';
  1726. if ($v_doc->get('ID_KORESP') > 0 && substr($v_doc->get('params'), 0, strlen('rozwiazanie umowy')) == 'rozwiazanie umowy') {
  1727. $out_tr['add'] .= " " . '<a href="'."?MENU_INIT=USERS2_WINDYKACJA_STATUS&q=".V::get('q','', $_REQUEST)."&task="."bok_rozwiazanie_umowy_print"."&user_id={$user->ID}&id_koresp=".$v_doc->get('ID_KORESP').'" target="_blank" title="' . "Generuj druk rozwiązania umowy" . '">' . "druk" . '</a>';
  1728. }
  1729. break;
  1730. default:
  1731. $out_tr['add'] = "zmiana statusu na: ".$v_doc->get('A_STATUS')." ";
  1732. }
  1733. if ($id_koresp > 0) {
  1734. if (!empty($out_tr['add']) && !empty($found_files)) {
  1735. $add_link_koresp = reset($found_files);// first file from koresp
  1736. $out_tr['add'] .= " " . '<a href="' . $add_link_koresp . '" target="_blank">' . "P" . '</a>';
  1737. }
  1738. //$koresp_edit_link = "?MENU_INIT=IN7_DZIENNIK_KORESP_EDIT&ARG1=EDIT&ARG1_VAL=" . $id_koresp;
  1739. Lib::loadClass('ProcesHelper');
  1740. $zasobKorespID = ProcesHelper::getZasobTableID('IN7_DZIENNIK_KORESP');
  1741. $koresp_edit_link = "index.php?MENU_INIT=VIEWTABLE_AJAX&ZASOB_ID={$zasobKorespID}#EDIT/{$id_koresp}";
  1742. $out_tr['add'] .= " " . '<a href="' . $koresp_edit_link . '" title="' . "Edycja KORESP. ({$id_koresp})" . '" target="_blank">' . "KOR" . '</a>';
  1743. }
  1744. }
  1745. else if ($v_doc->get_type() == 'HIST_PHONE') {
  1746. $date = $v_doc->get('PAY_TERM');
  1747. if ($date == 'N/S;') $date = '';
  1748. $lastPhoneStatus = $v_doc->get('LAST_PHONE_STATUS');
  1749. if ($lastPhoneStatus == 'N/S;') $lastPhoneStatus = '';
  1750. $lastSmsStatus = $v_doc->get('LAST_SMS_STATUS');
  1751. if ($lastSmsStatus == 'N/S;') $lastSmsStatus = '';
  1752. $lastMailStatus = $v_doc->get('LAST_MAIL_STATUS');
  1753. if ($lastMailStatus == 'N/S;') $lastMailStatus = '';
  1754. $lastUpdateDate = $v_doc->get('A_RECORD_UPDATE_DATE');
  1755. if (!empty($lastPhoneStatus)) {
  1756. switch ($lastPhoneStatus) {
  1757. case 'nie_zaplaci':
  1758. $out_tr['add'] = "nie zapłaci";
  1759. break;
  1760. case 'zaplaci_w_terminie':
  1761. $out_tr['add'] = "zapłaci w terminie {$date} " . '<em style="font-size:small;">' . "(ustalono {$lastUpdateDate})" . '</em>';
  1762. break;
  1763. case 'zaplaci_za_1mc':
  1764. $out_tr['add'] = "zapłaci miesiąc później {$date} " . '<em style="font-size:small;">' . "(ustalono {$lastUpdateDate})" . '</em>';
  1765. break;
  1766. case 'zaplaci_za_2mc':
  1767. $out_tr['add'] = "zapłaci 2 miesiące później {$date} " . '<em style="font-size:small;">' . "(ustalono {$lastUpdateDate})" . '</em>';
  1768. break;
  1769. case 'zaplaci_za_3mc':
  1770. $out_tr['add'] = "zapłaci 3 miesiące później {$date} " . '<em style="font-size:small;">' . "(ustalono {$lastUpdateDate})" . '</em>';
  1771. break;
  1772. default:
  1773. $out_tr['add'] = "kontakt z klientem: {$lastPhoneStatus} " . '<em style="font-size:small;">' . "(ustalono {$lastUpdateDate})" . '</em>';
  1774. }
  1775. } else if (!empty($lastSmsStatus)) {
  1776. $lastSmsId = $v_doc->get('LAST_SMS_MSG_ID');
  1777. $out_tr['add'] = "SMS: {$lastSmsStatus} " . '<em style="font-size:small;" title="' . "(wysłano {$lastUpdateDate}, {$lastSmsId})" . '">' . "(wysłano {$lastUpdateDate})" . '</em>';
  1778. } else if (!empty($lastMailStatus)) {
  1779. $lastMailId = $v_doc->get('LAST_MAIL_MSG_ID');
  1780. $out_tr['add'] = "MAIL: {$lastMailStatus} " . '<em style="font-size:small;" title="' . "(wysłano {$lastUpdateDate}, {$lastMailId})" . '">' . "(wysłano {$lastUpdateDate})" . '</em>';
  1781. }
  1782. } else if ($v_doc->get_type() == 'HIST_BAD_ADDRESS') {
  1783. if ($v_doc->get('BAD_ADDRESS')) {
  1784. $out_tr['add'] = "błędny adres zameldowania ";
  1785. } else {
  1786. $out_tr['add'] = "poprawa adresu zameldowania ";
  1787. }
  1788. if ($v_doc->get('ID_KORESP') > 0) {
  1789. $out_tr['add'] .= " - ID Koresp. (" . '<a href="' . "index.php?MENU_INIT=IN7_DZIENNIK_KORESP_EDIT&ARG1=EDIT&ARG1_VAL=" . $v_doc->get('ID_KORESP') . '" target="_blank">' . $v_doc->get('ID_KORESP') . '</a>' . ")";
  1790. }
  1791. } else {
  1792. $out_tr['ID'] = $v_doc->get_type().' <code style="font-size:10px">'."(".$v_doc->get('ID').")".'</code>';// TODO: dla KP,KW: ID_BILLING_NUMBERS zamiast ID
  1793. if ($v_doc->get_type() == 'UMOWA') {
  1794. $out_tr['add'] = "umowa nr <b>".$v_doc->get('P_DEALNUMBER')."</b> <em>(termin ".$v_doc->get('P_DEALDATE_TERM').")</em>";
  1795. } else if ($v_doc->get_type() == 'KONIEC UMOWY') {
  1796. $out_tr['add'] = "zakończenie umowy nr <b>".$v_doc->get('P_DEALNUMBER')."</b> <em>(z dnia ".$v_doc->get('P_DEALDATE').")</em>";
  1797. }
  1798. }
  1799. }
  1800. //$out_tbl[] = $out_tr;// add to the end
  1801. array_unshift($out_tbl, $out_tr);// add to the begining
  1802. }
  1803. }
  1804. echo'<style type="text/css">'."
  1805. .tbl-windykacja td{padding:0 5px;}
  1806. .tbl-windykacja .cell-data{white-space:nowrap;}
  1807. .tbl-windykacja .cell-winien{text-align:right;}
  1808. .tbl-windykacja .cell-ma{text-align:right;}
  1809. .tbl-windykacja .cell-saldo{text-align:right;}
  1810. .tbl-windykacja .cell-saldo_all{text-align:right; white-space:nowrap; background-color:#E5E5E5;}
  1811. .tbl-windykacja .cell-nr{font-family:monospace;text-align:right;}
  1812. .tbl-windykacja .change-year td{border-top:3px solid #00f;}
  1813. .tbl-windykacja .today td{background:#FFFF98;}
  1814. .tbl-windykacja .cell-add em{color:#666;}
  1815. ".'</style>';
  1816. $last_year = '';
  1817. $cols = array();
  1818. $cols['data'] = "data";
  1819. $cols['ID'] = "ID";
  1820. $cols['nr'] = "nr";
  1821. $cols['winien'] = "winien";
  1822. $cols['ma'] = "ma";
  1823. //$cols['saldo'] = "saldo";
  1824. $cols['saldo_all'] = "saldo";
  1825. $cols['add'] = "uwagi";
  1826. ?>
  1827. <h4>Historia klienta <small>(l1)</small></h4>
  1828. <table border="1" class="tbl-view tbl-windykacja" cellspacing="0" cellpadding="0">
  1829. <thead>
  1830. <tr>
  1831. <th>rok</th>
  1832. <?php foreach ($cols as $colName => $colLabel) : ?>
  1833. <th><?php echo $colLabel; ?></th>
  1834. <?php endforeach; ?>
  1835. </tr>
  1836. </thead>
  1837. <?php
  1838. foreach ($out_tbl as $out_tr) {
  1839. $change_year = false;
  1840. $k_data = $out_tr['data'];
  1841. $rok = substr($k_data, 0, 4);
  1842. if ($rok != $last_year) {
  1843. $change_year = true;
  1844. }
  1845. $cls = array();
  1846. if ($change_year) $cls[] = 'change-year';
  1847. if ($add_cls = V::get('class', '', $out_tr)) $cls[] = $add_cls;
  1848. $cls = (!empty($cls))? ' class="'.implode(' ', $cls).'"' : '';
  1849. echo'<tr'.$cls.'>';
  1850. echo'<td>';
  1851. echo ($change_year)? $rok : "&nbsp;";
  1852. echo'</td>';
  1853. $last_year = $rok;
  1854. foreach ($cols as $col_name => $col_label) {
  1855. //foreach ($out_tr as $k_col_name => $v_val) {
  1856. if (array_key_exists($col_name, $out_tr)) {
  1857. echo'<td class="'."cell-".$col_name.'">' . $out_tr[$col_name] . '</td>';
  1858. } else {
  1859. echo'<td>'."&nbsp;".'</td>';
  1860. }
  1861. }
  1862. echo'</tr>';
  1863. }
  1864. echo'</table>';
  1865. echo'<br />';
  1866. echo'<br />';
  1867. Windykacja_StatsHelper::update_stats($user, $billing_docs);
  1868. {// srv hist
  1869. $srvHist = array();
  1870. $db = DB::getDB();
  1871. $sql = "
  1872. select fvPos.`ID` as fvPos__ID
  1873. , fvPos.`DATE_FROM` as fvPos__DATE_FROM
  1874. , fvPos.`DATE_TO` as fvPos__DATE_TO
  1875. , fvPos.`ID_SERVICES` as fvPos__ID_SERVICES
  1876. , ( select srv.`NAME_LIST_SERVICES` from `billing2013`.`SERVICES` srv where srv.`ID` = fvPos.`ID_SERVICES` limit 1 ) as srv__NAME_LIST_SERVICES
  1877. , fvPos.`AMMOUNT` as fvPos__AMMOUNT
  1878. , fvPos.`PRICE` as fvPos__PRICE
  1879. , fvPos.`VAT` as fvPos__VAT
  1880. -- , fvPos.`ID_BILLS_FVAT` as fvPos__ID_BILLS_FVAT
  1881. , fvPos.`DESCR` as fvPos__DESCR
  1882. -- , fvPos.`id_list_services` as fvPos__id_list_services
  1883. -- , fvPos.`id_list_sww` as fvPos__id_list_sww
  1884. -- , fvPos.`VAT_NAME` as fvPos__VAT_NAME
  1885. -- , fvPos.`ID_OFFERS` as fvPos__ID_OFFERS
  1886. -- , 'fv', fv.*
  1887. -- , fv.`ID` as fv__ID
  1888. , fv.`ID_BILLING_NUMBERS` as fv__ID_BILLING_NUMBERS
  1889. -- , fv.`ID_BILLING_USERS` as fv__ID_BILLING_USERS
  1890. -- , fv.`id_owner` as fv__id_owner
  1891. , fv.`BILL_DATE` as fv__BILL_DATE
  1892. , fv.`SELL_DATE` as fv__SELL_DATE
  1893. -- , fv.`TIMESTAMP` as fv__TIMESTAMP
  1894. , fv.`PAYMENT_TERM` as fv__PAYMENT_TERM
  1895. -- , fv.`PAYMENT_TYPE` as fv__PAYMENT_TYPE
  1896. -- , fv.`ID_CURRENCY` as fv__ID_CURRENCY
  1897. -- , fv.`ID_FK_DEKRET` as fv__ID_FK_DEKRET
  1898. -- , fv.`ID_FK_ROZRACH` as fv__ID_FK_ROZRACH
  1899. -- , fv.`OPEN` as fv__OPEN
  1900. -- , fv.`FK_ZAKSIEG` as fv__FK_ZAKSIEG
  1901. , fv.`IF_KORV` as fv__IF_KORV
  1902. -- , 'fvNum', fvNum.*
  1903. -- , fvNum.`ID` as fvNum__ID
  1904. -- , fvNum.`TIMESTAMP` as fvNum__TIMESTAMP
  1905. -- , fvNum.`ID_BILLING_NUMBERS_TYPE` as fvNum__ID_BILLING_NUMBERS_TYPE
  1906. -- , fvNum.`ID_BILLING_PREFIXES` as fvNum__ID_BILLING_PREFIXES
  1907. , fvNum.`NUMBER` as fvNum__NUMBER
  1908. -- , fvNum.`ID_BILLING_USERS` as fvNum__ID_BILLING_USERS
  1909. , fvNum.`FOREIGN_ID_BILLING_NUMBERS` as fvNum__FOREIGN_ID_BILLING_NUMBERS
  1910. -- , fvNum.`U_ID` as fvNum__U_ID
  1911. -- , fvNum.`BILLING_OWNER` as fvNum__BILLING_OWNER
  1912. -- , 'korPos', korPos.*
  1913. , korPos.`ID` as korPos__ID
  1914. -- , korPos.`ID_BILLS_FVAT` as korPos__ID_BILLS_FVAT
  1915. , korPos.`DESCR` as korPos__DESCR
  1916. , korPos.`ID_SERVICES` as korPos__ID_SERVICES
  1917. , korPos.`DATE_FROM` as korPos__DATE_FROM
  1918. , korPos.`DATE_TO` as korPos__DATE_TO
  1919. , korPos.`AMMOUNT` as korPos__AMMOUNT
  1920. , korPos.`PRICE` as korPos__PRICE
  1921. , korPos.`VAT` as korPos__VAT
  1922. -- , korPos.`id_list_services` as korPos__id_list_services
  1923. -- , korPos.`id_list_sww` as korPos__id_list_sww
  1924. -- , korPos.`VAT_NAME` as korPos__VAT_NAME
  1925. -- , korPos.`N_DESCR` as korPos__N_DESCR
  1926. -- , korPos.`N_ID_SERVICES` as korPos__N_ID_SERVICES
  1927. -- , korPos.`N_DATE_FROM` as korPos__N_DATE_FROM
  1928. -- , korPos.`N_DATE_TO` as korPos__N_DATE_TO
  1929. -- , korPos.`N_AMMOUNT` as korPos__N_AMMOUNT
  1930. -- , korPos.`N_PRICE` as korPos__N_PRICE
  1931. -- , korPos.`N_VAT` as korPos__N_VAT
  1932. -- , korPos.`N_id_list_services` as korPos__N_id_list_services
  1933. -- , korPos.`N_id_list_sww` as korPos__N_id_list_sww
  1934. -- , korPos.`N_VAT_NAME` as korPos__N_VAT_NAME
  1935. , korPos.`TYP_KOREKTY` as korPos__TYP_KOREKTY
  1936. from `billing2013`.`BILLS_FVAT_POS` fvPos
  1937. join `billing2013`.`BILLS_FVAT` fv on ( fv.`ID` = fvPos.`ID_BILLS_FVAT` )
  1938. join `billing2013`.`BILLING_NUMBERS` fvNum on ( fvNum.`ID` = fv.`ID_BILLING_NUMBERS` )
  1939. left join `billing2013`.`BILLS_KORV_POS` korPos on (
  1940. korPos.`ID_BILLS_FVAT` = (
  1941. select kor.`ID`
  1942. from `billing2013`.`BILLS_KORV` kor
  1943. where kor.`REMOTE_ID_BILLING_NUMBERS` = fvNum.`ID`
  1944. )
  1945. and korPos.`ID_SERVICES` = fvPos.`ID_SERVICES`
  1946. )
  1947. where fv.`ID_BILLING_USERS` = '{$user->ID}'
  1948. order by fv.`ID` DESC
  1949. ";
  1950. //echo'<pre>srvHist:sql: ';print_r($sql);echo'</pre>';
  1951. $idxDates = array();
  1952. $idxSrv = array();
  1953. $idxHasKor = array();
  1954. $res = $db->query($sql);
  1955. while ($r = $db->fetch($res)) {
  1956. $srvHist[$r->fvPos__ID] = $r;
  1957. $month = substr($r->fv__BILL_DATE, 0, 7);
  1958. $idSrv = $r->fvPos__ID_SERVICES;
  1959. if (!empty($r->fv__BILL_DATE)) {
  1960. if (!array_key_exists($month, $idxDates)) $idxDates[$month] = array();
  1961. $idxDates[$month][$r->fvPos__ID] = $idSrv;
  1962. }
  1963. if (!empty($idSrv)) {
  1964. $idxSrv[$idSrv] = $r->srv__NAME_LIST_SERVICES;
  1965. }
  1966. if ($r->korPos__ID > 0) {
  1967. $isKorZero = ($r->korPos__AMMOUNT * $r->korPos__PRICE == -1 * $r->fvPos__AMMOUNT * $r->fvPos__PRICE);
  1968. $idxHasKor[$month][$idSrv][] = $isKorZero;
  1969. }
  1970. }
  1971. krsort($idxDates);
  1972. ?>
  1973. <div class="container">
  1974. <script>
  1975. function showHideSrvHist() {
  1976. jQuery('#srvHist').toggle();
  1977. return false;
  1978. }
  1979. </script>
  1980. <h3>Historia usług <button class="btn btn-xs btn-danger" onclick="return showHideSrvHist()">+/-</button></h3>
  1981. <table class="table table-bordered" id="srvHist" style="display:none">
  1982. <thead>
  1983. <tr>
  1984. <th style="padding:2px"><nobr class="pull-right">Usługi</nobr></th>
  1985. <?php foreach ($idxSrv as $idSrv => $srvType) : ?>
  1986. <th style="padding:2px"><?php echo $idSrv; ?></th>
  1987. <?php endforeach; ?>
  1988. </tr>
  1989. <tr>
  1990. <th style="padding:2px"><nobr>Data</nobr></th>
  1991. <?php foreach ($idxSrv as $idSrv => $srvType) : ?>
  1992. <th style="padding:2px"><?php echo $srvType; ?></th>
  1993. <?php endforeach; ?>
  1994. </tr>
  1995. </thead>
  1996. <tbody>
  1997. <?php foreach ($idxDates as $month => $posIds) : ?>
  1998. <tr>
  1999. <td style="padding:2px"><?php echo $month; ?></td>
  2000. <?php foreach ($idxSrv as $idSrv => $srvType) : ?>
  2001. <?php if (in_array($idSrv, $posIds)) : ?>
  2002. <?php if (!empty($idxHasKor[$month][$idSrv])) : ?>
  2003. <?php if (count($idxHasKor[$month][$idSrv]) > 1) : ?>
  2004. <td style="padding:2px" class="danger"><b title="Faktury i Korekty w tym na 0"><?php echo count($idxHasKor[$month][$idSrv]); ?> * FV (FV - KOR = 0)</b></td>
  2005. <?php elseif (true == $idxHasKor[$month][$idSrv][0]) : ?>
  2006. <td style="padding:2px" class="danger"><b title="Faktura i Korekta na 0">FV - KOR = 0</b></td>
  2007. <?php else : ?>
  2008. <td style="padding:2px" class="warning"><b title="Faktura i Korekta">FV - KOR &gt; 0</b></td>
  2009. <?php endif; ?>
  2010. <?php else : ?>
  2011. <td style="padding:2px" class="success"><b title="brak korekty">FV</b></td>
  2012. <?php endif; ?>
  2013. <?php else : ?>
  2014. <td style="padding:2px"><i class="muted">---</i></td>
  2015. <?php endif; ?>
  2016. <?php endforeach; ?>
  2017. </tr>
  2018. <?php endforeach; ?>
  2019. </tbody>
  2020. </table>
  2021. </div>
  2022. <?php
  2023. //echo'<pre>idxHasKor: ';print_r($idxHasKor);echo'</pre>';
  2024. //echo'<pre>idxDates: ';print_r($idxDates);echo'</pre>';
  2025. //echo'<pre>idxSrv: ';print_r($idxSrv);echo'</pre>';
  2026. //echo'<pre>srvHist: ';print_r($srvHist);echo'</pre>';
  2027. }// srv hist
  2028. }
  2029. public static function view_faktura($faktura_id) {
  2030. // https://l1.webone.pl/modules/make_billing/edit.php?mod=make_billing&form=make_faktura&adm=edit&uid=11381&fpos=&dz=
  2031. // https://l1.webone.pl/modules/make_billing/edit.php?mod=make_billing&form=html_faktura&adm=edit&uid=11381&fpos=&dz=&close=0&doc=483930&doctype=1
  2032. echo'{'.$faktura_id.'}';
  2033. }
  2034. public static function zadluzenia(&$user) {
  2035. $THIS_DATA_DO = null;// TODO: pobierac z PAY_TERM z tabeli USERS2_WINDYKACJA_STATUS
  2036. $post_sent = (!empty($_POST['sbmt']));
  2037. $post_DATA_DO = (isset($_POST['DATA_DO']))? $_POST['DATA_DO'] : date("Y-m-d", mktime(0,0,0,date('m'), date('d') + 14, date('Y')));
  2038. if (!$post_sent) {
  2039. echo'<table style="margin:10px 50px;padding:20px;border:1px solid blue;"><tr><td>';
  2040. echo'<form action="" method="post">';
  2041. $post_DATA_DO = (isset($_POST['DATA_DO']) && strlen($_POST['DATA_DO']) == 10)? $_POST['DATA_DO'] : date("Y-m-d", mktime(0,0,0,date('m'), date('d') + 14, date('Y')));
  2042. echo'<p>'."Termin płatności: ".'</p>';
  2043. echo'<input type="text" name="'."DATA_DO".'" value="'.$post_DATA_DO.'" />';
  2044. echo'<input type="submit" name="sbmt" value="'."Wyslij".'" />';
  2045. echo'</form>';
  2046. echo'</td></tr></table>';
  2047. return;
  2048. } else {
  2049. $THIS_DATA_DO = $post_DATA_DO;
  2050. }
  2051. self::wezwanie($user, $THIS_DATA_DO);
  2052. }
  2053. public static function wezwanie_ostateczne(&$user, $wezwanie_termin) {
  2054. self::wezwanie($user, $wezwanie_termin, true);
  2055. }
  2056. public static function zestawienie_vectra_nadplaty() {
  2057. $usersList = array();
  2058. $db = DB::getDB();
  2059. $sql_select = "
  2060. c.`ID` as ID
  2061. , c.`ID` as id_users
  2062. , c.`P_NAME`
  2063. , c.`P_NAME_SECOND`
  2064. , c.`P_ADDRESS_STREET`
  2065. , c.`P_ADDRESS_HOME`
  2066. , c.`P_ADDRESS_HOUSE`
  2067. , c.`P_ADDRESS_CITY`
  2068. , c.`P_ADDRESS_POST_CODE`
  2069. , c.`P_ADDRESS_REGION`
  2070. , c.`P_PESEL`
  2071. , c.`P_PHONE`
  2072. , c.`P_OTHER_DOC`
  2073. , c.`user_mail_contact`
  2074. , c.`is_firma`
  2075. , w.`ID` as WINDYKACJA_ID
  2076. , w.`ID_BILLING_USERS`
  2077. , w.`A_STATUS`
  2078. , w.`A_STATUS_UPDATE_DATE`
  2079. , w.`USER_PAY_TERM_ADD`
  2080. , w.`L_APPOITMENT_DATE`
  2081. , w.`L_APPOITMENT_USER`
  2082. , w.`L_APPOITMENT_INFO`
  2083. , w.`PAY_DATE`
  2084. , w.`PAY_DATE_FIRST_FVAT`
  2085. , w.`PAY_TERM`
  2086. , w.`PAY_SALDO`
  2087. , w.`PAY_FVAT`
  2088. , w.`wezwanie1_DATE`
  2089. , w.`wezwanie2_DATE`
  2090. , w.`ID_KORESP`
  2091. , w.`LAST_PAY_DATE`
  2092. , w.`BAD_ADDRESS`
  2093. , c.`STATUS`
  2094. , c.`BILLING_OWNER`
  2095. , w.`NR_SPRAWY_KRD`
  2096. , w.`NR_SPRAWY_SAD`
  2097. , w.`NR_SPRAWY_KOMORNIK`
  2098. , w.`LAST_FVAT_PAY_TERM`
  2099. ";
  2100. $sqlWhereAdd = "
  2101. and (w.`LAST_FVAT_PAY_TERM`>='2014-12-01'
  2102. or ( w.`LAST_FVAT_PAY_TERM`='0000-00-00'
  2103. and w.`LAST_FVAT_SELL_DATE`>='2014-12-01'
  2104. )
  2105. )
  2106. and c.`ID_BILLING_PREFIXES` in('0','1')
  2107. and c.`BILLING_OWNER` in('1')
  2108. ";
  2109. $sql = "select {$sql_select}
  2110. from `USERS2_WINDYKACJA_STATUS` as w
  2111. join `COMPANIES` as c on(c.`ID`=w.`ID_BILLING_USERS`)
  2112. where c.`A_ADM_COMPANY`='19994_PODMIOT_Vectra_wlasciciel'
  2113. {$sqlWhereAdd}
  2114. ";
  2115. if (V::get('DBG_SQL', '', $_GET)) {
  2116. header('Content-Type: text/plain; charset=utf-8');
  2117. echo $sql;
  2118. exit;
  2119. }
  2120. $res = $db->query($sql);
  2121. if ($db->has_errors()) {
  2122. print_r($db->get_errors());
  2123. die('die L.' . __LINE__);
  2124. }
  2125. while ($r = $db->fetch($res)) {
  2126. $usersList[$r->ID_BILLING_USERS] = $r;
  2127. }
  2128. if (V::get('DBG_ILE', '', $_GET)) {
  2129. echo '<p>ilosc: ' . count($usersList) . '</p>' . '<pre style="max-height:200px;overflow:auto">';
  2130. print_r($usersList);
  2131. echo '</pre>';
  2132. exit;
  2133. }
  2134. if (V::get('DBG_IDS', '', $_GET)) {
  2135. header('Content-Type: text/plain; charset=utf-8');
  2136. echo 'ilosc: ' . count($usersList) . "\n";
  2137. echo implode("\n", array_keys($usersList));
  2138. exit;
  2139. }
  2140. $limit = V::get('DBG_LOOP_LIMIT', 100000, $_GET, 'int');
  2141. if(V::get('DBG_LOOP_LIMIT', 0, $_GET, 'int')){echo "Loimit: {$limit}\n";}
  2142. $date_limit = V::get('DATE_LIMIT', date("Y-m-d"), $_GET);
  2143. $date_limit_from = '2014-12-01';
  2144. $csvFileName = "Zestawienie-nadplaty-do-{$date_limit}";
  2145. header('Content-Type: text/csv; charset=utf-8');
  2146. header("Content-Disposition: attachment; filename={$csvFileName}.csv");
  2147. $showCsvHeader = true;
  2148. foreach ($usersList as $userId => $user) {
  2149. $billing_docs = Windykacja_StatsModel::get_bill_dosc_by_date($user, $date_limit);
  2150. $billing_docs->sort_docs();
  2151. $saldo = $billing_docs->get_saldo();
  2152. if ($saldo <= 0) {
  2153. continue;
  2154. }
  2155. if(V::get('DBG_LOOP', '', $_GET)){echo "{$userId}:{$saldo}\n";}
  2156. $incomeDocs = $billing_docs->getLastIncomeDocsForSaldo($saldo);
  2157. if(V::get('DBG_LOOP', '', $_GET)){print_r($incomeDocs);echo "\n";}
  2158. //Windykacja_StatsModel::update_doc_number($incomeDocs);
  2159. $out_tbl = array();
  2160. foreach ($incomeDocs as $v_fvat) {
  2161. $out_tr = array();
  2162. $out_tr['ID'] = $v_fvat['ID'];
  2163. $out_tr['nr'] = $v_fvat['NUMBER'] . '/' . $v_fvat['ID_BILLING_PREFIXES'];
  2164. $out_tr['wplata'] = number_format($v_fvat['MA'], 2, '.', '');
  2165. $out_tr['data'] = $v_fvat['BILL_DATE'];
  2166. $out_tr['pozostalo'] = number_format($v_fvat['MA_POZOSTALO'], 2, '.', '');
  2167. array_push($out_tbl, $out_tr);// add to the begining
  2168. }
  2169. {// csv
  2170. $csvLine = array();
  2171. $csvLine[] = '"id klienta"';
  2172. $csvLine[] = '"nr dokumentu"';
  2173. $csvLine[] = '"kwota brutto"';
  2174. $csvLine[] = '"data wpłaty"';
  2175. $csvLine[] = '"pozostało"';
  2176. if ($showCsvHeader) {
  2177. echo implode(';', $csvLine) . ";\n";
  2178. $showCsvHeader = false;
  2179. }
  2180. foreach ($out_tbl as $tr) {
  2181. $csvLine = array();
  2182. $csvLine[] = '"' . $userId . '"';
  2183. $csvLine[] = '"' . $tr['nr'] . '"';
  2184. $csvLine[] = '"' . $tr['wplata'] . '"';
  2185. $csvLine[] = '"' . $tr['data'] . '"';
  2186. $csvLine[] = '"' . $tr['pozostalo'] . '"';
  2187. echo implode(';', $csvLine) . ";\n";
  2188. }
  2189. }
  2190. //echo '<pre style="max-height:200px;overflow:auto">incomeDocs: ';print_r($incomeDocs);echo'</pre>';
  2191. //echo '<pre style="max-height:200px;overflow:auto">ilosc('.count($out_tbl).') ' . "client({$userId}): ";print_r($out_tbl);echo'</pre>';
  2192. if (--$limit < 0) {
  2193. echo '<br>BREAK';
  2194. break;
  2195. }
  2196. }
  2197. exit;
  2198. }
  2199. public static function zestawienie_vectra_zadluzenia() {
  2200. $usersList = array();
  2201. $db = DB::getDB();
  2202. $sql_select = "
  2203. c.`ID` as ID
  2204. , c.`ID` as id_users
  2205. , c.`P_NAME`
  2206. , c.`P_NAME_SECOND`
  2207. , c.`P_ADDRESS_STREET`
  2208. , c.`P_ADDRESS_HOME`
  2209. , c.`P_ADDRESS_HOUSE`
  2210. , c.`P_ADDRESS_CITY`
  2211. , c.`P_ADDRESS_POST_CODE`
  2212. , c.`P_ADDRESS_REGION`
  2213. , c.`P_PESEL`
  2214. , c.`P_PHONE`
  2215. , c.`P_OTHER_DOC`
  2216. , c.`user_mail_contact`
  2217. , c.`is_firma`
  2218. , w.`ID` as WINDYKACJA_ID
  2219. , w.`ID_BILLING_USERS`
  2220. , w.`A_STATUS`
  2221. , w.`A_STATUS_UPDATE_DATE`
  2222. , w.`USER_PAY_TERM_ADD`
  2223. , w.`L_APPOITMENT_DATE`
  2224. , w.`L_APPOITMENT_USER`
  2225. , w.`L_APPOITMENT_INFO`
  2226. , w.`PAY_DATE`
  2227. , w.`PAY_DATE_FIRST_FVAT`
  2228. , w.`PAY_TERM`
  2229. , w.`PAY_SALDO`
  2230. , w.`PAY_FVAT`
  2231. , w.`wezwanie1_DATE`
  2232. , w.`wezwanie2_DATE`
  2233. , w.`ID_KORESP`
  2234. , w.`LAST_PAY_DATE`
  2235. , w.`BAD_ADDRESS`
  2236. , c.`STATUS`
  2237. , c.`BILLING_OWNER`
  2238. , w.`NR_SPRAWY_KRD`
  2239. , w.`NR_SPRAWY_SAD`
  2240. , w.`NR_SPRAWY_KOMORNIK`
  2241. , w.`LAST_FVAT_PAY_TERM`
  2242. ";
  2243. $sqlWhereAdd = "
  2244. and (w.`LAST_FVAT_PAY_TERM`>='2014-12-01'
  2245. or ( w.`LAST_FVAT_PAY_TERM`='0000-00-00'
  2246. and w.`LAST_FVAT_SELL_DATE`>='2014-12-01'
  2247. )
  2248. )
  2249. and c.`ID_BILLING_PREFIXES` in('0','1')
  2250. and c.`BILLING_OWNER` in('1')
  2251. ";
  2252. if (V::get('DBG_NUM', '', $_GET)) {// number of clients with fvat after 2014-12-01
  2253. $sqlWhereAdd = "
  2254. and (w.`LAST_FVAT_PAY_TERM`>='2014-12-01'
  2255. or ( w.`LAST_FVAT_PAY_TERM`='0000-00-00'
  2256. and w.`LAST_FVAT_SELL_DATE`>='2014-12-01'
  2257. )
  2258. )
  2259. and c.`ID_BILLING_PREFIXES` in('0','1')
  2260. and c.`BILLING_OWNER` in('1')
  2261. ";
  2262. }
  2263. $sql = "select {$sql_select}
  2264. from `USERS2_WINDYKACJA_STATUS` as w
  2265. join `COMPANIES` as c on(c.`ID`=w.`ID_BILLING_USERS`)
  2266. where c.`A_ADM_COMPANY`='19994_PODMIOT_Vectra_wlasciciel'
  2267. {$sqlWhereAdd}
  2268. ";
  2269. if (V::get('DBG_SQL', '', $_GET)) {
  2270. header('Content-Type: text/plain; charset=utf-8');
  2271. echo $sql;
  2272. exit;
  2273. }
  2274. $res = $db->query($sql);
  2275. if ($db->has_errors()) {
  2276. print_r($db->get_errors());
  2277. die();
  2278. }
  2279. while ($r = $db->fetch($res)) {
  2280. $usersList[$r->ID_BILLING_USERS] = $r;
  2281. }
  2282. if (V::get('DBG_ILE', '', $_GET)) {
  2283. echo '<p>ilosc: ' . count($usersList) . '</p>' . '<pre style="max-height:200px;overflow:auto">';
  2284. print_r($usersList);
  2285. echo '</pre>';
  2286. exit;
  2287. }
  2288. if (V::get('DBG_IDS', '', $_GET)) {
  2289. header('Content-Type: text/plain; charset=utf-8');
  2290. echo 'ilosc: ' . count($usersList) . "\n";
  2291. echo implode("\n", array_keys($usersList));
  2292. exit;
  2293. }
  2294. $limit = 10000;
  2295. $date_limit = V::get('DATE_LIMIT', date("Y-m-d"), $_GET);
  2296. $date_limit_from = '2014-12-01';
  2297. $csvFileName = "Zestawienie-zadluzenia-do-{$date_limit}";
  2298. header('Content-Type: text/csv; charset=utf-8');
  2299. header("Content-Disposition: attachment; filename={$csvFileName}.csv");
  2300. $showCsvHeader = true;
  2301. foreach ($usersList as $userId => $user) {
  2302. $billing_docs = Windykacja_StatsModel::get_bill_dosc_by_date($user, $date_limit);
  2303. $billing_docs->sort_docs();
  2304. $fvat_arr = $billing_docs->get_unpaid_fvat();
  2305. Windykacja_StatsModel::update_doc_number($fvat_arr);
  2306. if (V::get('DBG_LAST_FVAT_TERM', '', $_GET)) {
  2307. $lastFvatDoc = $billing_docs->get_last_fvat_doc();
  2308. if ($lastFvatDoc) {
  2309. echo '<p>lastFvatDoc:</p><pre style="max-height:200px;overflow:auto">';
  2310. print_r($lastFvatDoc);
  2311. echo '</pre>';
  2312. exit;
  2313. }
  2314. }
  2315. $user->hasActiveDeal = 0;
  2316. $sql = "select sum(t.`DEALS_ACTIVE`) as activeDeals
  2317. from `temp_DEALS_STATUS` as t
  2318. where t.`DEALS_ACTIVE`=1
  2319. and t.`ID_BILLING_USERS`='{$userId}'
  2320. ";
  2321. $res = $db->query($sql);
  2322. if ($db->num_rows($res) > 0) {
  2323. $user->hasActiveDeal = 1;
  2324. }
  2325. $out_tbl = array();
  2326. foreach ($fvat_arr as $v_fvat) {
  2327. if ($v_fvat['BILL_DATE'] < $date_limit_from || $v_fvat['BILL_DATE'] > $date_limit) {
  2328. //echo 'pomin fvat:'."\n";print_r($v_fvat);
  2329. continue;
  2330. }
  2331. $out_tr = array();
  2332. $out_tr['ID'] = $v_fvat['ID'];
  2333. $out_tr['nr'] = $v_fvat['NUMBER'] . '/' . $v_fvat['ID_BILLING_PREFIXES'];
  2334. $out_tr['winien'] = number_format($v_fvat['WINIEN'], 2, '.', '');
  2335. $out_tr['data'] = $v_fvat['BILL_DATE'];
  2336. $out_tr['termin'] = $v_fvat['PAYMENT_TERM'];
  2337. $out_tr['pozostalo'] = number_format($v_fvat['WINIEN_POZOSTALO'], 2, '.', '');
  2338. array_unshift($out_tbl, $out_tr);// add to the begining
  2339. }
  2340. {// csv
  2341. $csvLine = array();
  2342. $csvLine[] = '"id klienta"';
  2343. $csvLine[] = '"nr dokumentu"';
  2344. $csvLine[] = '"kwota brutto"';
  2345. $csvLine[] = '"data faktury"';
  2346. $csvLine[] = '"termin płatności"';
  2347. $csvLine[] = '"pozostało do zapłaty"';
  2348. $csvLine[] = '"status klienta (9=blokada)"';
  2349. $csvLine[] = '"aktywne uslugi"';
  2350. if ($showCsvHeader) {
  2351. echo implode(';', $csvLine) . ";\n";
  2352. $showCsvHeader = false;
  2353. }
  2354. foreach ($out_tbl as $tr) {
  2355. $csvLine = array();
  2356. $csvLine[] = '"' . $userId . '"';
  2357. $csvLine[] = '"' . $tr['nr'] . '"';
  2358. $csvLine[] = '"' . $tr['winien'] . '"';
  2359. $csvLine[] = '"' . $tr['data'] . '"';
  2360. $csvLine[] = '"' . $tr['termin'] . '"';
  2361. $csvLine[] = '"' . $tr['pozostalo'] . '"';
  2362. $csvLine[] = '"' . $user->STATUS . '"';
  2363. $csvLine[] = '"' . $user->hasActiveDeal . '"';
  2364. echo implode(';', $csvLine) . ";\n";
  2365. }
  2366. }
  2367. //echo '<pre style="max-height:200px;overflow:auto">fvat_arr: ';print_r($fvat_arr);echo'</pre>';
  2368. //echo '<pre style="max-height:200px;overflow:auto">ilosc('.count($out_tbl).') ' . "client({$userId}): ";print_r($out_tbl);echo'</pre>';
  2369. if (--$limit < 0) {
  2370. echo '<br>BREAK';
  2371. break;
  2372. }
  2373. }
  2374. exit;
  2375. }
  2376. public static function wezwanie(&$user, $wezwanie_termin, $wezwanie_ostateczne = false) {
  2377. $date_limit = date("Y-m-d");
  2378. $billing_docs = Windykacja_StatsModel::get_bill_dosc_by_date($user, $date_limit);
  2379. $billing_docs->sort_docs();
  2380. // sprawdz zadluzenie
  2381. if ($billing_docs->get_saldo() >= 0) {
  2382. echo'<p class="green">' . "Brak zadluzenia" . '</p>';
  2383. return;
  2384. }
  2385. else {
  2386. $fvat_arr = $billing_docs->get_unpaid_fvat();
  2387. //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">saldo('.$billing_docs->get_saldo().') fvat_arr: ';print_r($fvat_arr);echo'</pre>';
  2388. //foreach ($fvat_arr as $key => $v) {
  2389. // echo'<br />'.number_format($v['WINIEN_POZOSTALO'], 4, ',', ' ');
  2390. //}
  2391. if (empty($fvat_arr)) {
  2392. echo'<p>'."Brak nieoplaconych faktur".'</p>';
  2393. return;
  2394. }
  2395. Windykacja_StatsModel::update_doc_number($fvat_arr);
  2396. $cols = array();
  2397. $cols['ID'] = "ID";
  2398. $cols['nr'] = "nr";
  2399. $cols['winien'] = "winien";
  2400. $cols['ma'] = "ma";
  2401. //$cols['saldo'] = "saldo";
  2402. $cols['saldo_all'] = "saldo";
  2403. $cols['add'] = "&nbsp;";
  2404. $saldo_all = 0;
  2405. foreach ($fvat_arr as $f) {
  2406. $saldo_all += round($f['WINIEN_POZOSTALO'], 2);
  2407. }
  2408. $out_tbl = array();
  2409. foreach ($fvat_arr as $v_fvat) {
  2410. $out_tr = array();
  2411. $out_tr['ID'] = ' <code style="font-size:10px">'."(".$v_fvat['ID'].")".'</code>';// TODO: dla KP,KW: ID_BILLING_NUMBERS zamiast ID
  2412. $out_tr['nr'] = $v_fvat['NUMBER'] . '/' . $v_fvat['ID_BILLING_PREFIXES'];
  2413. $out_tr['winien'] = number_format($v_fvat['WINIEN'], 2, ',', ' ');
  2414. $out_tr['data'] = $v_fvat['BILL_DATE'];
  2415. $out_tr['termin'] = $v_fvat['PAYMENT_TERM'];
  2416. $out_tr['pozostalo'] = number_format($v_fvat['WINIEN_POZOSTALO'], 2, ',', ' ');
  2417. array_unshift($out_tbl, $out_tr);// add to the begining
  2418. }
  2419. $razem = $saldo_all;
  2420. $company = Windykacja_StatsModel::get_company($user);
  2421. $nr_konta = Windykacja_FunkcjeL1::bankowy_formatuj_nrach(Windykacja_FunkcjeL1::bankowy_make_nrach($company->NR_RACH_MASS_PAY, $user->ID_BILLING_USERS, 0));
  2422. ?>
  2423. <style type="text/css">
  2424. body{font-family:serif; font-size:10px;line-height:14px;}
  2425. td{font-family:verdana; font-size:10px; color:#333;}
  2426. table {border-style:none;}
  2427. table td, table th {padding:0 2px;border-style:solid;border-collapse:collapse;}
  2428. table th {border-width:1px;border-color:#333;}
  2429. table td {border-width:1px;border-color:#333;}
  2430. </style>
  2431. <?php
  2432. echo'<div style="background:#fff;border:none;margin:5px;padding:20px 40px 10px 40px;page-break-after:always;font-size:small;">';
  2433. $id_koresp = 0;
  2434. if ($user->ID_KORESP) {
  2435. $id_koresp = $user->ID_KORESP;
  2436. if ($user->LAST_ID_KORESP_WEZWANIE1 && !$wezwanie_ostateczne) {
  2437. $id_koresp = $user->LAST_ID_KORESP_WEZWANIE1;
  2438. } else if ($user->LAST_ID_KORESP_WEZWANIE2 && $wezwanie_ostateczne) {
  2439. $id_koresp = $user->LAST_ID_KORESP_WEZWANIE2;
  2440. }
  2441. }
  2442. if ($id_koresp > 0) {//$user->ID_KORESP) {// TODO: if $user->LAST_ID_KORESP_WEZWANIE1 or LAST_ID_KORESP_WEZWANIE2
  2443. $koresp = DB::get_by_id('IN7_DZIENNIK_KORESP', $id_koresp);
  2444. if ($koresp) {
  2445. echo '<div style="text-align:right;font-weight:bold;">';
  2446. echo $koresp->ID_PROJECT . '-' .$koresp->ID . "/" . substr(date("Y"), 2);
  2447. echo '</div>';
  2448. }
  2449. }
  2450. //echo "&bdquo;BIALL-NET&rdquo; Sp. z o.o.<br />Otomin, ul. Słoneczna 43<br />80-174 Gdańsk";
  2451. ?>
  2452. <table border=0 cellspacing=0 cellpadding=0 style="width:100%;">
  2453. <tr>
  2454. <td style="width:60%;border:none;">
  2455. <?php echo $company->name1; ?>
  2456. <br /><?php echo "ul. " . $company->ulica . " " . $company->numer_dom; ?>
  2457. <br /><?php echo $company->kod . " " . $company->miasto; ?>
  2458. </td>
  2459. <td style="border:none;text-align:left;vertical-align:top;">
  2460. Gdańsk, dnia <?php echo date("Y-m-d"); ?>
  2461. </td>
  2462. </tr>
  2463. <tr>
  2464. <td style="border:none;">&nbsp;</td>
  2465. <td style="border:none;">
  2466. <p style="margin:50px 0;">
  2467. Numer klienta: <?php echo $user->ID; ?>
  2468. <br /><?php echo "{$user->P_NAME} {$user->P_NAME_SECOND}"; ?>
  2469. <?php // TODO: P_ADRESS_KORESP_1282 ?>
  2470. <br /><?php echo "ul. {$user->P_ADDRESS_STREET} {$user->P_ADDRESS_HOUSE}"; ?>
  2471. <?php if ($user->P_ADDRESS_HOME) { echo "/{$user->P_ADDRESS_HOME}"; } ?>
  2472. <br /><?php echo "{$user->P_ADDRESS_POST_CODE} {$user->P_ADDRESS_CITY}"; ?>
  2473. </p>
  2474. </td>
  2475. </tr>
  2476. </table>
  2477. <h1 style="text-align:center;margin:20px 10px 10px 10px;font-size:28px;">
  2478. <?php
  2479. if ($wezwanie_ostateczne) {
  2480. echo "OSTATECZNE WEZWANIE DO ZAPŁATY";
  2481. } else {
  2482. echo "WEZWANIE DO ZAPŁATY";
  2483. }
  2484. ?>
  2485. </h1>
  2486. <p style="margin:10px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Na podstawie art. 476 Kodeksu cywilnego (Dz. U. z 1964 r. nr 16, poz. 93, z późn. zmianami) wzywamy do natychmiastowego uregulowania należnej sumy, zgodnie z poniższym zestawieniem.</p>
  2487. <table border=0 cellspacing=0 cellpadding=2 style="width:100%;margin:10px;font-size:small;">
  2488. <thead style="background:#F3F3F3;">
  2489. <tr>
  2490. <th>Podstawa zobowiązania*</th>
  2491. <th>Nr dokumentu</th>
  2492. <?php //<th>Kwota netto</th> ?>
  2493. <th>Kwota brutto</th>
  2494. <th>Data faktury</th>
  2495. <th>Termin płatności</th>
  2496. <th>Pozostało do zapłaty</th>
  2497. </tr>
  2498. </thead>
  2499. <tfoot>
  2500. <tr>
  2501. <td colspan="4" style="border:none;"></td>
  2502. <th style="border-width:2px;border-color:#333;text-align:right;background:#F3F3F3;">Razem:</th>
  2503. <td style="border-width:2px;border-color:#333;font-weight:bold;"><?php echo Windykacja_FunkcjeL1::formatuj_grosze($razem); ?></td>
  2504. </tr>
  2505. </tfoot>
  2506. <?php foreach ($out_tbl as $out_tr) {
  2507. $k_data = $out_tr['data'];
  2508. $rok = substr($k_data, 0, 4);
  2509. $cls = array();
  2510. if ($add_cls = V::get('class', '', $out_tr)) $cls[] = $add_cls;
  2511. $cls = (!empty($cls))? ' class="'.implode(' ', $cls).'"' : '';
  2512. //$file_total['PODSTAWA_NUMBER'] = $r['NUMBER']."/".$r['ID_BILLING_PREFIXES'];
  2513. //$file_total['PODSTAWA_DATA'] = date("Y-m-d",$r['BAF_TIMESTAMP']);
  2514. //$file_total['PAYMENT_TERM'] = date("Y-m-d",$r['TERMIN_PL']);
  2515. ?>
  2516. <tr<?php echo $cls; ?>>
  2517. <td>
  2518. <?php echo "Faktura Vat"; ?>
  2519. </td>
  2520. <td>
  2521. <?php echo $out_tr['nr']; ?>
  2522. </td>
  2523. <td>
  2524. <?php echo $out_tr['winien']; ?>
  2525. </td>
  2526. <td>
  2527. <nobr><?php echo $out_tr['data']; ?></nobr>
  2528. </td>
  2529. <td>
  2530. <nobr><?php echo $out_tr['termin']; ?></nobr>
  2531. </td>
  2532. <td>
  2533. <?php echo $out_tr['pozostalo']; ?>
  2534. </td>
  2535. </tr>
  2536. <?php } ?>
  2537. </table>
  2538. <p style="margin:10px;">Słownie do zapłaty: <span style="border-bottom:1px dotted #000;padding:0 50px;">&nbsp;&nbsp;<b><?php echo Windykacja_FunkcjeL1::slownie($razem); ?></b>&nbsp;&nbsp;</span></p>
  2539. <p style="margin:10px;background:#eee;text-align:center;">Wymienioną sumę prosimy przekazać na nasz rachunek bankowy <br /><?php echo $nr_konta; ?> w terminie do dnia <span style="border-bottom:1px dotted #000;padding:0 50px;">&nbsp;&nbsp;<b><?php echo $wezwanie_termin; ?></b>&nbsp;&nbsp;</span></p>
  2540. <ul style="margin:10px;font-size:small;padding:0 0 0 40px;">
  2541. <li style="line-height:16px;">Od nieterminowych płatności mogą zostać naliczone odsetki ustawowe (art.481 § 1 KC).</li>
  2542. <li style="line-height:16px;">W przypadku nieterminowej zapłaty nabywca zostanie obciążony wszelkimi kosztami windykacji oraz postępowania sądowego, które zostaną poniesione przez sprzedawcę w celu odzyskania należności.</li>
  2543. <li style="line-height:16px;">W przypadku uregulowania należności przed otrzymaniem niniejszego wezwania, proszę potraktować je za bezprzedmiotowe.</li>
  2544. </ul>
  2545. <table style="width:100%;border:none">
  2546. <tr>
  2547. <td colspan="2" style="border:none;">
  2548. <p style="margin:5px 0;font-size:10px;">W razie problemów prosimy o kontakt z Biurem Obsługi Klienta tel. (58) 741-84-10 wew. 2,
  2549. <br> e-mail: bok@biall.net.pl lub z Windykatorem: tel. (58) 741-84-78</p>
  2550. </td>
  2551. </tr>
  2552. </table>
  2553. <table style="width:100%;border:none">
  2554. <tr>
  2555. <td style="width:50%;border:none;">&nbsp;</td>
  2556. <td style="width:50%;border:2px solid #999"><br /><br /><br /><br /></td>
  2557. </tr>
  2558. <tr>
  2559. <td style="border:none;">&nbsp;</td>
  2560. <td style="text-align:center;border:none;">(pieczęć i podpis wierzyciela)</td>
  2561. </tr>
  2562. <tr>
  2563. <td colspan="2" style="border:none;">
  2564. <p style="margin:10px 0;font-size:xx-small;">* Podstawa zobowiązania: Faktura VAT, Rachunek, Umowa, Nota odsetkowa, Nota księgowa, Weksel, Uznanie długu, Ugoda, Kara umowna, Faktura zbiorowa, Wyrok sądowy, Nakaz zapłaty, Pożyczka, inne.</p>
  2565. </td>
  2566. </tr>
  2567. <tr>
  2568. <td colspan="2" style="border:none">
  2569. <p style="margin:8px 0;font-size:x-small;text-align:center">W przypadku nieuregulowania płatności we wskazanym terminie, zgodnie z &bdquo;Ustawą o udostępnianiu informacji gospodarczych z dnia 14 lutego 2003 r. (Dz. U. Nr 50)&rdquo; , informacje o zadłużeniu zostaną przekazane do:</p>
  2570. <p style="margin:8px 0 0 0;font-size:small;text-align:center"><b>Krajowego Rejestru Długów<br />
  2571. Biura Informacji Gospodarczej S.A.<br />
  2572. ul. Armii Ludowej 21, 51-214 Wrocław<br />
  2573. www.krd.pl</b>
  2574. <br />
  2575. <br />
  2576. Informacja o zadłużeniu upubliczniona będzie w systemie KRD do dnia zapłaty lub 10 lat od daty dokonania wpisu.</p>
  2577. </td>
  2578. </tr>
  2579. </table>
  2580. </div>
  2581. </body>
  2582. </html>
  2583. <?php
  2584. die();
  2585. }
  2586. }
  2587. public static function task_update_stats() {
  2588. self::css();
  2589. $to_update_step = 1000;
  2590. $q = V::get('q', '', $_GET);
  2591. $_p = V::get('_p', 0, $_GET, 'int');
  2592. echo'<a href="' . "?MENU_INIT=USERS2_WINDYKACJA_STATUS&q=".$q."&_p=".$_p . '">' . "Cofnij" . '<img src=icon/back.gif border=0 alt=POWROT>' . '</a>';
  2593. $to_update_total = Windykacja_StatsHelper::get_to_update_total();
  2594. if ($to_update_total <= 0) {
  2595. echo'<p style="color:green">' . "Wszystkie rekordy zaktualizowane" . '</p>';
  2596. return;
  2597. }
  2598. if ($to_update_total > $to_update_step) {
  2599. echo'<br />';
  2600. echo'<a style="color:red" href="' . "?MENU_INIT=USERS2_WINDYKACJA_STATUS&task=stats_update&q=".$q."&_p=".$_p . '">' . "Aktualizuj statusy (" . ($to_update_total - $to_update_step) . ")" . '</a>';
  2601. echo'<br />';
  2602. }
  2603. $to_update_list = Windykacja_StatsHelper::get_to_update_list($to_update_step);
  2604. if (empty($to_update_list)) {
  2605. echo'<p style="color:green">' . "Wszystkie rekordy zaktualizowane" . '</p>';
  2606. return;
  2607. }
  2608. //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">to_update_list: ';print_r($to_update_list);echo'</pre>';
  2609. foreach ($to_update_list as $w) {
  2610. //echo'<div class="box box-blue">';
  2611. echo "Nr. klienta: <b>".$w->ID_BILLING_USERS . "</b> ...";
  2612. //echo $w->A_STATUS . ' (' . $w->A_STATUS_UPDATE_DATE . ')';
  2613. $user = Windykacja_StatsModel::get_user_by_id($w->ID_BILLING_USERS);
  2614. if ($user) {
  2615. $billing_docs = Windykacja_StatsModel::get_bill_dosc_by_date($user);
  2616. Windykacja_StatsHelper::update_stats($user, $billing_docs);
  2617. }
  2618. //echo'</div>';// .box-blue
  2619. echo'<br />';
  2620. }
  2621. if ($to_update_total > $to_update_step) {
  2622. echo'<br /><br />';
  2623. echo'<a style="color:red" href="' . "?MENU_INIT=USERS2_WINDYKACJA_STATUS&task=stats_update&q=".$q."&_p=".$_p . '">' . "Aktualizuj statusy (" . ($to_update_total - $to_update_step) . ")" . '</a>';
  2624. }
  2625. }
  2626. public static function getPowodyRezygnacji() {
  2627. // [895].[3888] - DEALS_TABLE.RODZAJ_DZIALANIA_HANDLOWEGO
  2628. $powody = array();
  2629. // $powody['3226'] = "REZYGNACJA FINANSE";
  2630. // $powody['3227'] = "REZYGNACJA SLABA OFERTA";
  2631. // $powody['3121'] = "REZYGNACJA WYPROWADZKA";
  2632. // $powody['3228'] = "REZYGNACJA PROBLEMY TECHNICZNE";
  2633. // $powody['3230'] = "REZYGNACJA WYJAZD";
  2634. // $powody['3229'] = "REZYGNACJA ZLA OBSLUGA BOK";
  2635. // $powody['3123'] = "REZYGNACJA CESJA";
  2636. // $powody['3119'] = "BRAK-BOK (Inne)";
  2637. // $powody['4188'] = "UMOWA_BEZPOSREDNIA";
  2638. // $powody['4189'] = "UMOWA_POSREDNIA";
  2639. // $powody['4190'] = "TELEMARKETING";
  2640. $powody['4192'] = "REZYGNACJA ZMIANA OPERATORA";
  2641. $powody['4193'] = "REZYGNACJA WYPROWADZKA";
  2642. $powody['4194'] = "REZYGNACJA NIEZADOWOLENIE";
  2643. $powody['4195'] = "REZYGNACJA CESJA";
  2644. //$powody['4196'] = "REZYGNACJA FINANSE";
  2645. $powody['4197'] = "REZYGNACJA SLABA OFERTA";
  2646. $powody['4198'] = "REZYGNACJA PROBLEMY TECHNICZNE";
  2647. $powody['4199'] = "REZYGNACJA ZLA OBSLUGA BOK";
  2648. $powody['4200'] = "WYPOWIEDZENIE PRZEZ OPERATORA ZA DLUGI";
  2649. // $powody['4201'] = "UMOWA W BOK ZWYCZAJNA";
  2650. // $powody['4202'] = "REZYGNACJA WYJAZD";
  2651. // $powody['4191'] = "BRAK-BOK (Inne)";
  2652. $powody['19803'] = "REZYGNACJA_Z_PRZEJSCIEM_DO_VECTRA";
  2653. $powody['22511'] = "WYPOWIEDZENIE PRZEZ OPERATORA";
  2654. $powody['4213'] = "REZYGNACJA INNE";
  2655. return $powody;
  2656. }
  2657. /**
  2658. * @params $user
  2659. * @params $id_koresp
  2660. */
  2661. public static function task_bok_rozwiazanie_umowy_print($user, $id_koresp) {
  2662. $user_hist_events = Windykacja_StatsHelper::get_user_hist_status_events($user);
  2663. if (empty($user_hist_events)) {
  2664. echo '<p style="color:red">' . "Brak danych HIST" . '</p>';
  2665. return;
  2666. }
  2667. $v_doc = null;
  2668. foreach ($user_hist_events as $v_hist) {
  2669. if ($v_hist->ID_KORESP == $id_koresp) {
  2670. $v_doc = $v_hist;
  2671. break;
  2672. }
  2673. }
  2674. if (!$v_doc) {
  2675. echo '<p style="color:red">' . "Brak danych HIST dla kodresp(".$v_doc->ID_KORESP.")" . '</p>';
  2676. return;
  2677. }
  2678. // params(255): rozwiazanie umowy,9872,3121
  2679. $params = explode(',', $v_doc->params);
  2680. if (count($params) < 3 && $params[0] != 'rozwiazanie umowy') {
  2681. echo '<p style="color:red">' . "Bad params" . '</p>';
  2682. return;
  2683. }
  2684. $koresp = DB::get_by_id('IN7_DZIENNIK_KORESP', $id_koresp);
  2685. if (!$koresp) {
  2686. echo '<p style="color:red">' . "Koresp not exists!" . '</p>';
  2687. return;
  2688. }
  2689. $nr_umowy = $params[1];
  2690. $powod = $params[2];
  2691. $deal_id = '..........................................................';
  2692. $termin_odlaczenia = '.....................';
  2693. if (count($params) > 4) {
  2694. // $data_arr["params"] = "rozwiazanie umowy,{$nr_umowy},{$powod},{$termin_odlaczenia},{$new_id_deals}";
  2695. $termin_odlaczenia = $params[3];
  2696. $deal_id = $params[4];
  2697. }
  2698. $arg_values = array();
  2699. $arg_values['powod'] = self::getPowodyRezygnacji();
  2700. $com = new stdClass();
  2701. if ($user->BILLING_OWNER == 2) {
  2702. $com->name = 'NET-DAY';
  2703. $com->fullName = 'NET-DAY s.c.';
  2704. $com->address_street = 'ul. Kopeckiego 9/24';
  2705. $com->address_city = '80-809 Gdańsk';
  2706. } else {
  2707. $com->name = 'BIALL-NET';
  2708. $com->fullName = 'BIALL-NET Sp. z o.o.';
  2709. $com->address_street = 'Otomin ul. Słoneczna 43';
  2710. $com->address_city = '80-174 Gdańsk';
  2711. }
  2712. ?>
  2713. <style type="text/css">
  2714. body{margin:12px;font-family:serif;font-size:11px;line-height:14px;}
  2715. td{font-family:verdana; font-size:10px; color:#333;}
  2716. table {border-style:none;}
  2717. table td, table th {padding:0 2px;border-collapse:collapse;}
  2718. table.tbl-bordered {border-style:none;}
  2719. table.tbl-bordered td, table.tbl-bordered th {padding:0 2px;border-style:solid;border-collapse:collapse;}
  2720. table.tbl-bordered th {border-width:1px;border-color:#333;}
  2721. table.tbl-bordered td {border-width:1px;border-color:#333;}
  2722. </style>
  2723. <table cellspacing="0" cellpadding="0" border="0" style="width:100%;"><tr>
  2724. <td>[1612][v3]</td>
  2725. <td style="text-align:right">Nr dziennika przyjęcia pisma <?php echo $com->fullName; ?> <?php echo $koresp->ID_PROJECT; ?>-<?php echo $koresp->ID; ?>/<?php echo substr(date("Y"), 2); ?>
  2726. <br />Gdańsk, dnia: .......................
  2727. </td>
  2728. </tr></table>
  2729. <br /><b>Dane Abonenta</b>
  2730. <br />Imię i Nazwisko / Nazwa firmy: <?php echo "{$user->P_NAME} {$user->P_NAME_SECOND}";?>
  2731. <br />Pesel / nr dowodu osoby reprezentującej firmę: <?php echo $user->P_PESEL; ?>
  2732. <br />Adres zameldowania: ul. <?php echo "{$user->P_ADDRESS_STREET} {$user->P_ADDRESS_HOUSE}/{$user->P_ADDRESS_HOME}, {$user->P_ADDRESS_POST_CODE} {$user->P_ADDRESS_CITY}"; ?>
  2733. <br />Nr ID klienta: <?php echo $user->ID; ?>
  2734. <br />Nr ID Umowy: <?php echo $deal_id; ?>
  2735. <?php
  2736. // <br />ID_SERVICES_OLD: ..........................................................
  2737. ?>
  2738. <table cellspacing="0" cellpadding="0" border="0" style="width:100%;margin:40px 0;"><tr>
  2739. <td>&nbsp;</td>
  2740. <td style="width:260px;text-align:left">
  2741. <?php echo $com->fullName; ?><br /><?php echo $com->address_street; ?><br /><?php echo $com->address_city; ?>
  2742. </td>
  2743. </tr></table>
  2744. <p style="margin:50px 0; text-align:center;">ROZWIĄZANIE UMOWY ABONENCKIEJ O ŚWIADCZENIE USŁUG TELEKOMUNIKACYJNYCH NR <sup>[794]</sup></p>
  2745. <p style="margin:0 0 50px 0;text-indent:50px">Proszę o rozwiązanie umowy abonenckiej o świadczeniu Usług Telekomunikacyjnych i odłączenie sygnału <?php echo $com->fullName; ?>. Jednocześnie jestem świadomy/a tego, że jeżeli okres trwania wypowiadanej umowy jeszcze nie uległ zakończeniu to firma <?php echo $com->name; ?> może naliczyć karę za wcześniejsze zerwanie umowy zgodnie z obowiązującym regulaminem i cennikiem.</p>
  2746. <p>Termin odłączenia: <?php echo $termin_odlaczenia; ?>
  2747. <br />(poinformowano o miesięcznym terminie wypowiedzenia, jak również przedstawiono nowe propozycje oferty)</p>
  2748. <p style="margin:30px 0;font-weight:bold;"><sup>[1061]</sup>Powody rezygnacji z Usług (wybierz tylko 1 najważniejszy powód)</p>
  2749. <table cellspacing="0" cellpadding="0" border="1" style="width:100%" class="tbl-bordered">
  2750. <?php foreach ($arg_values['powod'] as $k_powod => $v_label) : ?>
  2751. <?php $sel = ($powod == $k_powod)? "X" : "&nbsp;"; ?>
  2752. <tr><td style="width:26%;"><?php echo $v_label; ?></td><td style="width:5%;text-align:center;"> <?php echo $sel; ?> </td><td></td></tr>
  2753. <?php endforeach; ?>
  2754. </table>
  2755. <table cellspacing="0" cellpadding="0" border="0" style="margin:60px 0;width:100%;">
  2756. <tr>
  2757. <td style="width:15%;">&nbsp;</td>
  2758. <td style="width:20%;border-top:1px dotted #000;text-align:center;">
  2759. Data i podpis pracownika BOK
  2760. </td>
  2761. <td>&nbsp;</td>
  2762. <td style="width:20%;border-top:1px dotted #000;text-align:center;">
  2763. Data i czytelny podpis Klienta
  2764. </td>
  2765. <td style="width:15%;">&nbsp;</td>
  2766. </tr>
  2767. </table>
  2768. <?php
  2769. }
  2770. public static function task_bok_rozwiazanie_umowy(&$user) {
  2771. echo'<script type="text/javascript">'."
  2772. function frm_bok_rozwiazanie_umowy(frm){
  2773. if (frm.id_proj.value=='') {
  2774. alert('Nie podano numeru projektu!');
  2775. } else if (frm.nr_umowy.value=='') {
  2776. alert('Nie podano numeru umowy!');
  2777. } else if (frm.temin_odlaczenia.value=='') {
  2778. alert('Nie podano daty odłączenia!');
  2779. // TODO: powod - radio
  2780. } else {
  2781. return true;
  2782. }
  2783. return false;
  2784. }
  2785. ".'</script>';
  2786. $umowy_l2 = Windykacja_StatsModel::get_umowy_from_l2($user);
  2787. if (empty($umowy_l2)) {
  2788. echo '<p style="color:red">' . "Brak aktualnych umów z klientem" . '</p>';
  2789. return;
  2790. }
  2791. $arg_errors = array();
  2792. $arg_values = array();
  2793. $args = array();
  2794. $args['id_proj'] = V::get('id_proj', '', $_REQUEST, 'int');
  2795. $args['nr_umowy'] = V::get('nr_umowy', '', $_REQUEST, 'int');
  2796. $args['temin_odlaczenia'] = V::get('temin_odlaczenia', '', $_REQUEST);
  2797. $args['powod'] = V::get('powod', '', $_REQUEST, 'int');
  2798. $arg_values['nr_umowy'] = array();
  2799. foreach ($umowy_l2 as $k_id => $v_deal) {
  2800. $arg_values['nr_umowy'][$v_deal['ID']] = $v_deal['ID'] . ' (Nr umowy: ' . $v_deal['P_DEALNUMBER'] . ', ' . $v_deal['P_DEALDATE'] . ' - ' . $v_deal['P_DEALDATE_TERM'] . ')';
  2801. }
  2802. $arg_values['powod'] = self::getPowodyRezygnacji();
  2803. // validate
  2804. if ($args['temin_odlaczenia'] == '') {
  2805. $args['temin_odlaczenia'] = date("Y-m-d", mktime(0, 0, 0, date('m') + 1, date('d'), date('Y')));
  2806. } else {// cehck date format
  2807. if (strlen($args['temin_odlaczenia']) != 10) {
  2808. $arg_errors['temin_odlaczenia'] = "Błędny format daty";
  2809. } else {
  2810. $check_date = explode('-', $args['temin_odlaczenia']);
  2811. if (count($check_date) != 3 || strlen($check_date[0]) != 4 || strlen($check_date[1]) != 2 || strlen($check_date[2]) != 2) {
  2812. $arg_errors['temin_odlaczenia'] = "Błędny format daty";
  2813. } else {
  2814. // ok
  2815. }
  2816. }
  2817. }
  2818. if ($args['id_proj'] <= 0) {
  2819. $arg_errors['id_proj'] = "Nie podano numeru projektu!";
  2820. }
  2821. if ($args['nr_umowy'] <= 0) {
  2822. $arg_errors['nr_umowy'] = "Nie wybrano numeru umowy!";
  2823. }
  2824. if ($args['powod'] <= 0) {
  2825. $arg_errors['powod'] = "Nie wybrano powodu rezygnacji!";
  2826. }
  2827. // add rezygnacja z umowy
  2828. if (1 == V::get('contact_bok_rozwiazanie_umowy_save', 0, $_POST, 'int')) {
  2829. if (!empty($arg_errors)) {
  2830. echo '<p style="color:red">' . "W formularzy wystąpiły błędy:";
  2831. foreach ($arg_errors as $k_field => $v_err) {
  2832. echo '<br />' . $v_err;
  2833. }
  2834. echo '</p>';
  2835. } else {
  2836. $msg_log = array();
  2837. $ret = Windykacja_StatsHelper::update_bok_rozwiazanie_umowy($user, $args['id_proj'], $args['nr_umowy'], $args['powod'], $arg_values['powod'][$args['powod']], $args['temin_odlaczenia'], $msg_log);
  2838. if ($ret) {
  2839. echo '<p style="color:green">' . "Dane zapisano pomyślnie" . '</p>';
  2840. if (!empty($msg_log)) {
  2841. echo '<p style="color:silver">' . implode('<br />', $msg_log) . '</p>';
  2842. }
  2843. $ico_print = '<img src="icon/print.gif" height="16" />';
  2844. echo '<a href="'."?MENU_INIT=USERS2_WINDYKACJA_STATUS&q=".V::get('q','', $_REQUEST)."&task="."bok_rozwiazanie_umowy_print"."&user_id=".$user->ID."&id_koresp=".$ret.'">' . $ico_print . " rozwiązanie umowy".'</a>';
  2845. return;
  2846. } else {
  2847. echo '<p style="color:red">' . "Wystąpił błąd podczas zapisu danych" . '</p>';
  2848. if (!empty($msg_log)) {
  2849. echo '<p style="color:silver">' . implode('<br />', $msg_log) . '</p>';
  2850. }
  2851. }
  2852. }
  2853. }
  2854. echo'<form action="" method="post" onsubmit="' . "return frm_bok_rozwiazanie_umowy(this);" . '">';
  2855. echo'<input type="hidden" name="'."contact_bok_rozwiazanie_umowy_save".'" value="'."1".'" />';
  2856. echo '<b>' . "Rozwiązanie umowy abonenckiej o świadczenie usług telekomunikacyjnych" . '</b>';
  2857. echo '<br />' . "ID projektu: ";
  2858. echo '<input type="text" name="'."id_proj".'" value="' . $args['id_proj'] . '" class="i" />';
  2859. echo '<br />' . "Nr umowy: ";
  2860. foreach ($arg_values['nr_umowy'] as $k_id => $v_label) {
  2861. $sel = ($k_id == $args['nr_umowy'])? ' checked="checked"' : '';
  2862. echo '<br />' . "&nbsp;&nbsp;&nbsp;&nbsp;" . '<input type="radio" name="'."nr_umowy".'" value="' . $k_id . '" class="i" ' . $sel . ' />' . " " . $v_label;
  2863. }
  2864. echo '<br />' . "Termin odłączenia: ";
  2865. echo '<input type="text" name="'."temin_odlaczenia".'" value="' . $args['temin_odlaczenia']. '" class="i" />';
  2866. echo '<br />' . "Powód rezygnacji z usług: ";
  2867. foreach ($arg_values['powod'] as $k_id => $v_label) {
  2868. $sel = ($k_id == $args['powod'])? ' checked="checked"' : '';
  2869. echo '<br />' . "&nbsp;&nbsp;&nbsp;&nbsp;" . '<input type="radio" name="'."powod".'" value="' . $k_id . '" class="i" ' . $sel . ' />' . " " . $v_label;
  2870. }
  2871. echo '<br />' . '<input type="submit" value="'."zapisz".'" />';
  2872. echo'</form>';
  2873. }
  2874. }
  2875. class Lay_Html_Toggle {
  2876. public static function start($title, $attrs = array()) {
  2877. $cls = array();
  2878. $cls[] = 'may-hide';
  2879. if (array_key_exists('open', $attrs) && $attrs['open'] == false) $cls[] = 'hide';
  2880. echo'<div class="'.implode(' ', $cls).'">';
  2881. $st = array();
  2882. $st[] = 'margin-bottom:0';
  2883. if (!empty($attrs['color'])) $st[] = 'color:'.$attrs['color'];
  2884. echo'<h4 style="'.implode(';', $st).'">'.$title;
  2885. echo'<a class="btn-hide" href="#" onclick="'."return hide(this);".'">'."-".'</a>';
  2886. echo'<a class="btn-show" href="#" onclick="'."return hide(this);".'">'."+".'</a>';
  2887. echo'</h4>';
  2888. echo'<div class="to-hide">';
  2889. }
  2890. public static function end() {
  2891. echo'</div>';// .to-hide
  2892. echo'</div>';// .may-hide'
  2893. }
  2894. public static function show_js() {
  2895. echo'<script type="text/javascript">'."
  2896. function hide(n){
  2897. jQuery(n).parent().parent().toggleClass('hide');
  2898. return false;
  2899. }
  2900. ".'</script>';
  2901. }
  2902. }