| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287 |
- <?php
- Lib::loadClass('CompanyHelper');
- Lib::loadClass('PokazOfertyView');
- Lib::loadClass('ProcesHelper');
- Lib::loadClass('Windykacja_StatsHelper');
- Lib::loadClass('Windykacja_StatsModel');
- Lib::loadClass('Windykacja_FunkcjeL1');
- class Windykacja_View {
- static function viewUserInfo($idUser) {
- $userInfo = self::getUserInfo($idUser);
- $windykInfo = self::getWindykacjaInfo($idUser);
- echo UI::h('details', [ 'style' => "margin-bottom: 24px" ], [
- UI::h('summary', [ 'style' => "padding: 12px; background: #eee; cursor: pointer; outline: none" ], [
- ($userInfo['is_firma']) ? "Firma" : "Klient",
- " ",
- UI::h('b', [], "{$userInfo['P_NAME']} {$userInfo['P_NAME_SECOND']}"),
- $windykInfo ? UI::h('span', [ 'style' => "padding-left: 24px" ], [
- "Zapis/Odczyt dla: {$windykInfo['A_ADM_COMPANY']}", // $windykInfo['A_CLASSIFIED'];
- ]) : "",
- UI::h('span', [ 'style' => "padding-left: 24px" ], [
- "Status windykacji: ",
- (!$windykInfo) ? "brak danych" : UI::h('span', [], "{$windykInfo['A_STATUS']} <em>{$windykInfo['A_STATUS_INFO']}</em>"),
- ]),
- " ...",
- UI::h('span', [ 'style' => "float:right" ], [
- UI::h('a', [ 'href' => "index.php?MENU_INIT=USERS2_WINDYKACJA_STATUS&q=&_f=&_user_id={$idUser}" ], "Panel windykacji"),
- ]),
- ]),
- UI::h('div', [ 'style' => "padding: 12px; background: #eee;" ], [
- UI::h('table', [], [
- UI::h('tr', [], [
- UI::h('td', [ 'style' => "vertical-align:top; padding-right:8px" ], [
- self::viewWidgetUserInfo($idUser, $userInfo),
- ]),
- UI::h('td', [ 'style' => "vertical-align:top; padding-right:8px" ], [
- self::viewWidgetUserWindykInfo($idUser, $windykInfo),
- ]),
- ]),
- ]),
- ]),
- ]);
- }
- static function getUserInfo($idUser) {
- return DB::getPDO()->fetchFirst("
- select bua.`id_users`
- , bua.`id_users` as ID_BILLING_USERS
- , bua.`is_firma`
- , bua.`P_NAME`
- , bua.`P_NAME_SECOND`
- , bua.`P_NIP`
- , bua.`P_PESEL`
- , bua.`P_PHONE`
- , bua.`P_ADDRESS_REGION`
- , bua.`P_ADDRESS_CITY`
- , bua.`P_ADDRESS_POST_CODE`
- , bua.`P_ADDRESS_STREET`
- , bua.`P_ADDRESS_HOME`
- , bua.`P_ADDRESS_HOUSE`
- , bua.`user_mail_contact`
- , bu.`BILLING_OWNER`
- , ( select bo.name1 from BILLING_OWNER bo where bo.ID = bu.BILLING_OWNER ) as BILLING_OWNER_NAME
- from `BILLING_USERS_ADD` as bua
- left join `BILLING_USERS` as bu on ( bu.`ID` = bua.`id_users` )
- where bua.`id_users` = :id_user
- ", [ ':id_user' => $idUser ]);
- }
- static function getWindykacjaInfo($idUser) {
- static $_windykInfo;
- if ($_windykInfo) return $_windykInfo;
- $_windykInfo = self::fetchWindykacjaInfo($idUser);
- if ($_windykInfo['A_STATUS_UPDATE_DATE'] < date("Y-m-d")) {
- $user = Windykacja_StatsModel::get_user_by_id($idUser);
- if ($user) {
- $billing_docs = Windykacja_StatsModel::getBillDocsByDate($idUser);
- Windykacja_StatsHelper::update_stats($user, $billing_docs);
- }
- $_windykInfo = self::fetchWindykacjaInfo($idUser);
- }
- return $_windykInfo;
- }
- static function fetchWindykacjaInfo($idUser) {
- return DB::getPDO()->fetchFirst("
- select t.`ID`
- , t.A_STATUS
- , t.A_STATUS_INFO
- , t.*
- from `USERS2_WINDYKACJA_STATUS` as t
- where t.`ID_BILLING_USERS` = :id_user
- ", [ ':id_user' => $idUser ]);
- }
- static function viewWidgetUserInfo($idUser, $userInfo = []) {
- if (empty($userInfo)) $userInfo = self::getUserInfo($idUser);
- $outUserInfo = [
- 'Nr klienta' => $userInfo['ID_BILLING_USERS'],
- 'Firma' => ($userInfo['is_firma']) ? "Tak" : "Nie",
- 'Nip' => $userInfo['P_NIP'],
- 'Pesel' => $userInfo['P_PESEL'],
- 'Tel' => $userInfo['P_PHONE'],
- 'email' => $userInfo['user_mail_contact'],
- 'Adres' => "{$userInfo['P_ADDRESS_POST_CODE']} {$userInfo['P_ADDRESS_CITY']} {$userInfo['P_ADDRESS_STREET']} {$userInfo['P_ADDRESS_HOME']}/{$userInfo['P_ADDRESS_HOUSE']}",
- 'Operator' => "[{$userInfo['BILLING_OWNER']}] {$userInfo['BILLING_OWNER_NAME']}",
- ];
- return UI::h('div', [], [
- UI::h('p', [ 'style' => "border-left:3px solid #ddd; padding-left:6px; font-weight:bold" ], "Dane klienta"),
- UI::h('table', [ 'class' => "table table-bordered", 'style' => "width:auto; background:#fff" ],
- array_map(function ($fieldName) use ($outUserInfo) {
- return UI::h('tr', [], [
- UI::h('th', [], $fieldName),
- UI::h('td', [], $outUserInfo[$fieldName]),
- ]);
- }, array_keys($outUserInfo))
- ),
- ]);
- }
- static function viewWidgetUserWindykInfo($idUser, $windykInfo = []) {
- if (empty($windykInfo)) $windykInfo = self::getUserInfo($idUser);
- $outWindykInfo = [
- 'Status' => $windykInfo['A_STATUS'],
- // $filter_arr['stan_zero'] = array("stan zerowy");
- // $filter_arr['10-ego'] = array("termin płatności faktur, saldo na -", 'desc'=>array("10-ego", "10-ego każdego miesiąca - termin płatnosci faktur oraz saldo na minusie"));
- // $filter_arr['WAITING'] = array("termin płatności faktur", 'desc'=>array("10-ego", "10-ego każdego miesiąca - termin płatnosci faktur"));// z regulaminu
- // $filter_arr['15'] = array("mail ponaglenie", 'desc'=>array("10-ego + 5", "10-ego + 5 dni roboczych"));
- // $filter_arr['blokada'] = array("blokada", 'desc'=>array("pn, wt, śr około 25", "najbliższy pn, wt, śr do 25"));// najbliższy pn, wt, śr do 25-ego danego miesiąca
- // $filter_arr['tel1'] = array("kontakt tel.", 'desc'=>array("", "Ostatni kontakt tel. ponad 3 m-ce temu"));
- // $filter_arr['bad_address'] = array("błędny adres");
- // $filter_arr['wezwanie1'] = array("wezwanie do zapłaty", 'desc'=>array("2 x FVat", "2 faktury"));
- // $filter_arr['waiting-wezwanie2'] = array("oczekiwanie 7 dni od terminu płatności");
- // $filter_arr['wezwanie2'] = array("ostateczne wezwanie do zapłaty, rozwiązanie umowy", 'desc'=>array("wezwanie + 14", "wezwanie + 14 dni"));
- // $filter_arr['waiting-krd'] = array("min. 30 dni od ostatecznego wezwania");
- // $filter_arr['krd'] = array("do przekazania do KRD", 'desc'=>array("wezwanie ost. + 60", "wezwanie ost. + 60 dni"));
- // $filter_arr['waiting-sad'] = array("przekazano do KRD");
- // $filter_arr['docs-in-sad'] = array("przekazać sprawę do sądu");// waiting-sad = 30 dni
- // $filter_arr['sad'] = array("przekazano sprawę do sądu");
- // $filter_arr['3 m-ce przed'] = array("3 m-ce przed przedawnieniem");// 3 m-ce przed przedawnieniem
- // $filter_arr['po-terminie'] = array("po terminie");// 3 lata po dacie platnosci faktur
- // $filter_arr['has_nr_sad'] = array("nr sprawy sąd");
- // $filter_arr['has_nr_komornik'] = array("nr sprawy komornik");
- // $filter_arr['has_ustalenia'] = array("ustalenia z klientem");
- // $filter_arr['sad_and_komornik'] = array("sąd z komornik");
- // $filter_arr['sad_bez_komornik'] = array("sąd bez komornik");
- // $filter_arr['isMovedToVectra'] = array("przeniesieni do Vectra");
- // if ($filter_selected == 'po-terminie') {
- // $sql_where_and_arr[] = "w.`PAY_SALDO`<=-0.05";
- // $sql_where_and_arr[] = "w.`PAY_DATE`!='0000-00-00'";
- // $sql_where_and_arr[] = "w.`PAY_DATE`<DATE_SUB(NOW(), INTERVAL 36 MONTH)";
- // }
- // else if ($filter_selected == '3 m-ce przed') {
- // $sql_where_and_arr[] = "w.`PAY_SALDO`<=-0.05";
- // $sql_where_and_arr[] = "w.`PAY_DATE`!='0000-00-00'";
- // $sql_where_and_arr[] = "w.`PAY_DATE`<DATE_SUB(NOW(), INTERVAL 33 MONTH)";
- // $sql_where_and_arr[] = "w.`PAY_DATE`>DATE_SUB(NOW(), INTERVAL 36 MONTH)";
- // }
- // else if ($filter_selected == 'tel1') {
- // $sql_where_and_arr[] = "w.`PAY_SALDO`<=-0.05";
- // $sql_where_and_arr[] = "w.`A_STATUS` in('wezwanie1', 'waiting-wezwanie2', 'wezwanie2', 'waiting-krd')";
- // $sql_where_and_arr[] = "( w.`LAST_PHONE_STATUS_DATE`='0000-00-00'
- // or w.`LAST_PHONE_STATUS_DATE`<DATE_SUB(NOW(), INTERVAL 3 MONTH) )";
- // }
- // else if ($filter_selected == 'bad_address') {
- // $sql_where_and_arr[] = "w.`BAD_ADDRESS`>0";
- // $sql_where_and_arr[] = "w.`PAY_SALDO`<=-0.05";
- // }
- // else if ($filter_selected == 'stan_zero') {
- // $sql_where_and_arr[] = "w.`A_STATUS`='WAITING'";
- // $sql_where_and_arr[] = "w.`PAY_SALDO`>-0.05";
- // }
- // else if ($filter_selected == '10-ego') {
- // $sql_where_and_arr[] = "w.`A_STATUS`='WAITING'";
- // $sql_where_and_arr[] = "w.`PAY_SALDO`<=-0.05";
- // }
- // else if ($filter_selected == 'has_nr_sad') {
- // $sql_where_and_arr[] = "w.`NR_SPRAWY_SAD`!=''";
- // }
- // else if ($filter_selected == 'has_nr_komornik') {
- // $sql_where_and_arr[] = "w.`NR_SPRAWY_KOMORNIK`!=''";
- // }
- // else if ($filter_selected == 'has_ustalenia') {
- // $sql_where_and_arr[] = "w.`L_APPOITMENT_INFO`!=''";
- // }
- // else if ($filter_selected == 'sad_and_komornik') {
- // $sql_where_and_arr[] = "w.`A_STATUS`='sad' and w.`NR_SPRAWY_KOMORNIK`!=''";
- // }
- // else if ($filter_selected == 'sad_bez_komornik') {
- // $sql_where_and_arr[] = "w.`A_STATUS`='sad' and w.`NR_SPRAWY_KOMORNIK`=''";
- // }
- // else if ($filter_selected == 'isMovedToVectra') {
- // $sql_where_and_arr[] = "w.`IS_MOVED_TO_VECTRA`=1";
- // }
- // else {
- // $sql_where_and_arr[] = "w.`A_STATUS`='{$filter_selected}'";
- // }
- 'Saldo' => $windykInfo['PAY_SALDO'],
- 'Termin ost. fv' => $windykInfo['PAY_DATE'], // Data wymagalności ostatniej faktury
- 'Zaległe faktury' => $windykInfo['PAY_FVAT'],
- 'Adresy usług' => $windykInfo['SERVICES_STREETS'],
- ];
- return UI::h('div', [], [
- UI::h('p', [ 'style' => "border-left:3px solid #ddd; padding-left:6px; font-weight:bold" ], [
- "Informacje o płatnościach",
- ($windykInfo['A_STATUS_UPDATE_DATE'] < date("Y-m-d"))
- ? UI::h('div', [ 'class' => "text-danger" ], [
- "Uwaga: Wymagają aktualizacji",
- " ",
- UI::h('em', [ 'class' => "text-muted" ], "(dane z {$windykInfo['A_STATUS_UPDATE_DATE']})"),
- // TODO: btn aktualizuj lub auto aktualizuj przed pokazaniem danych
- ])
- : "",
- ]),
- UI::h('table', [ 'class' => "table table-bordered", 'style' => "width:auto; background:#fff" ],
- array_map(function ($fieldName) use ($outWindykInfo) {
- return UI::h('tr', [], [
- UI::h('th', [], $fieldName),
- UI::h('td', [], $outWindykInfo[$fieldName]),
- ]);
- }, array_keys($outWindykInfo))
- ),
- UI::h('table', [ 'class' => "table table-bordered", 'style' => "width:auto; display:none; background:yellow" ],
- array_map(function ($fieldName) use ($windykInfo) {
- return UI::h('tr', [], [
- UI::h('th', [], $fieldName),
- UI::h('td', [], $windykInfo[$fieldName]),
- ]);
- }, array_keys($windykInfo))
- ),
- ]);
- }
- public static function user(&$user) {
- $bad_address_task = V::get('bad_address', '', $_POST);
- $bad_address_msg = array();
- if ($bad_address_task) {
- $id_koresp = V::get('ID_KORESP', 0, $_POST, 'int');
- if ($id_koresp <= 0) {
- $bad_address_msg['error_id_koresp'] = true;
- } else {
- if ($bad_address_task == 'save') {
- if (!Windykacja_StatsHelper::bad_address_save($user, $id_koresp)) {
- $bad_address_msg['error'] = true;
- } else {
- $bad_address_msg['ok'] = true;
- }
- }
- else if ($bad_address_task == 'confirm') {
- if (!Windykacja_StatsHelper::bad_address_confirm($user, $id_koresp)) {
- $bad_address_msg['error'] = true;
- } else {
- $bad_address_msg['ok'] = true;
- }
- }
- }
- }
- $change_status_task = V::get('change_status', '', $_POST);
- $change_status_msg = array();
- if ($change_status_task) {
- if ($change_status_task == 'change') {
- $new_status = V::get('new_status', '', $_POST);
- $fltr_arr = Windykacja_StatsHelper::get_filters();
- if (!array_key_exists($new_status, $fltr_arr)) {
- $change_status_msg['error'] = true;
- } else {
- if (!Windykacja_StatsHelper::change_status_save($user, $new_status)) {
- $change_status_msg['error'] = true;
- } else {
- $change_status_msg['ok'] = true;
- }
- }
- }
- }
- $set_nr_sprawy_krd_task = V::get('set_nr_sprawy_krd', '', $_POST);
- $set_nr_sprawy_krd_msg = array();
- if ($set_nr_sprawy_krd_task) {
- if ($set_nr_sprawy_krd_task == 'change') {
- $nr_sprawy_krd = V::get('nr_sprawy_krd', '', $_POST);
- if (!Windykacja_StatsHelper::nr_sprawy_krd_save($user, $nr_sprawy_krd)) {
- $set_nr_sprawy_krd_msg['error'] = true;
- } else {
- $set_nr_sprawy_krd_msg['ok'] = true;
- }
- }
- }
- $set_nr_sprawy_sad_task = V::get('set_nr_sprawy_sad', '', $_POST);
- $set_nr_sprawy_sad_msg = array();
- if ($set_nr_sprawy_sad_task) {
- if ($set_nr_sprawy_sad_task == 'change') {
- $nr_sprawy_sad = V::get('nr_sprawy_sad', '', $_POST);
- if (!Windykacja_StatsHelper::nr_sprawy_sad_save($user, $nr_sprawy_sad)) {
- $set_nr_sprawy_sad_msg['error'] = true;
- } else {
- $set_nr_sprawy_sad_msg['ok'] = true;
- }
- }
- }
- $set_nr_sprawy_komornik_task = V::get('set_nr_sprawy_komornik', '', $_POST);
- $set_nr_sprawy_komornik_msg = array();
- if ($set_nr_sprawy_komornik_task) {
- if ($set_nr_sprawy_komornik_task == 'change') {
- $nr_sprawy_komornik = V::get('nr_sprawy_komornik', '', $_POST);
- if (!Windykacja_StatsHelper::nr_sprawy_komornik_save($user, $nr_sprawy_komornik)) {
- $set_nr_sprawy_komornik_msg['error'] = true;
- } else {
- $set_nr_sprawy_komornik_msg['ok'] = true;
- }
- }
- }
- $set_ustalenia_info_task = V::get('set_ustalenia_info', '', $_POST);
- $set_ustalenia_info_msg = array();
- if ($set_ustalenia_info_task) {
- if ($set_ustalenia_info_task == 'change') {
- $ustalenia_date = V::get('ustalenia_date', '', $_POST);
- $ustalenia_info = V::get('ustalenia_info', '', $_POST);
- if (!Windykacja_StatsHelper::ustalenia_info_save($user, $ustalenia_date, $ustalenia_info)) {
- $set_ustalenia_info_msg['error'] = true;
- } else {
- $set_ustalenia_info_msg['ok'] = true;
- }
- }
- }
- $dataBlokady = '';
- if ($user->STATUS == 9) {
- $db = DB::getDB();
- $sqlDataBlokadyTest = "
- select c.`ID`, c.`STATUS`, h.`STATUS` as h_status, h.`A_RECORD_UPDATE_DATE`, h.`A_RECORD_CREATE_DATE`
- from `COMPANIES` c
- join `COMPANIES_HIST` h on(h.`ID_USERS2`=c.`ID`)
- where (h.`STATUS`='9' or c.`STATUS`='9')
- ";
- $sqlDataBlokadyTestHasNoDate = "
- select c.`ID`, c.`STATUS`
- from `COMPANIES` c
- where c.`STATUS`='9'
- and not exists(select h.`ID`
- from `COMPANIES_HIST` h
- where h.`ID_USERS2`=c.`ID`
- and h.`STATUS`='9'
- )
- ";
- $sqlDataBlokady = "select h.`A_RECORD_UPDATE_DATE`
- from `COMPANIES_HIST` h
- where h.`ID_USERS2`='{$user->ID_BILLING_USERS}'
- and h.`STATUS`='9'
- order by h.`ID` desc
- limit 1
- ";
- $res = $db->query($sqlDataBlokady);
- if ($r = $db->fetch($res)) {
- $dataBlokady = $r->A_RECORD_UPDATE_DATE;
- }
- }
- $company = Windykacja_StatsModel::get_company($user);
- $nr_konta = Windykacja_FunkcjeL1::bankowy_formatuj_nrach(Windykacja_FunkcjeL1::bankowy_make_nrach($company->NR_RACH_MASS_PAY, $user->ID_BILLING_USERS, 0));
- echo'<h3>';
- 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>';
- echo ' » <code style="font-size:normal;color:green;">'."[".$user->id_users."]".'</code>';
- echo ' <b>'.$user->P_NAME.' '.$user->P_NAME_SECOND.'</b>';
- echo'</h3>';
- echo '<table class="" cellspacing="0" cellpadding="0" border="0"><tr><td style="vertical-align:top">';
- echo '<table class="tbl-view tbl-umowy-l2" cellspacing="0" cellpadding="0" border="1">';
- echo '<caption>';
- echo "Dane " . (($user->is_firma)? "firmy" : "klienta") . " ";
- if ($user->BAD_ADDRESS) {
- echo '<form action="" method="POST" style="display:inline">';
- echo '<input type="hidden" name="'."bad_address".'" value="'."confirm".'" />';
- $js = "if(this.nextSibling.style.display=='none'){this.nextSibling.style.display='block'}else{this.nextSibling.style.display='none'}; return false;";
- echo '<input type="button" value="'."popraw adres".'" onclick="'.$js.'" style="margin:1px 2px;padding:0 6px;" />';
- echo '<div style="display:none;">';
- echo '<label for="ID_KORESP">'."ID Koresp.".'</label>';
- echo '<input type="text" name="' . "ID_KORESP" . '" size="5" value="' . "" . '" />';
- echo '<input type="submit" value="'."zapisz".'" />';
- echo '</div>';
- echo '</form>';
- } else {
- echo '<form action="" method="POST" style="display:inline">';
- echo '<input type="hidden" name="'."bad_address".'" value="'."save".'" />';
- $js = "if(this.nextSibling.style.display=='none'){this.nextSibling.style.display='block'}else{this.nextSibling.style.display='none'}; return false;";
- echo '<input type="button" value="'."zgłoś błędny adres".'" onclick="'.$js.'" style="margin:1px 2px;padding:0 6px;" />';
- echo '<div style="display:none;">';
- echo '<label for="ID_KORESP">'."ID Koresp.".'</label>';
- echo '<input type="text" name="' . "ID_KORESP" . '" size="5" value="' . "" . '" />';
- echo '<input type="submit" value="'."zapisz".'" />';
- echo '</div>';
- echo '</form>';
- }
- if (!empty($bad_address_msg)) {
- if ('id_koresp' == V::get('error', '', $bad_address_msg)) {
- echo '<div class="red">'."Podaj poprawny ID Koresp.".'</div>';
- } else if (true == V::get('error', false, $bad_address_msg)) {
- echo '<div class="red">'."Error!".'</div>';
- } else if (true == V::get('ok', false, $bad_address_msg)) {
- echo '<div style="color:green">'."Zapisano pomyślnie.".'</div>';
- }
- }
- echo '</caption>';
- echo'<tr>';
- echo'<th>' . "Adres:" . '</th>';
- echo'<td'.(($user->BAD_ADDRESS)? ' style="background-color:#FF7878;"' : '').'>';
- echo "ul. ".$user->P_ADDRESS_STREET." ".$user->P_ADDRESS_HOUSE."/".$user->P_ADDRESS_HOME.", ".$user->P_ADDRESS_POST_CODE." ".$user->P_ADDRESS_CITY;
- echo'</td>';
- echo'</tr>';
- ?>
- <?php if ($user->P_ADRESS_KORESP_1282) : ?>
- <tr>
- <th title="Adres do korespondencji">Adres koresp.</th>
- <td><?php echo $user->P_ADRESS_KORESP_1282; ?></td>
- </tr>
- <?php endif; ?>
- <?php
- echo'<tr>';
- echo'<th>' . "Pesel:" . '</th>';
- echo'<td>';
- if ($user->P_PESEL) {
- echo $user->P_PESEL;
- } else {
- echo '<span style="color:#f00;">'."Brak numeru PESEL!".'</span>';
- }
- echo'</td>';
- echo'</tr>';
- echo'<tr>';
- echo'<th>' . "Nr telefonu:" . '</th>';
- echo'<td>';
- if ($user->P_PHONE) {
- echo $user->P_PHONE;
- } else {
- echo '<span style="color:#f00;">'."Brak!".'</span>';
- }
- echo'</td>';
- echo'</tr>';
- echo'<tr>';
- echo'<th>' . "Nr dowodu:" . '</th>';
- echo'<td>';
- if ($user->P_OTHER_DOC) {
- echo $user->P_OTHER_DOC;
- } else {
- echo '<span style="color:#f00;">'."Brak!".'</span>';
- }
- echo'</td>';
- echo'</tr>';
- echo'<tr>';
- echo'<th>' . "e-mail:" . '</th>';
- echo'<td>';
- if ($user->user_mail_contact) {
- echo '<a href="mailto:'.$user->user_mail_contact.'">'.$user->user_mail_contact.'</a>';
- } else {
- echo '<span style="color:#f00;">'."Brak!".'</span>';
- }
- echo'</td>';
- echo'</tr>';
- echo'<tr>';
- echo'<th>' . "Klient firmy:" . '</th>';
- echo'<td>';
- if ($user->BILLING_OWNER == 1) {
- echo 'BN - BIALL-NET';
- } else if ($user->BILLING_OWNER == 2) {
- echo 'ND - NETDAY';
- } else {
- echo 'nieznany';
- }
- echo'</td>';
- echo'</tr>';
- echo'<tr>';
- echo'<th>' . "Blokada:" . '</th>';
- echo'<td>';
- if ($user->STATUS == 9) {
- echo '<b style="color:red">' . "ZABLOKOWANY" . '</b>';
- if (!empty($dataBlokady)) {
- echo '<br>' . "od dnia " . substr($dataBlokady, 0, 10);
- }
- } else {
- echo 'brak blokady';
- }
- echo'</td>';
- echo'</tr>';
- ?>
- <tr>
- <th>Nr konta:</th>
- <td><?php echo $nr_konta; ?></td>
- </tr>
- <?php
- echo '</table>';
- echo '</td><td>' . " " . '</td><td style="vertical-align:top">';
- 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">';
- echo '<caption>';
- echo "Status windykacji ";
- echo '<code style="font-size:x-small; color:#ccc;">' . "(" . $user->WINDYKACJA_ID . ")" . '</code>';
- if ($user->A_STATUS_UPDATE_DATE < date("Y-m-d")) {
- 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
- }
- // TODO: zmien status klienta - przypisanie do odpowiedniej grupy
- echo '</caption>';
- echo '<tr>';
- echo '<th>' . "status:" . '</th>';
- echo '<td>';
- echo $user->A_STATUS;
- if (V::get('DBG', '', $_GET, 'int') > 0) {// TODO: TEST
- if ($user->A_STATUS == 'waiting-krd') {
- echo '<br />' . "wezwanie2_DATE: {$user->wezwanie2_DATE}";
- $wzw2 = new stdClass();
- $wzw2->Y = intval(substr($user->wezwanie2_DATE, 0, 4));
- $wzw2->m = intval(substr($user->wezwanie2_DATE, 5, 2));
- $wzw2->d = intval(substr($user->wezwanie2_DATE, 8, 2));
- echo '<br />' . "wzw2: {$wzw2->Y}-{$wzw2->m}-{$wzw2->d}";
- $wzw2->plus_60 = date("Y-m-d", mktime(0,0,0, $wzw2->m, $wzw2->d + 60, $wzw2->Y));
- echo '<br />' . "wezwanie2_DATE + 60 dni: {$wzw2->plus_60}";
- if ($wzw2->plus_60 < date("Y-m-d")) {
- echo '<br />' . "TODO: przenieść do krd";
- }
- }
- }// TODO: TEST
- echo ' <form action="" method="POST" style="display:inline">';
- echo '<input type="hidden" name="'."change_status".'" value="'."change".'" />';
- $fltr_arr = Windykacja_StatsHelper::get_filters();
- $fltr_options = array();
- foreach ($fltr_arr as $k_status => $v_arr) {
- $fltr_options[$k_status] = reset($v_arr);
- }
- echo '<select name="' . "new_status" . '">';
- foreach ($fltr_options as $k_ind => $v_label) {
- $sel = ($k_ind == $user->A_STATUS)? ' selected="selected"' : '';
- echo '<option value="' . $k_ind . '"' . $sel . '>' . "{$k_ind}: {$v_label}" . '</option>';
- }
- echo '</select>';
- echo '<input type="submit" value="'."zmień".'" />';
- echo '</form>';
- echo '</td>';
- echo '</tr>';
- echo '<tr>';
- echo '<th>' . "Nr sprawy w krd" . '</th>';
- echo '<td>';
- echo ' <form action="" method="POST" style="display:inline">';
- echo '<input type="hidden" name="'."set_nr_sprawy_krd".'" value="'."change".'" />';
- echo '<input type="text" name="'."nr_sprawy_krd".'" value="'.$user->NR_SPRAWY_KRD.'" />';
- echo '<input type="submit" value="'."zmień".'" />';
- echo '</form>';
- echo '</td>';
- echo '</tr>';
- echo '<tr>';
- echo '<th>' . "Nr sprawy w sądzie" . '</th>';
- echo '<td>';
- echo ' <form action="" method="POST" style="display:inline">';
- echo '<input type="hidden" name="'."set_nr_sprawy_sad".'" value="'."change".'" />';
- echo '<input type="text" name="'."nr_sprawy_sad".'" value="'.$user->NR_SPRAWY_SAD.'" />';
- echo '<input type="submit" value="'."zmień".'" />';
- echo '</form>';
- echo '</td>';
- echo '</tr>';
- echo '<tr>';
- echo '<th>' . "Nr sprawy u komornika" . '</th>';
- echo '<td>';
- echo ' <form action="" method="POST" style="display:inline">';
- echo '<input type="hidden" name="'."set_nr_sprawy_komornik".'" value="'."change".'" />';
- echo '<input type="text" name="'."nr_sprawy_komornik".'" value="'.$user->NR_SPRAWY_KOMORNIK.'" />';
- echo '<input type="submit" value="'."zmień".'" />';
- echo '</form>';
- echo '</td>';
- echo '</tr>';
- echo '<tr>';
- echo '<th>' . "Aktualne ustalenia z klientem" . '</th>';
- echo '<td>';
- echo ' <form action="" method="POST" style="display:inline">';
- echo '<input type="hidden" name="'."set_ustalenia_info".'" value="'."change".'" />';
- echo '<textarea style="width:100%" type="text" name="'."ustalenia_info".'">' . $user->L_APPOITMENT_INFO . '</textarea>';
- echo '<br />' . "Data: ";
- echo '<input type="text" name="'."ustalenia_date".'" value="'.$user->L_APPOITMENT_DATE.'" />';
- echo '<input type="submit" value="'."zmień".'" />';
- $js = "this.form.ustalenia_info.value=''; this.form.ustalenia_date.value='0000-00-00'; return false;";
- echo '<input type="reset" value="'."wyszyść".'" onclick="'.$js.'" />';
- echo '</form>';
- echo '</td>';
- echo '</tr>';
- echo '<tr>';
- echo '<th>' . "data ostatniej wpłaty:" . '</th>';
- echo '<td>';
- if ($user->LAST_PAY_DATE && $user->LAST_PAY_DATE != '0000-00-00') {
- echo $user->LAST_PAY_DATE;
- } else {
- echo '---';
- }
- echo '</td>';
- echo '</tr>';
- echo '<tr>';
- echo '<th>' . "data wymagalności ostatniej faktury:" . '</th>';
- echo '<td>';
- if ($user->PAY_DATE != '0000-00-00') {
- echo $user->PAY_DATE;
- }
- echo '</td>';
- echo '</tr>';
- echo '<tr>';
- echo '<th>' . "data wymagalności pierwszej faktury:" . '</th>';
- echo '<td>';
- if ($user->PAY_DATE_FIRST_FVAT != '0000-00-00') {
- echo $user->PAY_DATE_FIRST_FVAT;
- }
- echo '</td>';
- echo '</tr>';
- echo '<tr>';
- echo '<th>' . "termin płatności:" . '</th>';
- echo '<td>';
- if ($user->PAY_TERM != '0000-00-00') {
- echo $user->PAY_TERM;
- }
- echo '</td>';
- echo '</tr>';
- echo '<tr>';
- echo '<th>' . "Przeniesienie do Vectra?:" . '</th>';
- echo '<td>';
- if ($user->IS_MOVED_TO_VECTRA) {
- echo 'TAK';
- } else {
- echo '<span class="text-muted">NIE</span>';
- }
- echo '</td>';
- echo '</tr>';
- echo '</table>';
- echo '</td></tr></table>';
- // TODO: windykacja_status_info - grupa filtrow do ktorej nalezy klient
- Lib::loadClass('CompanyHelper');
- $db = DB::getDB();
- $comHelper = new CompanyHelper($db);
- $usr = $comHelper->getById($user->ID);
- $dealsActive = $comHelper->getDealsFull($user->ID, false);
- Lib::loadClass('PokazOfertyView');
- $pokaz_oferty_view = new PokazOfertyView();
- echo $pokaz_oferty_view->print_css();
- $pokaz_oferty_view->printServices($usr, $dealsActive);
- if(V::get('DBG_ACTIVE_SRV', '', $_GET) > 2){
- $activeServicesByType = array();
- $db = DB::getDB();
- $idUser = $user->ID;
- $sql = "
- select srv.`ID` as `ID_SERVICES`
- , srv.`NAME_LIST_SERVICES`
- , A_STATUS_L2_SQL_L1(srv.`ID`) as A_STATUS_CURRENT
- from `SERVICES` srv
- where srv.`ID_BILLING_USERS`='{$idUser}'
- ";
- DBG::_(true, true, "sql", $sql, __CLASS__, __FUNCTION__, __LINE__);
- $res = $db->query($sql);
- while ($r = $db->fetch($res)) {
- $activeServicesByType[] = $r;
- }
- DBG::_(true, true, "activeServicesByType", $activeServicesByType, __CLASS__, __FUNCTION__, __LINE__);
- $sql = "
- select
- IF(1 = (
- select 1 as hasActiveNET
- from `SERVICES` srv
- where srv.`ID_BILLING_USERS`='{$idUser}'
- and srv.`NAME_LIST_SERVICES`='USERS2'
- and 'NORMAL'=A_STATUS_L2_SQL_L1(srv.`ID`)
- limit 1
- ), 1, 0) as hasActiveNET
- ,
- IF(1 = (
- select 1 as hasActiveTV
- from `SERVICES` srv
- where srv.`ID_BILLING_USERS`='{$idUser}'
- and srv.`NAME_LIST_SERVICES`='TV'
- and 'NORMAL'=A_STATUS_L2_SQL_L1(srv.`ID`)
- limit 1
- ), 1, 0) as hasActiveTV
- ";
- DBG::_(true, true, "sql", $sql, __CLASS__, __FUNCTION__, __LINE__);
- $activeServicesByType = array();
- $res = $db->query($sql);
- while ($r = $db->fetch($res)) {
- $activeServicesByType = $r;
- }
- DBG::_(true, true, "activeServicesByType", $activeServicesByType, __CLASS__, __FUNCTION__, __LINE__);
- }
- // aktualny status klienta
- echo'<div>';
- if ($user->A_STATUS_UPDATE_DATE < date("Y-m-d")) {
- }
- else {
- switch ($user->A_STATUS) {
- case 'WAITING': {
- echo'<p>' . "Status OK" . '</p>';
- }
- break;
- case 'wezwanie1': {
- $default_PAY_TERM = date("Y-m-d", mktime(0,0,0,date('m'), date('d') + 14, date('Y')));
- $frm_errors = array();
- $frm_msgs = array();
- $frm = array();
- $frm['wezwanie1_DATE'] = date("Y-m-d");
- $frm['PAY_TERM'] = V::get('PAY_TERM', $default_PAY_TERM, $_POST);
- $frm['ID_PROJ'] = V::get('ID_PROJ', 0, $_POST, 'int');
- if ('set_wezwanie' == V::get('user_task', '', $_POST)) {
- if ($frm['ID_PROJ'] == 0) {
- $frm_errors[] = "Brak numeru ID Projketu";
- }
- if (empty($frm_errors)) {
- $ret = Windykacja_StatsHelper::update_user($user, $frm);
- if ($ret) {
- $frm_msgs[] = "Status klienta został zaktualizowany";
- } else {
- $frm_errors[] = "Status klienta nie został zaktualizowany";
- }
- }
- }
- echo '<div class="box box-blue" style="margin:6px 0;">';
- if ($user->PAY_FVAT > 0 && $user->PAY_SALDO <= -0.05) {
- echo "Saldo klienta: " . '<b style="color:#f00">' . "{$user->PAY_SALDO} zł" . '</b>' . " ({$user->PAY_FVAT} niezapłaconych faktur)" . '<br />';
- echo'<br />';
- }
- echo '<b style="color:#0B0B8E">'."Wysłać wezwanie do zapłaty".'</b>'.'<br />';
- if (!empty($frm_errors)) {
- echo'<p style="color:#f00">' . implode('<br />', $frm_errors) . '</p>';
- }
- if (!empty($frm_msgs)) {
- echo'<p style="color:green">' . implode('<br />', $frm_msgs) . '</p>';
- }
- echo'<form action="" method="post">';
- echo'<input type="hidden" name="'."user_task".'" value="'."set_wezwanie".'" />';
- echo "Data płatności: ";
- echo'<input type="text" name="'."PAY_TERM".'" value="'.$frm['PAY_TERM'].'" />';
- echo " ID Projektu (np. 335 - klienci BIALL-NET lub 4956 - klienci Vectra): ";
- echo'<input type="text" name="'."ID_PROJ".'" value="'.$frm['ID_PROJ'].'" />';
- echo'<input type="submit" value="'."Zapisz".'" />';
- echo'</form>';
- if ($user->wezwanie1_DATE != '0000-00-00') {
- echo'<br />';
- $ico_print = '<img src="icon/print.gif" height="16" />';
- 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>';
- }
- echo '</div>';// .box-blue
- }
- break;
- case 'waiting-wezwanie2': {// TODO: only auto update ?
- echo '<div class="box box-blue" style="margin:6px 0;">';
- if ($user->PAY_FVAT > 0 && $user->PAY_SALDO <= -0.05) {
- echo "Saldo klienta: " . '<b style="color:#f00">' . $user->PAY_SALDO . " zł" . '</b>' . " (" . $user->PAY_FVAT ." niezapłaconych faktur)" . '<br />';
- echo'<br />';
- }
- echo '<b style="color:#0B0B8E">'."Oczekiwanie na uzbieranie kwoty 300zł (firmy 500zł)".'</b>'.'<br />';
- if (!empty($frm_errors)) {
- echo'<p style="color:#f00">';
- echo implode('<br />', $frm_errors);
- echo'</p>';
- }
- echo'<form action="" method="post">';
- // echo'<input type="hidden" name="'."user_task".'" value="'."set_".'" />';
- // echo'<input type="submit" value="'."Zapisz".'" />';
- echo'</form>';
- if ($user->wezwanie1_DATE != '0000-00-00') {
- echo'<br />';
- $ico_print = '<img src="icon/print.gif" height="16" />';
- 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>';
- }
- echo '</div>';// .box-blue
- }
- break;
- case 'wezwanie2': {
- $default_PAY_TERM = date("Y-m-d", mktime(0,0,0,date('m'), date('d') + 14, date('Y')));
- $frm_msgs = array();
- $frm_errors = array();
- $frm = array();
- $frm['wezwanie2_DATE'] = date("Y-m-d");
- $frm['PAY_TERM'] = V::get('PAY_TERM', $default_PAY_TERM, $_POST);
- $frm['ID_PROJ'] = V::get('ID_PROJ', 0, $_POST, 'int');
- if ('set_wezwanie2' == V::get('user_task', '', $_POST)) {
- if ($frm['ID_PROJ'] == 0) {
- $frm_errors[] = "Brak numeru ID korespondencji";
- }
- if (empty($frm_errors)) {
- $ret = Windykacja_StatsHelper::update_user($user, $frm);
- if ($ret) {
- $frm_msgs[] = "Status klienta został zaktualizowany";
- } else {
- $frm_errors[] = "Status klienta nie został zaktualizowany";
- }
- }
- }
- echo '<div class="box box-blue" style="margin:6px 0;border-color:#666;">';
- if ($user->PAY_FVAT > 0 && $user->PAY_SALDO <= -0.05) {
- echo "Saldo klienta: " . '<b style="color:#f00">' . "{$user->PAY_SALDO} zł" . '</b>' . " ({$user->PAY_FVAT} niezapłaconych faktur)" . '<br />';
- echo'<br />';
- }
- echo '<b style="color:#0B0B8E">'."Wysłać ostateczne wezwanie do zapłaty".'</b>'.'<br />';
- if (!empty($frm_errors)) {
- echo'<p style="color:#f00">' . implode('<br />', $frm_errors) . '</p>';
- }
- if (!empty($frm_msgs)) {
- echo'<p style="color:green">' . implode('<br />', $frm_msgs) . '</p>';
- }
- echo'<form action="" method="post">';
- echo'<input type="hidden" name="'."user_task".'" value="'."set_wezwanie2".'" />';
- echo "Data płatności: ";
- echo'<input type="text" name="'."PAY_TERM".'" value="'.$frm['PAY_TERM'].'" />';
- echo " ID Projektu: ";
- echo'<input type="text" name="'."ID_PROJ".'" value="'.$frm['ID_PROJ'].'" />';
- echo'<input type="submit" value="'."Zapisz".'" />';
- echo'</form>';
- if ($user->wezwanie2_DATE != '0000-00-00') {
- echo'<br />';
- $ico_print = '<img src="icon/print.gif" height="16" />';
- 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>';
- }
- echo '</div>';// .box-blue
- }
- break;
- case 'waiting-krd': {
- if ($user->wezwanie2_DATE != '0000-00-00') {
- echo'<br />';
- $ico_print = '<img src="icon/print.gif" height="16" />';
- 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>';
- }
- }
- break;
- default:
- echo'<p>' . "TODO: (".$user->A_STATUS.")" . '</p>';
- }
- }
- //if ($user->BA_TIMESTAMP) {
- // echo "Stan wzajemnych rozrachunków:";
- // 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>";
- // echo", i jest to stan na dzień ".date("Y-m-d",$user->BA_TIMESTAMP)." ";
- //}
- // phone contact
- $phone_status_info = Windykacja_StatsHelper::get_phone_status_info($user);
- $sms_status_info = Windykacja_StatsHelper::get_sms_status_info($user);
- $mail_status_info = Windykacja_StatsHelper::get_mail_status_info($user);
- $frm_errors = array();
- $frm_msgs = array();
- if (1 == V::get('phone_contact_save', 0, $_POST, 'int')) {
- if ('' == ($phone_status = V::get('phone_status', '', $_POST))) {
- $frm_errors[] = "Nic nie zaznaczono!";
- } else {
- if (!array_key_exists($phone_status, $phone_status_info)) {
- $frm_errors[] = "Nieprawidłowa wartość!";
- } else {
- $ret = Windykacja_StatsHelper::update_phone_status($user, $phone_status);
- if ($ret) {
- $frm_msgs[] = "Dane zapisano pomyślnie";
- } else {
- $frm_errors[] = "Wystąpił błąd podczas zapisu danych";
- }
- }
- }
- }
- if (1 == V::get('sms_contact_save', 0, $_POST, 'int')) {
- if ('' == ($sms_status = V::get('sms_status', '', $_POST))) {
- $frm_errors[] = "Nic nie zaznaczono!";
- } else {
- if (!array_key_exists($sms_status, $sms_status_info)) {
- $frm_errors[] = "Nieprawidłowa wartość!";
- } else {
- $ret = Windykacja_StatsHelper::update_sms_status($user, $sms_status);
- if ($ret) {
- $frm_msgs[] = "Dane zapisano pomyślnie";
- } else {
- $frm_errors[] = "Wystąpił błąd podczas zapisu danych";
- }
- }
- }
- }
- if (1 == V::get('mail_contact_save', 0, $_POST, 'int')) {
- if ('' == ($mail_status = V::get('mail_status', '', $_POST))) {
- $frm_errors[] = "Nic nie zaznaczono!";
- } else {
- if (!array_key_exists($mail_status, $mail_status_info)) {
- $frm_errors[] = "Nieprawidłowa wartość!";
- } else {
- $ret = Windykacja_StatsHelper::update_mail_status($user, $mail_status);
- if ($ret) {
- $frm_msgs[] = "Dane zapisano pomyślnie";
- } else {
- $frm_errors[] = "Wystąpił błąd podczas zapisu danych";
- }
- }
- }
- }
- // add old id_koresp to hist (events)
- if (1 == V::get('contact_add_id_koresp_save', 0, $_POST, 'int')) {
- if (($id_koresp = V::get('id_koresp', '', $_POST, 'int')) <= 0) {
- $frm_errors[] = "Nie podano numeru korespondencji!";
- } else {
- $koresp_type = V::get('koresp_type', '', $_POST);
- $ret = Windykacja_StatsHelper::update_old_id_koresp($user, $id_koresp, $koresp_type);
- if ($ret) {
- $frm_msgs[] = "Dane zapisano pomyślnie";
- } else {
- $frm_errors[] = "Wystąpił błąd podczas zapisu danych";
- }
- }
- }
- ?>
- <script type="text/javascript">
- function frm_kontakt_phone_submit_callback(frm){
- var len=frm.phone_status.length;
- var val='';
- for(var i=0; i < len; i++){
- if(frm.phone_status[i].checked){
- var val = frm.phone_status[i].value;
- }
- }
- if (val!='') {
- return true;
- } else {
- alert('Nic nie zaznaczono.');
- }
- return false;
- }
- function frm_kontakt_sms_submit_callback(frm){
- var len=frm.sms_status.length;
- var val='';
- if (!len && frm.sms_status.type && frm.sms_status.type == 'radio') {
- if (frm.sms_status.checked) {
- val = frm.sms_status[i].value;
- }
- } else {
- for(var i=0; i < len; i++){
- if(frm.sms_status[i].checked){
- var val = frm.sms_status[i].value;
- }
- }
- }
- if (val!='') {
- return true;
- } else {
- alert('Nic nie zaznaczono.');
- }
- return false;
- }
- function frm_kontakt_add_id_koresp(frm){
- var val=frm.id_koresp.value;
- if (val!='') {
- return true;
- } else {
- alert('Nie podano numeru korespondencji.');
- }
- return false;
- }
- </script>
- <div class="box" style="margin:6px 0;border-color:#666;">
- <?php if (!empty($frm_errors)) {
- echo'<p style="color:#f00">' . implode('<br />', $frm_errors) . '</p>';
- }
- if (!empty($frm_msgs)) {
- echo'<p style="color:green">' . implode('<br />', $frm_msgs) . '</p>';
- }
- ?>
- <table cellspacing="0" cellpadding="0" border="0" class="tbl-td-top"><tr>
- <td style="padding:0 20px 0 0;color:blue;">
- <img src="icon/phone.png" alt="tel" />
- kontakt z klientem
- </td>
- <td style="padding:0 5px;text-align:right">
- <nobr>Co ustalono:</nobr>
- </td>
- <td style="min-width:300px;">
- <form action="" method="post" onsubmit="return frm_kontakt_phone_submit_callback(this);">
- <div id="kontakt-phone">
- <input type="hidden" name="phone_contact_save" value="1" />
- <?php foreach ($phone_status_info as $k_type => $v_info) {
- echo '<input type="radio" name="'."phone_status".'" value="' . $k_type . '" />'; echo " " . $v_info['label'] . " " . $v_info['date'] . '<br />';
- } ?>
- </div>
- <input type="submit" value="zapisz" />
- </form>
- </td>
- <td style="width:40px">
- </td>
- <td>
- <?php if (!empty($sms_status_info)) : ?>
- <form action="" method="post" onsubmit="return frm_kontakt_sms_submit_callback(this);">
- <div id="kontakt-sms">
- <input type="hidden" name="sms_contact_save" value="1" />
- <?php foreach ($sms_status_info as $k_type => $v_info) {
- echo '<input type="radio" name="'."sms_status".'" value="' . $k_type . '" />'; echo " {$v_info['label']}:<br> {$v_info['msg']}" . '<br />';
- } ?>
- </div>
- <input type="submit" value="wyślij" />
- </form>
- <?php endif; ?>
- </td>
- <td style="width:40px">
- </td>
- <td>
- <?php if (!empty($mail_status_info)) : ?>
- <form action="" method="post" onsubmit="return frm_kontakt_mail_submit_callback(this);">
- <div id="kontakt-mail">
- <input type="hidden" name="mail_contact_save" value="1" />
- <?php foreach ($mail_status_info as $k_type => $v_info) {
- echo '<input type="radio" name="'."mail_status".'" value="' . $k_type . '" />'; echo " {$v_info['label']}:<br> {$v_info['msg']}" . '<br />';
- } ?>
- </div>
- <input type="submit" value="wyślij" />
- </form>
- <?php endif; ?>
- </td>
- </tr></table>
- </div>
- <div class="box" style="margin:6px 0;border-color:#666;">
- <form action="" method="post" onsubmit="return frm_kontakt_add_id_koresp(this);">
- <input type="hidden" name="contact_add_id_koresp_save" value="1" />
- Dodaj korespondencję z klientem - ID_KORESP:
- <input type="text" name="id_koresp" value="" class="i" />
- <input type="submit" value="zapisz" />
- </form>
- </div>
- <div class="box" style="margin:6px 0;border-color:#666;">
- <?php
- $ico_print = '<img src="icon/print.gif" height="16" />';
- 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>';
- ?>
- </div>
- </div>
- <?php
- }
- public static function items_filters() {
- $filter_arr = Windykacja_StatsHelper::get_filters();
- $filter_selected = Windykacja_StatsHelper::get_filter_selected();
- $status_cnt = Windykacja_StatsHelper::get_status_count();// {cnt, suma_zaleglosci}
- // pomin filtry
- unset($filter_arr['15']);
- unset($filter_arr['blokada']);
- unset($filter_arr['WAITING']);
- $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');
- $sub_filters_arr = array();
- foreach ($sub_filters as $v_filter_name) {
- if (array_key_exists($v_filter_name, $filter_arr)) {
- $sub_filters_arr[$v_filter_name] = $filter_arr[$v_filter_name];
- unset($filter_arr[$v_filter_name]);
- }
- }
- $zewn_filters = array('waiting-sad', 'docs-in-sad', 'sad');
- $zewn_filters_arr = array();
- foreach ($zewn_filters as $v_filter_name) {
- if (array_key_exists($v_filter_name, $filter_arr)) {
- $zewn_filters_arr[$v_filter_name] = $filter_arr[$v_filter_name];
- unset($filter_arr[$v_filter_name]);
- }
- }
- echo'<table cellspacing="0" cellpadding="0" border="1" style="background:#ddd;border-color:#666;"><tr><td style="vertical-align:top">';
- if (!empty($filter_selected)) {
- echo'<a href="' . "??MENU_INIT=USERS2_WINDYKACJA_STATUS" . '" title="'."Kasuj filtry".'">' . '<img src="icon/del.png" height="16" alt="'."Kasuj filtry".'" />' . '</a>';
- echo '</td><td>';
- }
- echo'<table class="tbl-view historia-platnosci-filters" cellspacing="0" cellpadding="0" border="1">';
- echo'<thead>';
- echo'<tr>';
- foreach ($filter_arr as $k => $v_arr) {
- $cls = ($filter_selected == $k)? ' class="selected"' : '';
- echo'<td' . $cls . '>';
- if ($desc = V::get('desc', '', $v_arr)) {
- echo '<span title="' . end($desc) . '">' . reset($desc) . '</span>';
- }
- echo'</td>';
- }
- if (!empty($zewn_filters_arr)) {
- echo '<td colspan="'.count($zewn_filters_arr).'" style="background:#f00;color:#fff;font-weight:bold;">' . "Windykacja zewnętrzna" . '</td>';
- }
- echo'</tr>';
- echo'<tr>';
- foreach ($filter_arr as $k => $v_arr) {
- $cls = ($filter_selected == $k)? ' class="selected"' : '';
- echo'<td' . $cls . '>';
- echo '<a href="' . "?MENU_INIT=USERS2_WINDYKACJA_STATUS&_f=" . $k . '">' . reset($v_arr) . '</a>';
- //$stat_cnt = V::get($k, 0, $status_cnt, 'int');
- //echo ' <span style="color:#f00;" title="' . $stat_cnt . " klinetów" . '">' . "(" . $stat_cnt . ")" . '</span>';
- $stat_cnt = 0;
- if (array_key_exists($k, $status_cnt)) {
- $stat_cnt = $status_cnt[$k]->cnt;
- echo ' <span style="color:#000;" title="' . $stat_cnt . " klinetów" . '">' . "(" . $stat_cnt . ")" . '</span>';
- $stat_saldo = number_format($status_cnt[$k]->suma_zaleglosci, 2, ',', ' ');
- echo '<br />' . '<span style="color:#f00;" title="' . $stat_saldo . " zł zagdłużenia" . '">' . $stat_saldo . '</span>';
- } else {
- echo ' <span style="color:#000;" title="' . $stat_cnt . " klinetów" . '">' . "(" . $stat_cnt . ")" . '</span>';
- }
- echo'</td>';
- }
- if (!empty($zewn_filters_arr)) {
- foreach ($zewn_filters_arr as $k => $v_arr) {
- $cls = ($filter_selected == $k)? ' class="selected"' : '';
- echo'<td' . $cls . '>';
- echo '<a href="' . "?MENU_INIT=USERS2_WINDYKACJA_STATUS&_f=" . $k . '">' . reset($v_arr) . '</a>';
- //$stat_cnt = V::get($k, 0, $status_cnt, 'int');
- //echo ' <span style="color:#f00;" title="' . $stat_cnt . " klinetów" . '">' . "(" . $stat_cnt . ")" . '</span>';
- $stat_cnt = 0;
- if (array_key_exists($k, $status_cnt)) {
- $stat_cnt = $status_cnt[$k]->cnt;
- echo ' <span style="color:#000;" title="' . $stat_cnt . " klinetów" . '">' . "(" . $stat_cnt . ")" . '</span>';
- $stat_saldo = number_format($status_cnt[$k]->suma_zaleglosci, 2, ',', ' ');
- echo '<br />' . '<span style="color:#f00;" title="' . $stat_saldo . " zł zagdłużenia" . '">' . $stat_saldo . '</span>';
- } else {
- echo ' <span style="color:#000;" title="' . $stat_cnt . " klinetów" . '">' . "(" . $stat_cnt . ")" . '</span>';
- }
- echo'</td>';
- }
- }
- echo'</tr>';
- echo'</thead>';
- echo'</table>';
- if (!empty($sub_filters_arr)) {
- echo '<table class="tbl-view historia-platnosci-subfilters" cellspacing="0" cellpadding="0" border="1">';
- echo '<thead><tr>';
- foreach ($sub_filters_arr as $k => $v_arr) {
- $cls = ($filter_selected == $k)? ' class="selected"' : '';
- echo'<td' . $cls . '>';
- echo '<a href="' . "?MENU_INIT=USERS2_WINDYKACJA_STATUS&_f=" . $k . '">' . reset($v_arr) . '</a>';
- //$stat_cnt = V::get($k, 0, $status_cnt, 'int');
- //echo ' <span style="color:#f00;" title="' . $stat_cnt . " klinetów" . '">' . "(" . $stat_cnt . ")" . '</span>';
- $stat_cnt = 0;
- if (array_key_exists($k, $status_cnt)) {
- $stat_cnt = $status_cnt[$k]->cnt;
- echo ' <span style="color:#000;" title="' . $stat_cnt . " klinetów" . '">' . "(" . $stat_cnt . ")" . '</span>';
- $stat_saldo = number_format($status_cnt[$k]->suma_zaleglosci, 2, ',', ' ');
- echo '<br />' . '<span style="color:#000;" title="' . $stat_saldo . " zł zagdłużenia" . '">' . $stat_saldo . '</span>';
- } else {
- echo ' <span style="color:#000;" title="' . $stat_cnt . " klinetów" . '">' . "(" . $stat_cnt . ")" . '</span>';
- }
- echo'</td>';
- }
- echo '</tr></thead>';
- echo '</table>';
- }
- echo '</td></tr></table>';
- echo'<br />';
- }
- public static function items($q, &$page_nav, &$items) {
- $page_nav->links = array();
- $out_link_arr = V::copy($page_nav->base_link_arr);
- $out_link_arr['_p'] = 0;
- $out_link = V::make_link('', $out_link_arr);
- $page_nav->links[] = '<a href="' . $out_link . '" title="'."Pierwsza strona".'">'."|<<".'</a>';
- if ($page_nav->page_nr > 0) {
- $out_link_arr = V::copy($page_nav->base_link_arr);
- $out_link_arr['_p'] = $page_nav->page_nr - 1;
- $out_link = V::make_link('', $out_link_arr);
- $page_nav->links[] = '<a href="' . $out_link . '" title="'."Poprzednia strona".'">'."<< -{$page_nav->page_limit}".'</a>';
- } else {
- $page_nav->links[] = " << ";
- }
- $page_nav->links[] = '<span>'.($page_nav->page_nr * $page_nav->page_limit).'</span>';
- $page_nav->links[] = '<span title="'."Znaleziono ".$page_nav->total." rekordów".'">'."({$page_nav->total}) ".'</span>';
- $out_link_arr = V::copy($page_nav->base_link_arr);
- $out_link_arr['_p'] = $page_nav->page_nr + 1;
- $out_link = V::make_link('', $out_link_arr);
- $page_nav->links[] = '<a href="' . $out_link . '" title="'."Nastepna strona".'">'."+{$page_nav->page_limit} >>".'</a>';
- $out_link_arr = V::copy($page_nav->base_link_arr);
- $out_link_arr['_p'] = $page_nav->last_page_nr;
- $out_link = V::make_link('', $out_link_arr);
- $page_nav->links[] = '<a href="' . $out_link . '" title="'."Ostatnia strona".'">'.">>|".'</a>';
- $page_nav_out = '<div class="tbl-page-nav">' . implode(" ", $page_nav->links);
- $out_link_arr = V::copy($page_nav->base_link_arr);
- $out_link_arr['task'] = 'export_csv';
- $out_link_arr['HEADER_NOT_INIT'] = 'YES';
- $out_link = V::make_link('', $out_link_arr);
- $page_nav_out .= ' <a style="margin:0 0 0 20px;" href="' . $out_link . '" target="_blank">export csv</a>';
- $out_link_arr = V::copy($page_nav->base_link_arr);
- $out_link_arr['task'] = 'send_mass_mail';
- $out_link = V::make_link('', $out_link_arr);
- $page_nav_out .= ' <a style="margin:0 0 0 20px;" href="' . $out_link . '" target="_blank">send mail</a>';
- $out_link_arr = V::copy($page_nav->base_link_arr);
- $out_link_arr['task'] = 'send_mass_sms';
- $out_link = V::make_link('', $out_link_arr);
- $page_nav_out .= ' <a style="margin:0 0 0 20px;" href="' . $out_link . '" target="_blank">send sms</a>';
- $page_nav_out .= '</div>';
- if (empty($items)) {
- echo'<p style="color:red">'."Brak danych".'</p>';
- return;
- }
- echo $page_nav_out;
- $cols_order_by = Windykacja_StatsModel::get_order_by_fields();
- $cols = array();
- $cols['ID_BILLING_USERS'] = array('label'=>'Nr klienta', 'title'=>'ID_BILLING_USERS');
- $cols['is_firma'] = array('label'=>'F', 'title'=>'is_firma: Firma 1 - tak, 0 nie');
- $cols['BILLING_OWNER'] = array('label'=>'COM', 'title'=>'BILLING_OWNER: Klient firmy 1 - BIALL-NET, 2 - NETDAY');
- $cols['BLOKADA'] = array('label'=>'B', 'title'=>'BLOKADA: Informacja o blokadzie');
- $cols['P_NAME'] = array('label'=>'imie i nazwisko', 'title'=>'P_NAME');
- $cols['P_ADDRESS_STREET'] = array('label'=>'adres', 'title'=>'P_ADDRESS_STREET');
- $cols['P_ADDRESS_Koresp'] = array('label'=>'adres koresp.', 'title'=>'Adres do korespondencji');
- $cols['P_PHONE'] = array('label'=>'nr telefonu', 'title'=>'P_PHONE');
- $cols['user_mail_contact'] = array('label'=>'adres e-mail', 'title'=>'user_mail_contact');
- $cols['A_STATUS'] = array('label'=>'status', 'title'=>'A_STATUS');
- $cols['A_STATUS_UPDATE_DATE'] = array('label'=>'data aktualizacji', 'title'=>'A_STATUS_UPDATE_DATE');
- $cols['PAY_SALDO'] = array('label'=>'saldo', 'title'=>'PAY_SALDO');
- $cols['PAY_SALDO_30_DNI'] = array('label'=>'saldo 30 dni', 'title'=>'Saldo bez faktur z terminem płatności < 30 dni');
- $cols['PAY_SALDO_ISSUED'] = array('label'=>'saldo wystawione', 'title'=>'Saldo wg daty wystawienia faktur');
- $cols['PAY_FVAT'] = array('label'=>'zaległe faktury', 'title'=>'PAY_FVAT');
- $cols['PAY_DATE_FIRST_FVAT'] = array('label'=>'data wymagalności<br> pierwszej faktury', 'title'=>'PAY_DATE_FIRST_FVAT');
- $cols['PAY_DATE'] = array('label'=>'data wymagalności<br> ostatniej faktury', 'title'=>'PAY_DATE');
- $cols['LAST_FVAT_VALUE'] = array('label'=>'kwota ostatniej faktury', 'title'=>'LAST_FVAT_VALUE');
- $cols['LAST_PAY_DATE'] = array('label'=>'data ostatniej wpłaty', 'title'=>'LAST_PAY_DATE');
- $cols['LAST_PAY_VALUE'] = array('label'=>'kwota ostatniej wpłaty', 'title'=>'LAST_PAY_VALUE');
- $cols['PAY_TERM'] = array('label'=>'termin płatności', 'title'=>'PAY_TERM');
- $cols['IS_MOVED_TO_VECTRA'] = array('label'=>'Przeniesienie do Vectra?', 'title'=>'IS_MOVED_TO_VECTRA');
- $cols['HAS_ACTIVE_NET'] = array('label'=>'NET', 'title'=>'Aktywne usługi NET');
- $cols['HAS_ACTIVE_TV'] = array('label'=>'TV', 'title'=>'Aktywne uslugi TV');
- echo'<table class="tbl-view historia-platnosci" border="1" cellspacing="0" cellpaddin="0">';
- echo'<thead>';
- echo'<tr>';
- foreach ($cols as $k_field => $v_params) {
- echo'<th' . ((!empty($v_params['title'])) ? ' title="' . $v_params['title'] . '"' : '') . '>';
- echo $v_params['label'];
- if (in_array($k_field, $cols_order_by)) {
- $sel_oby = (isset($page_nav->base_link_arr['_oby']))? $page_nav->base_link_arr['_oby'] : '';
- $sel_odir = 'DESC';
- if ($k_field == $sel_oby) {
- $sel_odir = (isset($page_nav->base_link_arr['_odir']))? $page_nav->base_link_arr['_odir'] : '';
- $sel_odir = ($sel_odir == 'ASC')? 'ASC' : 'DESC';
- }
- $out_link_arr = V::copy($page_nav->base_link_arr);
- $out_link_arr['_p'] = 0;
- $out_link_arr['_oby'] = $k_field;
- $out_link_arr['_odir'] = ($sel_odir == 'DESC')? 'ASC' : 'DESC';
- $out_link = V::make_link('', $out_link_arr);
- echo ' <a style="' . (($k_field == $sel_oby)? 'color:red;' : '') . 'text-decoration:none" href="' . $out_link . '">' . (($sel_odir == 'DESC')? 'v' : '^') . '</a>';
- }
- echo '</th>';
- }
- echo'</tr>';
- echo'</thead>';
- echo'<tbody>';
- $t = 0;
- foreach ($items as $k_id => $user) {
- echo'<tr class="row-'.($t = 1 - $t).'">';
- echo'<td>';
- echo'<nobr>';
- $out_link_arr = V::copy($page_nav->base_link_arr);
- $out_link_arr['_user_id'] = $k_id;
- $out_link = V::make_link('', $out_link_arr);
- echo '<a href="' . $out_link . '">'.'<img src="icon/edit.png" height="16" alt="Edit">'.'</a>';
- echo " ";
- echo '<a href="' . $out_link . '">'.$k_id.'</a>';
- echo'</nobr>';
- echo'</td>';
- echo '<td>';
- echo $user->is_firma;
- echo '</td>';
- echo '<td>';
- if ($user->BILLING_OWNER == 1) {
- echo '<span title="' . "BIALL-NET" . '">' . 'BN' . '</span>';
- } else if ($user->BILLING_OWNER == 2) {
- echo '<span title="' . "NETDAY" . '">' . 'ND' . '</span>';
- } else {
- echo '0';
- }
- echo '</td>';
- echo '<td>';
- if ($user->STATUS == 9) {
- echo '<b style="color:red" title="' . "ZABLOKOWANY" . '">' . "Z" . '</b>';
- } else {
- echo '<em style="color:silver" title="' . "brak blokady" . '">' . "0" . '</em>';
- }
- echo '</td>';
- echo'<td style="white-space:nowrap;">';
- $cell_out = $user->P_NAME.' '.$user->P_NAME_SECOND;
- echo '<b title="' . $cell_out . '">' . ((strlen($cell_out) > 30)? substr($cell_out, 0, 30) . ' ...' : $cell_out) . '</b>';
- echo'</td>';
- echo'<td style="white-space:nowrap;'.(($user->BAD_ADDRESS)? 'background-color:#FF7878;' : '').'">';
- $cell_out = "ul. " . $user->P_ADDRESS_STREET . " " . $user->P_ADDRESS_HOUSE . "/" . $user->P_ADDRESS_HOME . ", " . $user->P_ADDRESS_POST_CODE . " " . $user->P_ADDRESS_CITY;
- 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>';
- echo'</td>';
- ?>
- <?php if ($user->P_ADRESS_KORESP_1282) : ?>
- <td title="Adres do korespondencji: <?php echo $user->P_ADRESS_KORESP_1282; ?>">
- <?php echo $user->P_ADRESS_KORESP_1282; ?>
- </td>
- <?php else: ?>
- <td></td>
- <?php endif; ?>
- <?php
- echo '<td>' . $user->P_PHONE . '</td>';
- echo '<td>' . $user->user_mail_contact . '</td>';
- echo'<td>';
- echo '<nobr>';
- switch ($user->A_STATUS) {
- case 'WAITING':
- echo '<span style="color:#666;">' . $user->A_STATUS . '</span>';
- break;
- default:
- echo $user->A_STATUS;
- }
- echo '</nobr>';
- echo'</td>';
- echo'<td>';
- if ($user->A_STATUS_UPDATE_DATE != '0000-00-00') {
- echo $user->A_STATUS_UPDATE_DATE;
- } else {
- echo '<span style="color:#666;">' . $user->A_STATUS_UPDATE_DATE . '</span>';
- }
- echo'</td>';
- echo'<td>';
- echo '<nobr>';
- if ($user->PAY_SALDO != 0) {
- $col = ($user->PAY_SALDO > 0)? '#333' : '#f00';
- echo '<span style="color:' . $col . '">' . "{$user->PAY_SALDO} zł" . '</span>';
- } else {
- echo'<span style="color:#666">' . "0" . '</span>';
- }
- echo '</nobr>';
- echo'</td>';
- echo'<td>';
- echo '<nobr>';
- if ($user->PAY_SALDO_30_DNI != 0) {
- $col = ($user->PAY_SALDO_30_DNI > 0)? '#333' : '#f00';
- echo '<span style="color:' . $col . '">' . "{$user->PAY_SALDO_30_DNI} zł" . '</span>';
- } else {
- echo'<span style="color:#666">' . "0" . '</span>';
- }
- echo '</nobr>';
- echo'</td>';
- echo'<td>';
- echo '<nobr>';
- if ($user->PAY_SALDO_ISSUED != 0) {
- $col = ($user->PAY_SALDO_ISSUED > 0)? '#333' : '#f00';
- echo '<span style="color:' . $col . '">' . "{$user->PAY_SALDO_ISSUED} zł" . '</span>';
- } else {
- echo'<span style="color:#666">' . "0" . '</span>';
- }
- echo '</nobr>';
- echo'</td>';
- echo'<td>';
- if ($user->PAY_FVAT > 0) {
- $st = ($user->PAY_FVAT > 1)? ' style="color:#f00"' : '';
- echo' <span title="' . "{$user->PAY_FVAT} nieopłaconych faktur" . '"'.$st.'>' . $user->PAY_FVAT . '</span>';
- } else {
- echo $user->PAY_FVAT;
- }
- echo'</td>';
- echo'<td>';
- if ($user->PAY_DATE_FIRST_FVAT != '0000-00-00') {
- echo $user->PAY_DATE_FIRST_FVAT;
- }
- echo'</td>';
- echo'<td>';
- if ($user->PAY_DATE != '0000-00-00') {
- echo $user->PAY_DATE;
- }
- echo'</td>';
- echo'<td>';
- echo $user->LAST_FVAT_VALUE;
- echo'</td>';
- echo'<td>';
- if ($user->LAST_PAY_DATE && $user->LAST_PAY_DATE != '0000-00-00') {
- echo $user->LAST_PAY_DATE;
- } else {
- echo '---';
- }
- echo'</td>';
- echo'<td>';
- echo $user->LAST_PAY_VALUE;
- echo'</td>';
- echo'<td>';
- if ($user->PAY_TERM != '0000-00-00') {
- echo $user->PAY_TERM;
- }
- echo'</td>';
- echo'<td>';
- if ($user->IS_MOVED_TO_VECTRA) {
- echo 'TAK';
- } else {
- echo '<span class="text-muted">NIE</span>';
- }
- echo'</td>';
- echo'<td>' . $user->HAS_ACTIVE_NET . '</td>';
- echo'<td>' . $user->HAS_ACTIVE_TV . '</td>';
- //, w.`USER_PAY_TERM_ADD`
- //, w.`L_APPOITMENT_DATE`
- //, w.`L_APPOITMENT_USER`
- echo'</tr>';
- }
- echo'</tbody>';
- echo'</table>';
- echo $page_nav_out;
- }
- public static function export_csv($q, &$page_nav, &$items) {
- if (empty($items)) {
- echo "Brak danych";
- return;
- }
- $activeFiltr = V::get('_f', 'all', $_GET);
- $csvFileName = "Windykacja-{$activeFiltr}";
- header('Content-Type: text/csv; charset=utf-8');
- header("Content-Disposition: attachment; filename={$csvFileName}.csv");
- $cols_order_by = Windykacja_StatsModel::get_order_by_fields();
- $cols = array();
- $cols['ID_BILLING_USERS'] = array('label'=>'Nr klienta', 'title'=>'ID_BILLING_USERS');
- $cols['is_firma'] = array('label'=>'F', 'title'=>'is_firma: Firma 1 - tak, 0 nie');
- $cols['BILLING_OWNER'] = array('label'=>'COM', 'title'=>'BILLING_OWNER: Klient firmy 1 - BIALL-NET, 2 - NETDAY');
- $cols['BLOKADA'] = array('label'=>'B', 'title'=>'BLOKADA: Informacja o blokadzie');
- $cols['P_NAME'] = array('label'=>'imie i nazwisko', 'title'=>'P_NAME');
- $cols['P_ADDRESS_STREET'] = array('label'=>'adres', 'title'=>'P_ADDRESS_STREET');
- $cols['P_ADDRESS_Koresp'] = array('label'=>'adres koresp.', 'title'=>'Adres do korespondencji');
- $cols['P_PHONE'] = array('label'=>'nr telefonu', 'title'=>'P_PHONE');
- $cols['user_mail_contact'] = array('label'=>'adres e-mail', 'title'=>'user_mail_contact');
- $cols['P_PESEL'] = array('label'=>'pesel', 'title'=>'P_PESEL');
- $cols['A_STATUS'] = array('label'=>'status', 'title'=>'A_STATUS');
- $cols['A_STATUS_UPDATE_DATE'] = array('label'=>'data aktualizacji', 'title'=>'A_STATUS_UPDATE_DATE');
- $cols['PAY_SALDO'] = array('label'=>'saldo', 'title'=>'PAY_SALDO');
- $cols['PAY_SALDO_30_DNI'] = array('label'=>'saldo 30 dni', 'title'=>'Saldo bez faktur z terminem płatności < 30 dni');
- $cols['PAY_SALDO_ISSUED'] = array('label'=>'saldo wystawione', 'title'=>'Saldo wg daty wystawienia faktur');
- $cols['PAY_FVAT'] = array('label'=>'zaległe faktury', 'title'=>'PAY_FVAT');
- $cols['PAY_DATE_FIRST_FVAT'] = array('label'=>'data wymagalności pierwszej faktury', 'title'=>'PAY_DATE_FIRST_FVAT');
- $cols['PAY_DATE'] = array('label'=>'data wymagalności ostatniej faktury', 'title'=>'PAY_DATE');
- $cols['LAST_FVAT_VALUE'] = array('label'=>'kwota ostatniej faktury', 'title'=>'LAST_FVAT_VALUE');
- $cols['LAST_PAY_DATE'] = array('label'=>'data ostatniej wpłaty', 'title'=>'LAST_PAY_DATE');
- $cols['LAST_PAY_VALUE'] = array('label'=>'kwota ostatniej wpłaty', 'title'=>'LAST_PAY_VALUE');
- $cols['PAY_TERM'] = array('label'=>'termin płatności', 'title'=>'PAY_TERM');
- $cols['ACCOUNT_NUMBER'] = array('label'=>'nr konta', 'title'=>'ACCOUNT_NUMBER');
- $cols['SERVICES_STREETS'] = array('label'=>'adresy usług', 'title'=>'SERVICES_STREETS');
- $cols['IS_MOVED_TO_VECTRA'] = array('label'=>'Przeniesienie do Vectra', 'title'=>'IS_MOVED_TO_VECTRA');
- $cols['HAS_ACTIVE_NET'] = array('label'=>'NET', 'title'=>'Aktywne usługi NET');
- $cols['HAS_ACTIVE_TV'] = array('label'=>'TV', 'title'=>'Aktywne uslugi TV');
- $out_cols = array();
- foreach ($cols as $k_field => $v_params) {
- $out_cols[] = '"' . $v_params['label'] . '"';
- }
- echo implode(";", $out_cols) . "\n";
- foreach ($items as $k_id => $user) {
- $out_cols = array();
- $out_cols[] = '"' . $k_id . '"';
- $out_cols[] = '"' . $user->is_firma . '"';
- if ($user->BILLING_OWNER == 1) {
- $out_cols[] = '"' . 'BN' . '"';
- } else if ($user->BILLING_OWNER == 2) {
- $out_cols[] = '"' . 'ND' . '"';
- } else {
- $out_cols[] = '"' . '0' . '"';
- }
- $out_cols[] = '"' . (($user->STATUS == 9)? "Z" : "0") . '"';
- $out_cols[] = '"' . $user->P_NAME.' '.$user->P_NAME_SECOND . '"';
- $out_cols[] = '"' . "ul. {$user->P_ADDRESS_STREET} {$user->P_ADDRESS_HOUSE}/{$user->P_ADDRESS_HOME}, {$user->P_ADDRESS_POST_CODE} {$user->P_ADDRESS_CITY}" . '"';
- if ($user->P_ADRESS_KORESP_1282) {
- $out_cols[] = '"' . $user->P_ADRESS_KORESP_1282 . '"';
- } else {
- $out_cols[] = '""';
- }
- $out_cols[] = '"' . $user->P_PHONE . '"';
- $out_cols[] = '"' . $user->user_mail_contact . '"';
- $out_cols[] = '"' . $user->P_PESEL . '"';
- $out_cols[] = '"' . $user->A_STATUS . '"';
- $out_cols[] = '"' . $user->A_STATUS_UPDATE_DATE . '"';
- $out_cols[] = '"' . (($user->PAY_SALDO != 0)? "{$user->PAY_SALDO} zł" : "0") . '"';
- $out_cols[] = '"' . (($user->PAY_SALDO_30_DNI != 0)? "{$user->PAY_SALDO_30_DNI} zł" : "0") . '"';
- $out_cols[] = '"' . (($user->PAY_SALDO_ISSUED != 0)? "{$user->PAY_SALDO_ISSUED} zł" : "0") . '"';
- $out_cols[] = '"' . $user->PAY_FVAT . '"';
- $out_cols[] = '"' . (($user->PAY_DATE_FIRST_FVAT != '0000-00-00')? $user->PAY_DATE_FIRST_FVAT : '') . '"';
- $out_cols[] = '"' . (($user->PAY_DATE != '0000-00-00')? $user->PAY_DATE : '') . '"';
- $out_cols[] = '"' . $user->LAST_FVAT_VALUE . '"';
- $out_cols[] = '"' . (($user->LAST_PAY_DATE && $user->LAST_PAY_DATE != '0000-00-00')? $user->LAST_PAY_DATE : '---') . '"';
- $out_cols[] = '"' . $user->LAST_PAY_VALUE . '"';
- $out_cols[] = '"' . (($user->PAY_TERM != '0000-00-00')? $user->PAY_TERM : '') . '"';
- $out_cols[] = '"' . $user->ACCOUNT_NUMBER . '"';
- $out_cols[] = '"' . $user->SERVICES_STREETS . '"';
- $out_cols[] = '"' . (($user->IS_MOVED_TO_VECTRA)? 'TAK' : 'NIE') . '"';
- $out_cols[] = '"' . $user->HAS_ACTIVE_NET . '"';
- $out_cols[] = '"' . $user->HAS_ACTIVE_TV . '"';
- echo implode(";", $out_cols) . "\n";
- }
- }
- public static function form($q = '') {
- SEF("MENU");
- MENU();
- echo'<div class="box box-blue">';
- echo'<form action="" method="get">';
- echo'<input type="hidden" name="'."MENU_INIT".'" value="'."USERS2_WINDYKACJA_STATUS".'" />';
- echo'<p style="margin:0;">'."Wyszukaj klienta: ";
- echo'<input type="text" name="'."q".'" value="'.htmlspecialchars($q).'" />';
- echo " ".'<em>'."(imie, nazwisko lub numer klineta)".'</em>';//, adres
- echo " ".'<input type="submit" value="'."szukaj".'" />';
- echo'</p>';
- echo'</form>';
- echo'</div>';// .box-blue
- }
- public static function css() {
- echo'<style type="text/css">'."
- body{font-family:arial;line-height:1.4;}
- .box{border:1px solid #999;padding:5px;margin:5px;}
- .box-center{border:1px solid #999;padding:5px;margin:5px auto;}
- .box-silver{border-color:#999;}
- .box-red{border-color:#f00;}
- .box-blue{border-color:#00f;}
- .box-green{border-color:#008000;}
- .box-hover-active{background:#fff;border-color:#999;}
- .box-hover-active:hover{background:#eee;border-color:#000;}
- .btn-box{margin:0 2px 0 0;padding:0 3px;background:#bbb;color:#fff;text-decoration:none;border:0;font-weight:bold;}
- .tbl-page-nav{font-size:small;}
- .tbl-page-nav a{font-size:small; text-decoration:none;}
- .tbl-page-nav a:hover{background-color:#eee;}
- .tbl-view {margin:0;font-size:small;}
- .tbl-view caption{text-align:left;font-style:italic;font-size:medium;}
- .tbl-view caption em{padding:0 5px;font-size:13px;font-style:normal;}
- .tbl-view th{padding:0 3px;font-size:small;}
- .tbl-view td{padding:0 3px;}
- .tbl-view .r{text-align:right;}
- .tbl-view thead th {background:#F3F3F3;}
- .tbl-view thead td {background:#F3F3F3;}
- .historia-platnosci-filters thead td{text-align:center;}
- .historia-platnosci-filters td.selected {background-color:#FFE6E9;}
- .historia-platnosci-filters td:hover {background-color:#E6FFE6;}
- .historia-platnosci-subfilters thead td{text-align:center;background:#fff;}
- .historia-platnosci-subfilters td.selected {background-color:#FFE6E9;}
- .historia-platnosci-subfilters td:hover {background-color:#E6FFE6;}
- .tbl-td-top th,
- .tbl-td-top td {vertical-align:top;}
- ".'</style>';
- }
- public static function user_umowy(&$user) {
- Lib::loadClass('Tree');
- Lib::loadClass('TreeHelper');
- // build tree by P_ID - array or 0
- function Tree_Helper__create_tree_rec($p_id, &$items) {
- static $rec_ind;
- $rec_ind++;
- $ret = array();
- if (!array_key_exists($p_id, $items)) {
- return false;
- } else {
- $r = $items[$p_id];
- if (empty($r->sub)) {
- return false;
- }
- foreach ($r->sub as $k_id => $v) {
- $ret[$k_id] = Tree_Helper__create_tree_rec($k_id, $items);
- }
- return $ret;
- }
- }
- function tree_callback__show_item_from_SERVICES(&$r, &$tree) {
- $cls = array();
- $cls[] = 'HANGUP_STATUS-' . $r->HANGUP_STATUS;
- $cls = (!empty($cls))? ' class="'.implode(' ', $cls).'"' : '';
- echo'<dl'.$cls.'>';
- echo'<dt>';
- $out_id = ($r->ID < 10)? ' '.$r->ID.'' : $r->ID;
- echo'<b class="item_id btn-box">'.$out_id.'</b>';
- //echo'<a href="'."?MENU_INIT=IN7_MK_BAZA_DYSTRYBUCJI_EDIT&ARG1=EDIT&ARG1_VAL=".$r->ID.'" class="btn" title="'."Edit".'">'."E".'</a>';
- $st_status_bg = '';
- if ($r->A_STATUS == 'NORMAL') {
- $st_status_bg = '#8F8;';
- } else if ($r->A_STATUS == 'WAITING') {
- $st_status_bg = '#F8F;';
- } else if ($r->A_STATUS == 'DELETED') {
- $st_status_bg = '#ccc;';
- } else if ($r->A_STATUS == 'OFF_SOFT') {
- $st_status_bg = '#F99;';
- } else if ($r->A_STATUS == 'OFF_HARD') {
- $st_status_bg = '#eee;';
- }
- $st_status_bg = ($st_status_bg)? 'background-color:'.$st_status_bg : '';
- echo'<span class="desc">';
- echo'<span class="btn-box" style="'.$st_status_bg.'">'.$r->A_STATUS.'</span>';
- echo' <b style="color:#333;">'.$r->description.'</b>';
- if ($r->ID_OFFERS) {
- echo' <code>' . "(Nr oferty: {$r->ID_OFFERS})" . '</code>';
- } else {
- echo' <span style="color:#f00">'."Brak numeru oferty!".'</span>';
- }
- $st_status_bg = '';
- if ($r->HANGUP_STATUS == 'NORMAL') {
- $st_status_bg = 'background-color:#8F8;';
- } else if ($r->HANGUP_STATUS == 'WAITING') {
- $st_status_bg = 'background-color:#F8F;';
- } else if ($r->HANGUP_STATUS == 'DELETED') {
- $st_status_bg = 'background-color:#ccc;';
- } else if ($r->HANGUP_STATUS == 'OFF_SOFT') {
- $st_status_bg = 'background-color:#F99;';
- } else if ($r->HANGUP_STATUS == 'OFF_HARD') {
- $st_status_bg = 'background-color:#f00;color:#fff;';
- }
- echo ' <span class="btn-box" style="' . $st_status_bg . '">' . "{$r->HANGUP_STATUS} ({$r->HANGUP_FROM} - {$r->HANGUP_TILL}) - {$r->A_STATUS_DESC}" .'</span>';
- echo'</span>';
- echo'</dt>';
- echo'</dl>'."\n";
- }
- $uslugi_l2 = Windykacja_StatsModel::get_uslugi_from_l2($user);
- $umowy_l2 = Windykacja_StatsModel::getClientUmowy($user->ID);
- $uslugi_l2_nieprzypisane = array();
- foreach ($uslugi_l2 as $k_id => $h) {
- $uslugi_l2_nieprzypisane[$k_id] = true;
- }
- if (is_array($umowy_l2) && !empty($umowy_l2)) {
- if (is_array($uslugi_l2) && !empty($uslugi_l2)) {
- foreach ($umowy_l2 as $k_umowa_ind => $h_umowa) {
- $umowy_l2[$k_umowa_ind]['uslugi'] = array();
- foreach ($uslugi_l2 as $k_id => $h_usluga) {
- if ($h_usluga['ID_DEALS_TABLE'] == $h_umowa['ID']) {
- $umowy_l2[$k_umowa_ind]['uslugi'][$k_id] = $h_usluga;
- if (isset($uslugi_l2_nieprzypisane[$k_id])) unset($uslugi_l2_nieprzypisane[$k_id]);
- }
- }
- }
- }
- }
- echo'<style type="text/css">'."
- .tbl-umowy-l2 .umowa-id{font-weight:bold;font-size:big;font-family:arial;}
- .tbl-umowy-l2 .row-umowa td{border-top:2px solid #00f;}
- .wind-status-old td,
- .wind-status-old th {color:#666;}
- ".'</style>';
- $ARGS['ZAPISZ'] = true;
- Lay_Html_Toggle::start("Aktualne umowy i usługi ", array('open'=>(($ARGS['ZAPISZ'])? false : true)));
- //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">umowy_l2: ';print_r($umowy_l2);echo'</pre>';
- echo'<table class="tbl-view tbl-umowy-l2" cellspacing="0" cellpadding="0" border="1">';
- //echo'<caption>'."Aktualne umowy".'<em>'." (l2)".'</em>'.'</caption>';
- if ($umowy_l2 == -1) {
- echo'<tr><td>';
- echo'<span style="color:red">'."Blad polaczenia do bazy dancyh webone_billing - Zasob [931]".'</span>';
- echo'</td></tr>';
- } else if (empty($umowy_l2)) {
- echo'<tr><td>'."Brak umów.".'</td></tr>';
- }
- else {
- $tbl_umowy_cols = 5;
- echo'<thead>';
- echo'<tr>';
- echo'<th>'."Nr umowy".'</th>';
- echo'<th>'."Prefix".'</th>';
- echo'<th>'."Data umowy".'</th>';
- echo'<th>'."Termin".'</th>';
- echo'<th>'."".'</th>';
- echo'</tr>';
- echo'</thead>';
- $t = 0;
- foreach ($umowy_l2 as $h) {
- echo'<tr class="row-umowa row-'.($t = 1 - $t).'">';
- echo'<td class="r umowa-id">' . $h['P_DEALNUMBER'] . '</td>';
- echo'<td>' . $h['P_DEALPREFIX'] . '</td>';
- echo'<td class="r">' . $h['P_DEALDATE'] . '</td>';
- echo'<td class="r">' . $h['P_DEALDATE_TERM'] . '</td>';
- echo'<td>';
- if ($h['Wcześniejszy Nr umowy']) echo "Wcześniejszy Nr umowy: ".$h['Wcześniejszy Nr umowy'].'<br />';// TODO: Undefined index
- if ($h['DEALDESC']) echo "Notatki: ".$h['DEALDESC'].'<br />';
- echo "Koniecznosc podpisania aneksu lub innego dokumentu: ".$h['ANEX_NEEDED'].'<br />';
- echo "Data potwierdzenia podpisania aneksu/dokumentu: ".$h['ANEX_CONFIRM_DATE'].'<br />';
- echo'</td>';
- echo'</tr>';
- if (!empty($h['uslugi'])) {
- // TODO: make TREE by P_ID_SERVICES
- $items = array();
- foreach ($h['uslugi'] as $k_id_usluga => $h_suluga) {
- $h_suluga['sub'] = array();
- $items[$k_id_usluga] = (object)$h_suluga;
- }
- $uslugi_tree = array();// tree root
- foreach ($items as $k_id => $r) {
- if ($r->P_ID == 0) {
- $uslugi_tree[$r->ID] = array();
- if (array_key_exists($r->P_ID, $items)) {
- $items[$r->P_ID]->sub[$r->ID] = true;
- }
- } else {// array
- if (array_key_exists($r->P_ID, $items)) {
- $items[$r->P_ID]->sub[$r->ID] = true;
- }
- }
- }
- ksort($uslugi_tree);
- // set up has_childrens
- foreach ($items as $k_id => $r) {
- $items[$k_id]->has_childrens = !empty($r->sub);
- }
- foreach ($uslugi_tree as $k_id => $v_childrens) {
- if (array_key_exists($k_id, $items)) {
- $uslugi_tree[$k_id] = Tree_Helper__create_tree_rec($k_id, $items);
- }
- }
- echo'<tr class="row-'.($t).'">';
- echo'<td>'." ".'</td>';
- echo'<td colspan="'.($tbl_umowy_cols - 1).'" style="padding:0;">';
- $tree = new Tree('SERVICES');
- $tree->set_parent_id_col('P_ID');
- $tree->set_param('show_item_callback', "tree_callback__show_item_from_SERVICES");
- $tree->set_param('ajax', "NIE");
- $tree->set_param('rozwin', true);
- $tree->show_css();
- $tree->show_js();
- $_COOKIE[$tree->cookie_name] = implode(' ', array_keys($items));
- echo "\n".'<div class="tree-wrap">'."\n";
- $tree->show_rec_by_tree($uslugi_tree, $items);
- echo '</div>'."\n";
- echo'</td>';
- echo'</tr>';
- }
- }
- }
- echo'</table>';
- if (!empty($uslugi_l2_nieprzypisane)) {
- echo'<table class="tbl-view tbl-umowy-l2" cellspacing="0" cellpadding="0" border="1">';
- echo'<caption>'."Nieprzypisane usługi".'<em>'." (l2)".'</em>'.'</caption>';
- echo'<head>';
- echo'<tr>';
- echo'<th>'."ID".'</th>';
- echo'<th>'."usługa".'</th>';
- echo'<th>'."status".'</th>';
- echo'<th>'."nr umowy".'</th>';
- echo'<th>'."id oferty".'</th>';
- echo'</tr>';
- echo'</head>';
- foreach ($uslugi_l2_nieprzypisane as $k_id => $v_bool) {
- $h_usluga = $uslugi_l2[$k_id];
- echo'<tr>';
- echo'<td class="r">' . $h_usluga['ID'] . '</td>';
- echo'<td>' . $h_usluga['description'] . '</td>';
- echo'<td>' . $h_usluga['A_STATUS_DESC'] . '</td>';
- echo'<td class="r">' . '<b>';
- if (array_key_exists($h['ID_DEALS_TABLE'], $umowy_l2)) {
- echo $umowy_l2[$h['ID_DEALS_TABLE']]['P_DEALNUMBER'];
- } else {
- //TODO: get P_DEALNUMBER from DEALS_TABLE where ID = $h['ID_DEALS_TABLE']
- }
- echo'</b>' . '</td>';
- echo'<td class="r">';
- if ($h_usluga['ID_OFFERS']) {
- echo'<code>' . $h_usluga['ID_OFFERS'] . '</code>';
- } else {
- echo'<span style="color:#f00">'."Brak!".'</span>';
- }
- echo'</td>';
- echo'</tr>';
- }
- echo'</table>';
- }
- Lay_Html_Toggle::end();
- $umowy_l3 = Windykacja_StatsModel::get_umowy_from_l3($user);
- $ARGS['ZAPISZ'] = true;
- Lay_Html_Toggle::start("Aktualne usługi".'<em>'." (l3)".'</em>', array('open'=>(($ARGS['ZAPISZ'])? false : true)));
- //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">umowy_l3: ';print_r($umowy_l3);echo'</pre>';
- echo'<table class="tbl-view tbl-umowy-l2" cellspacing="0" cellpadding="0" border="1">';
- if (empty($umowy_l3)) {
- echo'<tr><td>'."Brak usług.".'</td></tr>';
- }
- else {
- echo'<thead>';
- echo'<tr>';
- echo'<th rowspan="2">'."ID".'</th>';
- echo'<th rowspan="2">'."status".'</th>';
- echo'<th rowspan="2">'."data dok".'</th>';
- echo'<th rowspan="2">'."adres".'</th>';
- echo'<th rowspan="2">'."usługa".'</th>';
- echo'<th rowspan="2">'."S_OTHER_INFO".'</th>';
- echo'<th colspan="2" title="'."ID_BILLING_USERS".'">'. "nr klienta" .'</th>';
- echo'<th colspan="2" title="'."ID_SERVICES".'">'."nr usługi".'</th>';
- echo'<th colspan="2" title="'."P_OFFER_ID".'">'."nr oferty".'</th>';
- echo'<th colspan="2" title="'."P_DEAL_DATE".'">'."data umowy".'</th>';
- echo'<th colspan="2">'."nr umowy".'</th>';
- echo'<th colspan="2">'."termin umowy".'</th>';
- echo'<th colspan="2" title="'."MONTH COST".'">'."abonament".'</th>';
- echo'<th rowspan="2">'."INICJALY HANDLOWCA".'</th>';
- echo'<th rowspan="2">'."RODZAJ DZIALANIA HANDLOWEGO".'</th>';
- echo'</tr>';
- echo'<tr>';
- echo'<td>'."OLD".'</td>';
- echo'<td>'."NEW".'</td>';
- echo'<td>'."OLD".'</td>';
- echo'<td>'."NEW".'</td>';
- echo'<td>'."OLD".'</td>';
- echo'<td>'."NEW".'</td>';
- echo'<td>'."OLD".'</td>';
- echo'<td>'."NEW".'</td>';
- echo'<td>'."OLD".'</td>';
- echo'<td>'."NEW".'</td>';
- echo'<td>'."OLD".'</td>';
- echo'<td>'."NEW".'</td>';
- echo'<td>'."OLD".'</td>';
- echo'<td>'."NEW".'</td>';
- echo'</tr>';
- echo'</thead>';
- foreach ($umowy_l3 as $h) {
- echo'<tr>';
- echo'<td>' . $h['ID'] . '</td>';
- echo'<td>' . $h['A_STATUS'] . '</td>';
- echo'<td>' . '<nobr>' . $h['DATA_DOK'] . '</nobr>' . '</td>';
- echo'<td>' . $h['S_ADDRESS_STREET'] . '</td>';
- echo'<td>' . '<b>' . $h['P_SERVICE'] . '</b>' . '</td>';
- echo'<td>' . $h['S_OTHER_INFO'] . '</td>';
- echo'<td>' . $h['ID_BILLING_USERS_OLD'] . '</td>';
- echo'<td>' . $h['ID_BILLING_USERS_NEW'] . '</td>';
- echo'<td>' . $h['ID_SERVICES_OLD'] . '</td>';
- echo'<td>' . $h['ID_SERVICES_NEW'] . '</td>';
- echo'<td>' . $h['P_OFFER_ID_OLD'] . '</td>';
- echo'<td>' . $h['P_OFFER_ID_NEW'] . '</td>';
- echo'<td>' . '<nobr>' . $h['P_DEAL_DATE_OLD'] . '</nobr>' . '</td>';
- echo'<td>' . '<nobr>' . $h['P_DEAL_DATE_NEW'] . '</nobr>' . '</td>';
- echo'<td>' . $h['P_DEALNUMBER_OLD'] . '</td>';
- echo'<td>' . $h['P_DEALNUMBER_NEW'] . '</td>';
- echo'<td>' . '<nobr>' . $h['P_DEALTERM_OLD'] . '</nobr>' . '</td>';
- echo'<td>' . '<nobr>' . $h['P_DEALTERM_NEW'] . '</nobr>' . '</td>';
- echo'<td>' . $h['MONTH_COST_OLD'] . '</td>';
- echo'<td>' . $h['MONTH_COST_NEW'] . '</td>';
- echo'<td>' . $h['INICJALY_HANDLOWCA'] . '</td>';
- echo'<td>' . $h['RODZAJ_DZIALANIA_HANDLOWEGO'] . '</td>';
- echo'</tr>';
- }
- }
- echo'</table>';
- Lay_Html_Toggle::end();
- }
- public static function user_historia_platnosci(&$user) { // TODO: mv to UserContact::viewUserPaymentContactsHistory
- ?>
- <style type="text/css">
- .hide .to-hide{display:none;}
- .may-hide .btn-hide{display:inline;padding:0 5px;border:1px solid #bbb;}
- .may-hide .btn-show{display:none;padding:0 5px;border:1px solid #bbb;}
- .hide .btn-hide{display:none;}
- .hide .btn-show{display:inline;}
- </style>
- <?php
- Lay_Html_Toggle::show_js();
- $billing_docs = Windykacja_StatsModel::getBillDocsByDate($user->ID);
- // add events
- $umowy_l2 = Windykacja_StatsModel::getClientUmowy($user->ID);
- //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">billing_docs ';print_r($billing_docs);echo'</pre>';
- //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">billing_docs ';print_r(reset($billing_docs));echo'</pre>';
- //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">umowy_l2 ';print_r($umowy_l2);echo'</pre>';
- if (!empty($umowy_l2)) {
- foreach ($umowy_l2 as $h) {
- $billing_docs->add_event($h['P_DEALDATE'], 'UMOWA', $h);
- if ($h['P_DEALDATE_TERM'] != '0000-00-00') {// < date('Y-m-d')) {
- $billing_docs->add_event($h['P_DEALDATE_TERM'], 'KONIEC UMOWY', $h);
- }
- }
- }
- $user_hist_events = Windykacja_StatsHelper::getUserHistStatusEvents($user->ID);
- if (!empty($user_hist_events)) {
- foreach ($user_hist_events as $bill_doc) {
- $billing_docs->add_event($bill_doc['A_STATUS_UPDATE_DATE'], 'HIST_STATUS', $bill_doc);
- }
- }
- $user_hist_events = Windykacja_StatsHelper::getUserHistPhoneEvents($user->ID);
- if (!empty($user_hist_events)) {
- foreach ($user_hist_events as $bill_doc) {
- $billing_docs->add_event(substr($bill_doc['A_RECORD_UPDATE_DATE'], 0, 10), 'HIST_PHONE', $bill_doc);
- }
- }
- $user_hist_events = Windykacja_StatsHelper::getUserBadAddressEvents($user->ID);
- if (!empty($user_hist_events)) {
- foreach ($user_hist_events as $bill_doc) {
- $billing_docs->add_event(substr($bill_doc['A_RECORD_UPDATE_DATE'], 0, 10), 'HIST_BAD_ADDRESS', $bill_doc);
- }
- }
- // add today
- $bill_doc = array();
- $bill_doc['saldo'] = $billing_docs->get_saldo();
- $billing_docs->add_event(date('Y-m-d'), 'TODAY', $bill_doc);
- $billing_docs->sort_docs();
- //$billing_docs = array_reverse($billing_docs, true);
- //echo'<pre style="max-height:300px;overflow:auto;border:1px solid red;">billing_docs: ';print_r($billing_docs);echo'</pre>';
- $billing_docs_arr = $billing_docs->get_docs();
- $types_finanse = array();
- $types_finanse[] = 'KW';
- $types_finanse[] = 'KP';
- $types_finanse[] = 'WB_MASS';
- $types_finanse[] = 'WB';
- $types_finanse[] = 'KORV';
- $types_finanse[] = 'FVAT';
- $saldo_all = 0;
- $out_tbl = array();
- //echo'<pre>';print_r($billing_docs_arr);echo'</pre>';
- foreach ($billing_docs_arr as $k_data => $v_docs_arr) {
- foreach ($v_docs_arr as $k_ind => $v_doc) {
- $out_tr = array();
- $out_tr['data'] = $k_data;
- if ($k_data == date("Y-m-d")) $out_tr['class'] = 'today';
- $out_tr['ID'] = '';
- $out_tr['nr'] = '';
- $out_tr['winien'] = '';
- $out_tr['ma'] = '';
- $out_tr['saldo'] = '';
- $out_tr['saldo_all'] = '';
- if ($v_doc->get_class() == 'BILLING') {
- $saldo_all += $v_doc->get_saldo();
- $out_tr['ID'] = $v_doc->get_type();
- $type_desc = Windykacja_StatsModel::get_billing_type_desc($v_doc->get_type());
- if ($type_desc) {
- 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');
- $out_tr['ID'] = '<span title="'.$type_desc.'">'.$out_tr['ID'].'</span>';
- // TODO: podglad faktury
- //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>';
- }
- $docNr = $v_doc->get('nr');
- $docNrLabel = $v_doc->get('NUMBER') . '/' . $v_doc->get('ID_BILLING_PREFIXES');
- /* links fomr l1:
- * 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
- * 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
- */
- if ('FVAT' == $v_doc->get_type()) {
- $out_tr['ID'] .= ' <a href="index.php?FUNCTION_INIT=bm_show_document&ARG1_VAL=' . $docNr . '" target="_blank">'."({$docNrLabel})".'</a>';
- }
- else if ('KORV' == $v_doc->get_type()) {
- // https://biuro.biall-net.pl/dev-pl/se-master/index.php?FUNCTION_INIT=bm_show_document&ARG1_VAL=809557
- $remoteFvNum = $v_doc->get('FV_NUMBER');
- $korNr = $v_doc->get('ID_BILLING_NUMBERS');
- $korTitle = "Korekta dotycząca faktury nr: {$remoteFvNum}";
- $out_tr['ID'] .= ' <a href="index.php?FUNCTION_INIT=bm_show_document&ARG1_VAL=' . $korNr . '" target="_blank" title="'.$korTitle.'">'."({$docNrLabel})".'</a>';
- }
- $out_tr['nr'] = $docNrLabel;
- $out_tr['winien'] = number_format($v_doc->get('WINIEN'), 2, ',', ' ');
- $out_tr['ma'] = number_format($v_doc->get('MA'), 2, ',', ' ');
- $out_tr['saldo'] = number_format($v_doc->get_saldo(), 2, ',', ' ');
- $out_tr['saldo_all'] = number_format($saldo_all, 2, ',', ' ');
- // style
- if ($out_tr['winien'] == '0,00') $out_tr['winien'] = '<span style="color:#666;">' . $out_tr['winien'] . '</span>';
- if ($out_tr['ma'] == '0,00') $out_tr['ma'] = '<span style="color:#666;">' . $out_tr['ma'] . '</span>';
- }
- else if ($v_doc->get_class() == 'EVENT') {
- if ($v_doc->get_type() == 'TODAY') {
- $out_tr['class'] = 'today';
- $vDocSaldoData = $v_doc->get_data();
- $v_doc_saldo = V::get('saldo', '', $vDocSaldoData);
- $out_tr['saldo_all'] = number_format($v_doc_saldo, 2, ',', ' ');
- }
- else if ($v_doc->get_type() == 'HIST_STATUS') {
- // search for koresp files
- // TODO: mv to ::get_koresp_file($id_koresp);
- $id_koresp = intval($v_doc->get('ID_KORESP'));
- $found_files = array();
- if(0){// turn off - old server
- $CNF = new stdClass();
- $CNF->koresp_dir = '/home/samba/BIALL-NET/PISMA/OUT';
- $CNF->koresp_www_path = '/se-dev/PISMA/OUT';
- if ($id_koresp > 0) {
- $pattern = $CNF->koresp_dir . '/' . '*.' . $id_koresp . '.pdf';
- $file_tmp_list = glob($pattern);//, GLOB_NOSORT);
- if (!empty($file_tmp_list)) {
- foreach ($file_tmp_list as $v_file) {
- $test_file = explode('/', $v_file);
- $test_file = end($test_file);
- $found_files[] = $CNF->koresp_www_path . '/' . $test_file;
- }
- }
- }
- // return $found_files;
- }
- switch ($v_doc->get('A_STATUS')) {
- case 'WAITING':
- $out_tr['add'] = "powrót do oczekujących";
- break;
- case 'waiting-wezwanie2':
- // TODO: get('LAST_ID_KORESP_WEZWANIE1')
- $out_tr['add'] = "wezwanie do zapłaty - ID_KORESP: <b>".$v_doc->get('ID_KORESP')."</b> <em>(termin: ".$v_doc->get('PAY_TERM').")</em> ";
- break;
- case 'waiting-krd':
- $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> ";
- break;
- case 'N/S;':
- $out_tr['add'] = "ID_KORESP: <b>".$v_doc->get('ID_KORESP')."</b> <em>(" . $v_doc->get('K_ZAWARTOS') . ")</em>";// TODO: get opis from koresp
- //echo '('.$v_doc->get('ID_KORESP').', '.$v_doc->get('K_ZAWARTOS').'='.substr($v_doc->get('K_ZAWARTOS'), 0, strlen('rozwiazanie umowy')).')';
- if ($v_doc->get('ID_KORESP') > 0 && substr($v_doc->get('params'), 0, strlen('rozwiazanie umowy')) == 'rozwiazanie umowy') {
- $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>';
- }
- break;
- default:
- $out_tr['add'] = "zmiana statusu na: ".$v_doc->get('A_STATUS')." ";
- }
- if ($id_koresp > 0) {
- if (!empty($out_tr['add']) && !empty($found_files)) {
- $add_link_koresp = reset($found_files);// first file from koresp
- $out_tr['add'] .= " " . '<a href="' . $add_link_koresp . '" target="_blank">' . "P" . '</a>';
- }
- //$koresp_edit_link = "?MENU_INIT=IN7_DZIENNIK_KORESP_EDIT&ARG1=EDIT&ARG1_VAL=" . $id_koresp;
- Lib::loadClass('ProcesHelper');
- $zasobKorespID = ProcesHelper::getZasobTableID('IN7_DZIENNIK_KORESP');
- $koresp_edit_link = "index.php?MENU_INIT=VIEWTABLE_AJAX&ZASOB_ID={$zasobKorespID}#EDIT/{$id_koresp}";
- $out_tr['add'] .= " " . '<a href="' . $koresp_edit_link . '" title="' . "Edycja KORESP. ({$id_koresp})" . '" target="_blank">' . "KOR" . '</a>';
- }
- }
- else if ($v_doc->get_type() == 'HIST_PHONE') {
- $date = $v_doc->get('PAY_TERM');
- if ($date == 'N/S;') $date = '';
- $lastPhoneStatus = $v_doc->get('LAST_PHONE_STATUS');
- if ($lastPhoneStatus == 'N/S;') $lastPhoneStatus = '';
- $lastSmsStatus = $v_doc->get('LAST_SMS_STATUS');
- if ($lastSmsStatus == 'N/S;') $lastSmsStatus = '';
- $lastMailStatus = $v_doc->get('LAST_MAIL_STATUS');
- if ($lastMailStatus == 'N/S;') $lastMailStatus = '';
- $lastUpdateDate = $v_doc->get('A_RECORD_UPDATE_DATE');
- if (!empty($lastPhoneStatus)) {
- switch ($lastPhoneStatus) {
- case 'nie_zaplaci':
- $out_tr['add'] = "nie zapłaci";
- break;
- case 'zaplaci_w_terminie':
- $out_tr['add'] = "zapłaci w terminie {$date} " . '<em style="font-size:small;">' . "(ustalono {$lastUpdateDate})" . '</em>';
- break;
- case 'zaplaci_za_1mc':
- $out_tr['add'] = "zapłaci miesiąc później {$date} " . '<em style="font-size:small;">' . "(ustalono {$lastUpdateDate})" . '</em>';
- break;
- case 'zaplaci_za_2mc':
- $out_tr['add'] = "zapłaci 2 miesiące później {$date} " . '<em style="font-size:small;">' . "(ustalono {$lastUpdateDate})" . '</em>';
- break;
- case 'zaplaci_za_3mc':
- $out_tr['add'] = "zapłaci 3 miesiące później {$date} " . '<em style="font-size:small;">' . "(ustalono {$lastUpdateDate})" . '</em>';
- break;
- default:
- $out_tr['add'] = "kontakt z klientem: {$lastPhoneStatus} " . '<em style="font-size:small;">' . "(ustalono {$lastUpdateDate})" . '</em>';
- }
- } else if (!empty($lastSmsStatus)) {
- $lastSmsId = $v_doc->get('LAST_SMS_MSG_ID');
- $out_tr['add'] = "SMS: {$lastSmsStatus} " . '<em style="font-size:small;" title="' . "(wysłano {$lastUpdateDate}, {$lastSmsId})" . '">' . "(wysłano {$lastUpdateDate})" . '</em>';
- } else if (!empty($lastMailStatus)) {
- $lastMailId = $v_doc->get('LAST_MAIL_MSG_ID');
- $out_tr['add'] = "MAIL: {$lastMailStatus} " . '<em style="font-size:small;" title="' . "(wysłano {$lastUpdateDate}, {$lastMailId})" . '">' . "(wysłano {$lastUpdateDate})" . '</em>';
- }
- } else if ($v_doc->get_type() == 'HIST_BAD_ADDRESS') {
- if ($v_doc->get('BAD_ADDRESS')) {
- $out_tr['add'] = "błędny adres zameldowania ";
- } else {
- $out_tr['add'] = "poprawa adresu zameldowania ";
- }
- if ($v_doc->get('ID_KORESP') > 0) {
- $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>' . ")";
- }
- } else {
- $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
- if ($v_doc->get_type() == 'UMOWA') {
- $out_tr['add'] = "umowa nr <b>".$v_doc->get('P_DEALNUMBER')."</b> <em>(termin ".$v_doc->get('P_DEALDATE_TERM').")</em>";
- } else if ($v_doc->get_type() == 'KONIEC UMOWY') {
- $out_tr['add'] = "zakończenie umowy nr <b>".$v_doc->get('P_DEALNUMBER')."</b> <em>(z dnia ".$v_doc->get('P_DEALDATE').")</em>";
- }
- }
- }
- //$out_tbl[] = $out_tr;// add to the end
- array_unshift($out_tbl, $out_tr);// add to the begining
- }
- }
- echo'<style type="text/css">'."
- .tbl-windykacja td{padding:0 5px;}
- .tbl-windykacja .cell-data{white-space:nowrap;}
- .tbl-windykacja .cell-winien{text-align:right;}
- .tbl-windykacja .cell-ma{text-align:right;}
- .tbl-windykacja .cell-saldo{text-align:right;}
- .tbl-windykacja .cell-saldo_all{text-align:right; white-space:nowrap; background-color:#E5E5E5;}
- .tbl-windykacja .cell-nr{font-family:monospace;text-align:right;}
- .tbl-windykacja .change-year td{border-top:3px solid #00f;}
- .tbl-windykacja .today td{background:#FFFF98;}
- .tbl-windykacja .cell-add em{color:#666;}
- ".'</style>';
- $last_year = '';
- $cols = array();
- $cols['data'] = "data";
- $cols['ID'] = "ID";
- $cols['nr'] = "nr";
- $cols['winien'] = "winien";
- $cols['ma'] = "ma";
- //$cols['saldo'] = "saldo";
- $cols['saldo_all'] = "saldo";
- $cols['add'] = "uwagi";
- ?>
- <h4>Historia klienta <small>(l1)</small></h4>
- <table border="1" class="tbl-view tbl-windykacja" cellspacing="0" cellpadding="0">
- <thead>
- <tr>
- <th>rok</th>
- <?php foreach ($cols as $colName => $colLabel) : ?>
- <th><?php echo $colLabel; ?></th>
- <?php endforeach; ?>
- </tr>
- </thead>
- <?php
- foreach ($out_tbl as $out_tr) {
- $change_year = false;
- $k_data = $out_tr['data'];
- $rok = substr($k_data, 0, 4);
- if ($rok != $last_year) {
- $change_year = true;
- }
- $cls = array();
- if ($change_year) $cls[] = 'change-year';
- if ($add_cls = V::get('class', '', $out_tr)) $cls[] = $add_cls;
- $cls = (!empty($cls))? ' class="'.implode(' ', $cls).'"' : '';
- echo'<tr'.$cls.'>';
- echo'<td>';
- echo ($change_year)? $rok : " ";
- echo'</td>';
- $last_year = $rok;
- foreach ($cols as $col_name => $col_label) {
- //foreach ($out_tr as $k_col_name => $v_val) {
- if (array_key_exists($col_name, $out_tr)) {
- echo'<td class="'."cell-".$col_name.'">' . $out_tr[$col_name] . '</td>';
- } else {
- echo'<td>'." ".'</td>';
- }
- }
- echo'</tr>';
- }
- echo'</table>';
- echo'<br />';
- echo'<br />';
- Windykacja_StatsHelper::update_stats($user, $billing_docs);
- {// srv hist
- $srvHist = array();
- $db = DB::getDB();
- $sql = "
- select fvPos.`ID` as fvPos__ID
- , fvPos.`DATE_FROM` as fvPos__DATE_FROM
- , fvPos.`DATE_TO` as fvPos__DATE_TO
- , fvPos.`ID_SERVICES` as fvPos__ID_SERVICES
- , ( select srv.`NAME_LIST_SERVICES` from `billing2013`.`SERVICES` srv where srv.`ID` = fvPos.`ID_SERVICES` limit 1 ) as srv__NAME_LIST_SERVICES
- , fvPos.`AMMOUNT` as fvPos__AMMOUNT
- , fvPos.`PRICE` as fvPos__PRICE
- , fvPos.`VAT` as fvPos__VAT
- -- , fvPos.`ID_BILLS_FVAT` as fvPos__ID_BILLS_FVAT
- , fvPos.`DESCR` as fvPos__DESCR
- -- , fvPos.`id_list_services` as fvPos__id_list_services
- -- , fvPos.`id_list_sww` as fvPos__id_list_sww
- -- , fvPos.`VAT_NAME` as fvPos__VAT_NAME
- -- , fvPos.`ID_OFFERS` as fvPos__ID_OFFERS
- -- , 'fv', fv.*
- -- , fv.`ID` as fv__ID
- , fv.`ID_BILLING_NUMBERS` as fv__ID_BILLING_NUMBERS
- -- , fv.`ID_BILLING_USERS` as fv__ID_BILLING_USERS
- -- , fv.`id_owner` as fv__id_owner
- , fv.`BILL_DATE` as fv__BILL_DATE
- , fv.`SELL_DATE` as fv__SELL_DATE
- -- , fv.`TIMESTAMP` as fv__TIMESTAMP
- , fv.`PAYMENT_TERM` as fv__PAYMENT_TERM
- -- , fv.`PAYMENT_TYPE` as fv__PAYMENT_TYPE
- -- , fv.`ID_CURRENCY` as fv__ID_CURRENCY
- -- , fv.`ID_FK_DEKRET` as fv__ID_FK_DEKRET
- -- , fv.`ID_FK_ROZRACH` as fv__ID_FK_ROZRACH
- -- , fv.`OPEN` as fv__OPEN
- -- , fv.`FK_ZAKSIEG` as fv__FK_ZAKSIEG
- , fv.`IF_KORV` as fv__IF_KORV
- -- , 'fvNum', fvNum.*
- -- , fvNum.`ID` as fvNum__ID
- -- , fvNum.`TIMESTAMP` as fvNum__TIMESTAMP
- -- , fvNum.`ID_BILLING_NUMBERS_TYPE` as fvNum__ID_BILLING_NUMBERS_TYPE
- -- , fvNum.`ID_BILLING_PREFIXES` as fvNum__ID_BILLING_PREFIXES
- , fvNum.`NUMBER` as fvNum__NUMBER
- -- , fvNum.`ID_BILLING_USERS` as fvNum__ID_BILLING_USERS
- , fvNum.`FOREIGN_ID_BILLING_NUMBERS` as fvNum__FOREIGN_ID_BILLING_NUMBERS
- -- , fvNum.`U_ID` as fvNum__U_ID
- -- , fvNum.`BILLING_OWNER` as fvNum__BILLING_OWNER
- -- , 'korPos', korPos.*
- , korPos.`ID` as korPos__ID
- -- , korPos.`ID_BILLS_FVAT` as korPos__ID_BILLS_FVAT
- , korPos.`DESCR` as korPos__DESCR
- , korPos.`ID_SERVICES` as korPos__ID_SERVICES
- , korPos.`DATE_FROM` as korPos__DATE_FROM
- , korPos.`DATE_TO` as korPos__DATE_TO
- , korPos.`AMMOUNT` as korPos__AMMOUNT
- , korPos.`PRICE` as korPos__PRICE
- , korPos.`VAT` as korPos__VAT
- -- , korPos.`id_list_services` as korPos__id_list_services
- -- , korPos.`id_list_sww` as korPos__id_list_sww
- -- , korPos.`VAT_NAME` as korPos__VAT_NAME
- -- , korPos.`N_DESCR` as korPos__N_DESCR
- -- , korPos.`N_ID_SERVICES` as korPos__N_ID_SERVICES
- -- , korPos.`N_DATE_FROM` as korPos__N_DATE_FROM
- -- , korPos.`N_DATE_TO` as korPos__N_DATE_TO
- -- , korPos.`N_AMMOUNT` as korPos__N_AMMOUNT
- -- , korPos.`N_PRICE` as korPos__N_PRICE
- -- , korPos.`N_VAT` as korPos__N_VAT
- -- , korPos.`N_id_list_services` as korPos__N_id_list_services
- -- , korPos.`N_id_list_sww` as korPos__N_id_list_sww
- -- , korPos.`N_VAT_NAME` as korPos__N_VAT_NAME
- , korPos.`TYP_KOREKTY` as korPos__TYP_KOREKTY
- from `billing2013`.`BILLS_FVAT_POS` fvPos
- join `billing2013`.`BILLS_FVAT` fv on ( fv.`ID` = fvPos.`ID_BILLS_FVAT` )
- join `billing2013`.`BILLING_NUMBERS` fvNum on ( fvNum.`ID` = fv.`ID_BILLING_NUMBERS` )
- left join `billing2013`.`BILLS_KORV_POS` korPos on (
- korPos.`ID_BILLS_FVAT` = (
- select kor.`ID`
- from `billing2013`.`BILLS_KORV` kor
- where kor.`REMOTE_ID_BILLING_NUMBERS` = fvNum.`ID`
- )
- and korPos.`ID_SERVICES` = fvPos.`ID_SERVICES`
- )
- where fv.`ID_BILLING_USERS` = '{$user->ID}'
- order by fv.`ID` DESC
- ";
- //echo'<pre>srvHist:sql: ';print_r($sql);echo'</pre>';
- $idxDates = array();
- $idxSrv = array();
- $idxHasKor = array();
- $res = $db->query($sql);
- while ($r = $db->fetch($res)) {
- $srvHist[$r->fvPos__ID] = $r;
- $month = substr($r->fv__BILL_DATE, 0, 7);
- $idSrv = $r->fvPos__ID_SERVICES;
- if (!empty($r->fv__BILL_DATE)) {
- if (!array_key_exists($month, $idxDates)) $idxDates[$month] = array();
- $idxDates[$month][$r->fvPos__ID] = $idSrv;
- }
- if (!empty($idSrv)) {
- $idxSrv[$idSrv] = $r->srv__NAME_LIST_SERVICES;
- }
- if ($r->korPos__ID > 0) {
- $isKorZero = ($r->korPos__AMMOUNT * $r->korPos__PRICE == -1 * $r->fvPos__AMMOUNT * $r->fvPos__PRICE);
- $idxHasKor[$month][$idSrv][] = $isKorZero;
- }
- }
- krsort($idxDates);
- ?>
- <div class="container">
- <script>
- function showHideSrvHist() {
- jQuery('#srvHist').toggle();
- return false;
- }
- </script>
- <h3>Historia usług <button class="btn btn-xs btn-danger" onclick="return showHideSrvHist()">+/-</button></h3>
- <table class="table table-bordered" id="srvHist" style="display:none">
- <thead>
- <tr>
- <th style="padding:2px"><nobr class="pull-right">Usługi</nobr></th>
- <?php foreach ($idxSrv as $idSrv => $srvType) : ?>
- <th style="padding:2px"><?php echo $idSrv; ?></th>
- <?php endforeach; ?>
- </tr>
- <tr>
- <th style="padding:2px"><nobr>Data</nobr></th>
- <?php foreach ($idxSrv as $idSrv => $srvType) : ?>
- <th style="padding:2px"><?php echo $srvType; ?></th>
- <?php endforeach; ?>
- </tr>
- </thead>
- <tbody>
- <?php foreach ($idxDates as $month => $posIds) : ?>
- <tr>
- <td style="padding:2px"><?php echo $month; ?></td>
- <?php foreach ($idxSrv as $idSrv => $srvType) : ?>
- <?php if (in_array($idSrv, $posIds)) : ?>
- <?php if (!empty($idxHasKor[$month][$idSrv])) : ?>
- <?php if (count($idxHasKor[$month][$idSrv]) > 1) : ?>
- <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>
- <?php elseif (true == $idxHasKor[$month][$idSrv][0]) : ?>
- <td style="padding:2px" class="danger"><b title="Faktura i Korekta na 0">FV - KOR = 0</b></td>
- <?php else : ?>
- <td style="padding:2px" class="warning"><b title="Faktura i Korekta">FV - KOR > 0</b></td>
- <?php endif; ?>
- <?php else : ?>
- <td style="padding:2px" class="success"><b title="brak korekty">FV</b></td>
- <?php endif; ?>
- <?php else : ?>
- <td style="padding:2px"><i class="muted">---</i></td>
- <?php endif; ?>
- <?php endforeach; ?>
- </tr>
- <?php endforeach; ?>
- </tbody>
- </table>
- </div>
- <?php
- //echo'<pre>idxHasKor: ';print_r($idxHasKor);echo'</pre>';
- //echo'<pre>idxDates: ';print_r($idxDates);echo'</pre>';
- //echo'<pre>idxSrv: ';print_r($idxSrv);echo'</pre>';
- //echo'<pre>srvHist: ';print_r($srvHist);echo'</pre>';
- }// srv hist
- }
- public static function view_faktura($faktura_id) {
- // https://l1.webone.pl/modules/make_billing/edit.php?mod=make_billing&form=make_faktura&adm=edit&uid=11381&fpos=&dz=
- // 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
- echo'{'.$faktura_id.'}';
- }
- public static function zadluzenia(&$user) {
- $THIS_DATA_DO = null;// TODO: pobierac z PAY_TERM z tabeli USERS2_WINDYKACJA_STATUS
- $post_sent = (!empty($_POST['sbmt']));
- $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')));
- if (!$post_sent) {
- echo'<table style="margin:10px 50px;padding:20px;border:1px solid blue;"><tr><td>';
- echo'<form action="" method="post">';
- $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')));
- echo'<p>'."Termin płatności: ".'</p>';
- echo'<input type="text" name="'."DATA_DO".'" value="'.$post_DATA_DO.'" />';
- echo'<input type="submit" name="sbmt" value="'."Wyslij".'" />';
- echo'</form>';
- echo'</td></tr></table>';
- return;
- } else {
- $THIS_DATA_DO = $post_DATA_DO;
- }
- self::wezwanie($user, $THIS_DATA_DO);
- }
- public static function wezwanie_ostateczne(&$user, $wezwanie_termin) {
- self::wezwanie($user, $wezwanie_termin, true);
- }
- public static function zestawienie_vectra_nadplaty() {
- $usersList = array();
- $db = DB::getDB();
- $sql_select = "
- c.`ID` as ID
- , c.`ID` as id_users
- , c.`P_NAME`
- , c.`P_NAME_SECOND`
- , c.`P_ADDRESS_STREET`
- , c.`P_ADDRESS_HOME`
- , c.`P_ADDRESS_HOUSE`
- , c.`P_ADDRESS_CITY`
- , c.`P_ADDRESS_POST_CODE`
- , c.`P_ADDRESS_REGION`
- , c.`P_PESEL`
- , c.`P_PHONE`
- , c.`P_OTHER_DOC`
- , c.`user_mail_contact`
- , c.`is_firma`
- , w.`ID` as WINDYKACJA_ID
- , w.`ID_BILLING_USERS`
- , w.`A_STATUS`
- , w.`A_STATUS_UPDATE_DATE`
- , w.`USER_PAY_TERM_ADD`
- , w.`L_APPOITMENT_DATE`
- , w.`L_APPOITMENT_USER`
- , w.`L_APPOITMENT_INFO`
- , w.`PAY_DATE`
- , w.`PAY_DATE_FIRST_FVAT`
- , w.`PAY_TERM`
- , w.`PAY_SALDO`
- , w.`PAY_FVAT`
- , w.`wezwanie1_DATE`
- , w.`wezwanie2_DATE`
- , w.`ID_KORESP`
- , w.`LAST_PAY_DATE`
- , w.`BAD_ADDRESS`
- , c.`STATUS`
- , c.`BILLING_OWNER`
- , w.`NR_SPRAWY_KRD`
- , w.`NR_SPRAWY_SAD`
- , w.`NR_SPRAWY_KOMORNIK`
- , w.`LAST_FVAT_PAY_TERM`
- ";
- $sqlWhereAdd = "
- and (w.`LAST_FVAT_PAY_TERM`>='2014-12-01'
- or ( w.`LAST_FVAT_PAY_TERM`='0000-00-00'
- and w.`LAST_FVAT_SELL_DATE`>='2014-12-01'
- )
- )
- and c.`ID_BILLING_PREFIXES` in('0','1')
- and c.`BILLING_OWNER` in('1')
- ";
- $sql = "select {$sql_select}
- from `USERS2_WINDYKACJA_STATUS` as w
- join `COMPANIES` as c on(c.`ID`=w.`ID_BILLING_USERS`)
- where c.`A_ADM_COMPANY`='19994_PODMIOT_Vectra_wlasciciel'
- {$sqlWhereAdd}
- ";
- if (V::get('DBG_SQL', '', $_GET)) {
- header('Content-Type: text/plain; charset=utf-8');
- echo $sql;
- exit;
- }
- $res = $db->query($sql);
- if ($db->has_errors()) {
- print_r($db->get_errors());
- die('die L.' . __LINE__);
- }
- while ($r = $db->fetch($res)) {
- $usersList[$r->ID_BILLING_USERS] = $r;
- }
- if (V::get('DBG_ILE', '', $_GET)) {
- echo '<p>ilosc: ' . count($usersList) . '</p>' . '<pre style="max-height:200px;overflow:auto">';
- print_r($usersList);
- echo '</pre>';
- exit;
- }
- if (V::get('DBG_IDS', '', $_GET)) {
- header('Content-Type: text/plain; charset=utf-8');
- echo 'ilosc: ' . count($usersList) . "\n";
- echo implode("\n", array_keys($usersList));
- exit;
- }
- $limit = V::get('DBG_LOOP_LIMIT', 100000, $_GET, 'int');
- if(V::get('DBG_LOOP_LIMIT', 0, $_GET, 'int')){echo "Loimit: {$limit}\n";}
- $date_limit = V::get('DATE_LIMIT', date("Y-m-d"), $_GET);
- $date_limit_from = '2014-12-01';
- $csvFileName = "Zestawienie-nadplaty-do-{$date_limit}";
- header('Content-Type: text/csv; charset=utf-8');
- header("Content-Disposition: attachment; filename={$csvFileName}.csv");
- $showCsvHeader = true;
- foreach ($usersList as $userId => $user) {
- $billing_docs = Windykacja_StatsModel::getBillDocsByDate($user->ID, $date_limit);
- $billing_docs->sort_docs();
- $saldo = $billing_docs->get_saldo();
- if ($saldo <= 0) {
- continue;
- }
- if(V::get('DBG_LOOP', '', $_GET)){echo "{$userId}:{$saldo}\n";}
- $incomeDocs = $billing_docs->getLastIncomeDocsForSaldo($saldo);
- if(V::get('DBG_LOOP', '', $_GET)){print_r($incomeDocs);echo "\n";}
- //Windykacja_StatsModel::update_doc_number($incomeDocs);
- $out_tbl = array();
- foreach ($incomeDocs as $v_fvat) {
- $out_tr = array();
- $out_tr['ID'] = $v_fvat['ID'];
- $out_tr['nr'] = $v_fvat['NUMBER'] . '/' . $v_fvat['ID_BILLING_PREFIXES'];
- $out_tr['wplata'] = number_format($v_fvat['MA'], 2, '.', '');
- $out_tr['data'] = $v_fvat['BILL_DATE'];
- $out_tr['pozostalo'] = number_format($v_fvat['MA_POZOSTALO'], 2, '.', '');
- array_push($out_tbl, $out_tr);// add to the begining
- }
- {// csv
- $csvLine = array();
- $csvLine[] = '"id klienta"';
- $csvLine[] = '"nr dokumentu"';
- $csvLine[] = '"kwota brutto"';
- $csvLine[] = '"data wpłaty"';
- $csvLine[] = '"pozostało"';
- if ($showCsvHeader) {
- echo implode(';', $csvLine) . ";\n";
- $showCsvHeader = false;
- }
- foreach ($out_tbl as $tr) {
- $csvLine = array();
- $csvLine[] = '"' . $userId . '"';
- $csvLine[] = '"' . $tr['nr'] . '"';
- $csvLine[] = '"' . $tr['wplata'] . '"';
- $csvLine[] = '"' . $tr['data'] . '"';
- $csvLine[] = '"' . $tr['pozostalo'] . '"';
- echo implode(';', $csvLine) . ";\n";
- }
- }
- //echo '<pre style="max-height:200px;overflow:auto">incomeDocs: ';print_r($incomeDocs);echo'</pre>';
- //echo '<pre style="max-height:200px;overflow:auto">ilosc('.count($out_tbl).') ' . "client({$userId}): ";print_r($out_tbl);echo'</pre>';
- if (--$limit < 0) {
- echo '<br>BREAK';
- break;
- }
- }
- exit;
- }
- public static function zestawienie_vectra_zadluzenia() {
- $usersList = array();
- $db = DB::getDB();
- $sql_select = "
- c.`ID` as ID
- , c.`ID` as id_users
- , c.`P_NAME`
- , c.`P_NAME_SECOND`
- , c.`P_ADDRESS_STREET`
- , c.`P_ADDRESS_HOME`
- , c.`P_ADDRESS_HOUSE`
- , c.`P_ADDRESS_CITY`
- , c.`P_ADDRESS_POST_CODE`
- , c.`P_ADDRESS_REGION`
- , c.`P_PESEL`
- , c.`P_PHONE`
- , c.`P_OTHER_DOC`
- , c.`user_mail_contact`
- , c.`is_firma`
- , w.`ID` as WINDYKACJA_ID
- , w.`ID_BILLING_USERS`
- , w.`A_STATUS`
- , w.`A_STATUS_UPDATE_DATE`
- , w.`USER_PAY_TERM_ADD`
- , w.`L_APPOITMENT_DATE`
- , w.`L_APPOITMENT_USER`
- , w.`L_APPOITMENT_INFO`
- , w.`PAY_DATE`
- , w.`PAY_DATE_FIRST_FVAT`
- , w.`PAY_TERM`
- , w.`PAY_SALDO`
- , w.`PAY_FVAT`
- , w.`wezwanie1_DATE`
- , w.`wezwanie2_DATE`
- , w.`ID_KORESP`
- , w.`LAST_PAY_DATE`
- , w.`BAD_ADDRESS`
- , c.`STATUS`
- , c.`BILLING_OWNER`
- , w.`NR_SPRAWY_KRD`
- , w.`NR_SPRAWY_SAD`
- , w.`NR_SPRAWY_KOMORNIK`
- , w.`LAST_FVAT_PAY_TERM`
- ";
- $sqlWhereAdd = "
- and (w.`LAST_FVAT_PAY_TERM`>='2014-12-01'
- or ( w.`LAST_FVAT_PAY_TERM`='0000-00-00'
- and w.`LAST_FVAT_SELL_DATE`>='2014-12-01'
- )
- )
- and c.`ID_BILLING_PREFIXES` in('0','1')
- and c.`BILLING_OWNER` in('1')
- ";
- if (V::get('DBG_NUM', '', $_GET)) {// number of clients with fvat after 2014-12-01
- $sqlWhereAdd = "
- and (w.`LAST_FVAT_PAY_TERM`>='2014-12-01'
- or ( w.`LAST_FVAT_PAY_TERM`='0000-00-00'
- and w.`LAST_FVAT_SELL_DATE`>='2014-12-01'
- )
- )
- and c.`ID_BILLING_PREFIXES` in('0','1')
- and c.`BILLING_OWNER` in('1')
- ";
- }
- $sql = "select {$sql_select}
- from `USERS2_WINDYKACJA_STATUS` as w
- join `COMPANIES` as c on(c.`ID`=w.`ID_BILLING_USERS`)
- where c.`A_ADM_COMPANY`='19994_PODMIOT_Vectra_wlasciciel'
- {$sqlWhereAdd}
- ";
- if (V::get('DBG_SQL', '', $_GET)) {
- header('Content-Type: text/plain; charset=utf-8');
- echo $sql;
- exit;
- }
- $res = $db->query($sql);
- if ($db->has_errors()) {
- print_r($db->get_errors());
- die();
- }
- while ($r = $db->fetch($res)) {
- $usersList[$r->ID_BILLING_USERS] = $r;
- }
- if (V::get('DBG_ILE', '', $_GET)) {
- echo '<p>ilosc: ' . count($usersList) . '</p>' . '<pre style="max-height:200px;overflow:auto">';
- print_r($usersList);
- echo '</pre>';
- exit;
- }
- if (V::get('DBG_IDS', '', $_GET)) {
- header('Content-Type: text/plain; charset=utf-8');
- echo 'ilosc: ' . count($usersList) . "\n";
- echo implode("\n", array_keys($usersList));
- exit;
- }
- $limit = 10000;
- $date_limit = V::get('DATE_LIMIT', date("Y-m-d"), $_GET);
- $date_limit_from = '2014-12-01';
- $csvFileName = "Zestawienie-zadluzenia-do-{$date_limit}";
- header('Content-Type: text/csv; charset=utf-8');
- header("Content-Disposition: attachment; filename={$csvFileName}.csv");
- $showCsvHeader = true;
- foreach ($usersList as $userId => $user) {
- $billing_docs = Windykacja_StatsModel::getBillDocsByDate($user->ID, $date_limit);
- $billing_docs->sort_docs();
- $fvat_arr = $billing_docs->get_unpaid_fvat();
- Windykacja_StatsModel::update_doc_number($fvat_arr);
- if (V::get('DBG_LAST_FVAT_TERM', '', $_GET)) {
- $lastFvatDoc = $billing_docs->get_last_fvat_doc();
- if ($lastFvatDoc) {
- echo '<p>lastFvatDoc:</p><pre style="max-height:200px;overflow:auto">';
- print_r($lastFvatDoc);
- echo '</pre>';
- exit;
- }
- }
- $user->hasActiveDeal = 0;
- $sql = "select sum(t.`DEALS_ACTIVE`) as activeDeals
- from `temp_DEALS_STATUS` as t
- where t.`DEALS_ACTIVE`=1
- and t.`ID_BILLING_USERS`='{$userId}'
- ";
- $res = $db->query($sql);
- if ($db->num_rows($res) > 0) {
- $user->hasActiveDeal = 1;
- }
- $out_tbl = array();
- foreach ($fvat_arr as $v_fvat) {
- if ($v_fvat['BILL_DATE'] < $date_limit_from || $v_fvat['BILL_DATE'] > $date_limit) {
- //echo 'pomin fvat:'."\n";print_r($v_fvat);
- continue;
- }
- $out_tr = array();
- $out_tr['ID'] = $v_fvat['ID'];
- $out_tr['nr'] = $v_fvat['NUMBER'] . '/' . $v_fvat['ID_BILLING_PREFIXES'];
- $out_tr['winien'] = number_format($v_fvat['WINIEN'], 2, '.', '');
- $out_tr['data'] = $v_fvat['BILL_DATE'];
- $out_tr['termin'] = $v_fvat['PAYMENT_TERM'];
- $out_tr['pozostalo'] = number_format($v_fvat['WINIEN_POZOSTALO'], 2, '.', '');
- array_unshift($out_tbl, $out_tr);// add to the begining
- }
- {// csv
- $csvLine = array();
- $csvLine[] = '"id klienta"';
- $csvLine[] = '"nr dokumentu"';
- $csvLine[] = '"kwota brutto"';
- $csvLine[] = '"data faktury"';
- $csvLine[] = '"termin płatności"';
- $csvLine[] = '"pozostało do zapłaty"';
- $csvLine[] = '"status klienta (9=blokada)"';
- $csvLine[] = '"aktywne uslugi"';
- if ($showCsvHeader) {
- echo implode(';', $csvLine) . ";\n";
- $showCsvHeader = false;
- }
- foreach ($out_tbl as $tr) {
- $csvLine = array();
- $csvLine[] = '"' . $userId . '"';
- $csvLine[] = '"' . $tr['nr'] . '"';
- $csvLine[] = '"' . $tr['winien'] . '"';
- $csvLine[] = '"' . $tr['data'] . '"';
- $csvLine[] = '"' . $tr['termin'] . '"';
- $csvLine[] = '"' . $tr['pozostalo'] . '"';
- $csvLine[] = '"' . $user->STATUS . '"';
- $csvLine[] = '"' . $user->hasActiveDeal . '"';
- echo implode(';', $csvLine) . ";\n";
- }
- }
- //echo '<pre style="max-height:200px;overflow:auto">fvat_arr: ';print_r($fvat_arr);echo'</pre>';
- //echo '<pre style="max-height:200px;overflow:auto">ilosc('.count($out_tbl).') ' . "client({$userId}): ";print_r($out_tbl);echo'</pre>';
- if (--$limit < 0) {
- echo '<br>BREAK';
- break;
- }
- }
- exit;
- }
- public static function wezwanie(&$user, $wezwanie_termin, $wezwanie_ostateczne = false) {
- $date_limit = date("Y-m-d");
- $billing_docs = Windykacja_StatsModel::getBillDocsByDate($user->ID, $date_limit);
- $billing_docs->sort_docs();
- // sprawdz zadluzenie
- if ($billing_docs->get_saldo() >= 0) {
- echo'<p class="green">' . "Brak zadluzenia" . '</p>';
- return;
- }
- else {
- $fvat_arr = $billing_docs->get_unpaid_fvat();
- //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>';
- //foreach ($fvat_arr as $key => $v) {
- // echo'<br />'.number_format($v['WINIEN_POZOSTALO'], 4, ',', ' ');
- //}
- if (empty($fvat_arr)) {
- echo'<p>'."Brak nieoplaconych faktur".'</p>';
- return;
- }
- Windykacja_StatsModel::update_doc_number($fvat_arr);
- $cols = array();
- $cols['ID'] = "ID";
- $cols['nr'] = "nr";
- $cols['winien'] = "winien";
- $cols['ma'] = "ma";
- //$cols['saldo'] = "saldo";
- $cols['saldo_all'] = "saldo";
- $cols['add'] = " ";
- $saldo_all = 0;
- foreach ($fvat_arr as $f) {
- $saldo_all += round($f['WINIEN_POZOSTALO'], 2);
- }
- $out_tbl = array();
- foreach ($fvat_arr as $v_fvat) {
- $out_tr = array();
- $out_tr['ID'] = ' <code style="font-size:10px">'."(".$v_fvat['ID'].")".'</code>';// TODO: dla KP,KW: ID_BILLING_NUMBERS zamiast ID
- $out_tr['nr'] = $v_fvat['NUMBER'] . '/' . $v_fvat['ID_BILLING_PREFIXES'];
- $out_tr['winien'] = number_format($v_fvat['WINIEN'], 2, ',', ' ');
- $out_tr['data'] = $v_fvat['BILL_DATE'];
- $out_tr['termin'] = $v_fvat['PAYMENT_TERM'];
- $out_tr['pozostalo'] = number_format($v_fvat['WINIEN_POZOSTALO'], 2, ',', ' ');
- array_unshift($out_tbl, $out_tr);// add to the begining
- }
- $razem = $saldo_all;
- $company = Windykacja_StatsModel::get_company($user);
- $nr_konta = Windykacja_FunkcjeL1::bankowy_formatuj_nrach(Windykacja_FunkcjeL1::bankowy_make_nrach($company->NR_RACH_MASS_PAY, $user->ID_BILLING_USERS, 0));
- ?>
- <style type="text/css">
- body{font-family:serif; font-size:10px;line-height:14px;}
- td{font-family:verdana; font-size:10px; color:#333;}
- table {border-style:none;}
- table td, table th {padding:0 2px;border-style:solid;border-collapse:collapse;}
- table th {border-width:1px;border-color:#333;}
- table td {border-width:1px;border-color:#333;}
- </style>
- <?php
- echo'<div style="background:#fff;border:none;margin:5px;padding:20px 40px 10px 40px;page-break-after:always;font-size:small;">';
- $id_koresp = 0;
- if ($user->ID_KORESP) {
- $id_koresp = $user->ID_KORESP;
- if ($user->LAST_ID_KORESP_WEZWANIE1 && !$wezwanie_ostateczne) {
- $id_koresp = $user->LAST_ID_KORESP_WEZWANIE1;
- } else if ($user->LAST_ID_KORESP_WEZWANIE2 && $wezwanie_ostateczne) {
- $id_koresp = $user->LAST_ID_KORESP_WEZWANIE2;
- }
- }
- if ($id_koresp > 0) {//$user->ID_KORESP) {// TODO: if $user->LAST_ID_KORESP_WEZWANIE1 or LAST_ID_KORESP_WEZWANIE2
- $koresp = DB::get_by_id('IN7_DZIENNIK_KORESP', $id_koresp);
- if ($koresp) {
- echo '<div style="text-align:right;font-weight:bold;">';
- echo $koresp->ID_PROJECT . '-' .$koresp->ID . "/" . substr(date("Y"), 2);
- echo '</div>';
- }
- }
- //echo "„BIALL-NET” Sp. z o.o.<br />Otomin, ul. Słoneczna 43<br />80-174 Gdańsk";
- ?>
- <table border=0 cellspacing=0 cellpadding=0 style="width:100%;">
- <tr>
- <td style="width:60%;border:none;">
- <?php echo $company->name1; ?>
- <br /><?php echo "ul. " . $company->ulica . " " . $company->numer_dom; ?>
- <br /><?php echo $company->kod . " " . $company->miasto; ?>
- </td>
- <td style="border:none;text-align:left;vertical-align:top;">
- Gdańsk, dnia <?php echo date("Y-m-d"); ?>
- </td>
- </tr>
- <tr>
- <td style="border:none;"> </td>
- <td style="border:none;">
- <p style="margin:50px 0;">
- Numer klienta: <?php echo $user->ID; ?>
- <br /><?php echo "{$user->P_NAME} {$user->P_NAME_SECOND}"; ?>
- <?php // TODO: P_ADRESS_KORESP_1282 ?>
- <br /><?php echo "ul. {$user->P_ADDRESS_STREET} {$user->P_ADDRESS_HOUSE}"; ?>
- <?php if ($user->P_ADDRESS_HOME) { echo "/{$user->P_ADDRESS_HOME}"; } ?>
- <br /><?php echo "{$user->P_ADDRESS_POST_CODE} {$user->P_ADDRESS_CITY}"; ?>
- </p>
- </td>
- </tr>
- </table>
- <h1 style="text-align:center;margin:20px 10px 10px 10px;font-size:28px;">
- <?php
- if ($wezwanie_ostateczne) {
- echo "OSTATECZNE WEZWANIE DO ZAPŁATY";
- } else {
- echo "WEZWANIE DO ZAPŁATY";
- }
- ?>
- </h1>
- <p style="margin:10px;"> 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>
- <table border=0 cellspacing=0 cellpadding=2 style="width:100%;margin:10px;font-size:small;">
- <thead style="background:#F3F3F3;">
- <tr>
- <th>Podstawa zobowiązania*</th>
- <th>Nr dokumentu</th>
- <?php //<th>Kwota netto</th> ?>
- <th>Kwota brutto</th>
- <th>Data faktury</th>
- <th>Termin płatności</th>
- <th>Pozostało do zapłaty</th>
- </tr>
- </thead>
- <tfoot>
- <tr>
- <td colspan="4" style="border:none;"></td>
- <th style="border-width:2px;border-color:#333;text-align:right;background:#F3F3F3;">Razem:</th>
- <td style="border-width:2px;border-color:#333;font-weight:bold;"><?php echo Windykacja_FunkcjeL1::formatuj_grosze($razem); ?></td>
- </tr>
- </tfoot>
- <?php foreach ($out_tbl as $out_tr) {
- $k_data = $out_tr['data'];
- $rok = substr($k_data, 0, 4);
- $cls = array();
- if ($add_cls = V::get('class', '', $out_tr)) $cls[] = $add_cls;
- $cls = (!empty($cls))? ' class="'.implode(' ', $cls).'"' : '';
- //$file_total['PODSTAWA_NUMBER'] = $r['NUMBER']."/".$r['ID_BILLING_PREFIXES'];
- //$file_total['PODSTAWA_DATA'] = date("Y-m-d",$r['BAF_TIMESTAMP']);
- //$file_total['PAYMENT_TERM'] = date("Y-m-d",$r['TERMIN_PL']);
- ?>
- <tr<?php echo $cls; ?>>
- <td>
- <?php echo "Faktura Vat"; ?>
- </td>
- <td>
- <?php echo $out_tr['nr']; ?>
- </td>
- <td>
- <?php echo $out_tr['winien']; ?>
- </td>
- <td>
- <nobr><?php echo $out_tr['data']; ?></nobr>
- </td>
- <td>
- <nobr><?php echo $out_tr['termin']; ?></nobr>
- </td>
- <td>
- <?php echo $out_tr['pozostalo']; ?>
- </td>
- </tr>
- <?php } ?>
- </table>
- <p style="margin:10px;">Słownie do zapłaty: <span style="border-bottom:1px dotted #000;padding:0 50px;"> <b><?php echo Windykacja_FunkcjeL1::slownie($razem); ?></b> </span></p>
- <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;"> <b><?php echo $wezwanie_termin; ?></b> </span></p>
- <ul style="margin:10px;font-size:small;padding:0 0 0 40px;">
- <li style="line-height:16px;">Od nieterminowych płatności mogą zostać naliczone odsetki ustawowe (art.481 § 1 KC).</li>
- <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>
- <li style="line-height:16px;">W przypadku uregulowania należności przed otrzymaniem niniejszego wezwania, proszę potraktować je za bezprzedmiotowe.</li>
- </ul>
- <table style="width:100%;border:none">
- <tr>
- <td colspan="2" style="border:none;">
- <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,
- <br> e-mail: bok@biall.net.pl lub z Windykatorem: tel. (58) 741-84-78</p>
- </td>
- </tr>
- </table>
- <table style="width:100%;border:none">
- <tr>
- <td style="width:50%;border:none;"> </td>
- <td style="width:50%;border:2px solid #999"><br /><br /><br /><br /></td>
- </tr>
- <tr>
- <td style="border:none;"> </td>
- <td style="text-align:center;border:none;">(pieczęć i podpis wierzyciela)</td>
- </tr>
- <tr>
- <td colspan="2" style="border:none;">
- <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>
- </td>
- </tr>
- <tr>
- <td colspan="2" style="border:none">
- <p style="margin:8px 0;font-size:x-small;text-align:center">W przypadku nieuregulowania płatności we wskazanym terminie, zgodnie z „Ustawą o udostępnianiu informacji gospodarczych z dnia 14 lutego 2003 r. (Dz. U. Nr 50)” , informacje o zadłużeniu zostaną przekazane do:</p>
- <p style="margin:8px 0 0 0;font-size:small;text-align:center"><b>Krajowego Rejestru Długów<br />
- Biura Informacji Gospodarczej S.A.<br />
- ul. Armii Ludowej 21, 51-214 Wrocław<br />
- www.krd.pl</b>
- <br />
- <br />
- Informacja o zadłużeniu upubliczniona będzie w systemie KRD do dnia zapłaty lub 10 lat od daty dokonania wpisu.</p>
- </td>
- </tr>
- </table>
- </div>
- </body>
- </html>
- <?php
- die();
- }
- }
- public static function task_update_stats() {
- self::css();
- $to_update_step = 1000;
- $q = V::get('q', '', $_GET);
- $_p = V::get('_p', 0, $_GET, 'int');
- echo'<a href="' . "?MENU_INIT=USERS2_WINDYKACJA_STATUS&q=".$q."&_p=".$_p . '">' . "Cofnij" . '<img src=icon/back.gif border=0 alt=POWROT>' . '</a>';
- $to_update_total = Windykacja_StatsHelper::get_to_update_total();
- if ($to_update_total <= 0) {
- echo'<p style="color:green">' . "Wszystkie rekordy zaktualizowane" . '</p>';
- return;
- }
- if ($to_update_total > $to_update_step) {
- echo'<br />';
- 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>';
- echo'<br />';
- }
- $to_update_list = Windykacja_StatsHelper::get_to_update_list($to_update_step);
- if (empty($to_update_list)) {
- echo'<p style="color:green">' . "Wszystkie rekordy zaktualizowane" . '</p>';
- return;
- }
- //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">to_update_list: ';print_r($to_update_list);echo'</pre>';
- foreach ($to_update_list as $w) {
- //echo'<div class="box box-blue">';
- echo "Nr. klienta: <b>".$w->ID_BILLING_USERS . "</b> ...";
- //echo $w->A_STATUS . ' (' . $w->A_STATUS_UPDATE_DATE . ')';
- $user = Windykacja_StatsModel::get_user_by_id($w->ID_BILLING_USERS);
- if ($user) {
- $billing_docs = Windykacja_StatsModel::getBillDocsByDate($user->ID);
- Windykacja_StatsHelper::update_stats($user, $billing_docs);
- }
- //echo'</div>';// .box-blue
- echo'<br />';
- }
- if ($to_update_total > $to_update_step) {
- echo'<br /><br />';
- 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>';
- }
- }
- public static function getPowodyRezygnacji() {
- // [895].[3888] - DEALS_TABLE.RODZAJ_DZIALANIA_HANDLOWEGO
- $powody = array();
- // $powody['3226'] = "REZYGNACJA FINANSE";
- // $powody['3227'] = "REZYGNACJA SLABA OFERTA";
- // $powody['3121'] = "REZYGNACJA WYPROWADZKA";
- // $powody['3228'] = "REZYGNACJA PROBLEMY TECHNICZNE";
- // $powody['3230'] = "REZYGNACJA WYJAZD";
- // $powody['3229'] = "REZYGNACJA ZLA OBSLUGA BOK";
- // $powody['3123'] = "REZYGNACJA CESJA";
- // $powody['3119'] = "BRAK-BOK (Inne)";
- // $powody['4188'] = "UMOWA_BEZPOSREDNIA";
- // $powody['4189'] = "UMOWA_POSREDNIA";
- // $powody['4190'] = "TELEMARKETING";
- $powody['4192'] = "REZYGNACJA ZMIANA OPERATORA";
- $powody['4193'] = "REZYGNACJA WYPROWADZKA";
- $powody['4194'] = "REZYGNACJA NIEZADOWOLENIE";
- $powody['4195'] = "REZYGNACJA CESJA";
- //$powody['4196'] = "REZYGNACJA FINANSE";
- $powody['4197'] = "REZYGNACJA SLABA OFERTA";
- $powody['4198'] = "REZYGNACJA PROBLEMY TECHNICZNE";
- $powody['4199'] = "REZYGNACJA ZLA OBSLUGA BOK";
- $powody['4200'] = "WYPOWIEDZENIE PRZEZ OPERATORA ZA DLUGI";
- // $powody['4201'] = "UMOWA W BOK ZWYCZAJNA";
- // $powody['4202'] = "REZYGNACJA WYJAZD";
- // $powody['4191'] = "BRAK-BOK (Inne)";
- $powody['19803'] = "REZYGNACJA_Z_PRZEJSCIEM_DO_VECTRA";
- $powody['22511'] = "WYPOWIEDZENIE PRZEZ OPERATORA";
- $powody['4213'] = "REZYGNACJA INNE";
- return $powody;
- }
- /**
- * @params $user
- * @params $id_koresp
- */
- public static function task_bok_rozwiazanie_umowy_print($user, $id_koresp) {
- $user_hist_events = Windykacja_StatsHelper::getUserHistStatusEvents($user->ID);
- if (empty($user_hist_events)) {
- echo '<p style="color:red">' . "Brak danych HIST" . '</p>';
- return;
- }
- $v_doc = null;
- foreach ($user_hist_events as $v_hist) {
- if ($v_hist['ID_KORESP'] == $id_koresp) {
- $v_doc = (object)$v_hist;
- break;
- }
- }
- if (!$v_doc) {
- echo '<p style="color:red">' . "Brak danych HIST dla kodresp(".$v_doc->ID_KORESP.")" . '</p>';
- return;
- }
- // params(255): rozwiazanie umowy,9872,3121
- $params = explode(',', $v_doc->params);
- if (count($params) < 3 && $params[0] != 'rozwiazanie umowy') {
- echo '<p style="color:red">' . "Bad params" . '</p>';
- return;
- }
- $koresp = DB::get_by_id('IN7_DZIENNIK_KORESP', $id_koresp);
- if (!$koresp) {
- echo '<p style="color:red">' . "Koresp not exists!" . '</p>';
- return;
- }
- $nr_umowy = $params[1];
- $powod = $params[2];
- $deal_id = '..........................................................';
- $termin_odlaczenia = '.....................';
- if (count($params) > 4) {
- // $data_arr["params"] = "rozwiazanie umowy,{$nr_umowy},{$powod},{$termin_odlaczenia},{$new_id_deals}";
- $termin_odlaczenia = $params[3];
- $deal_id = $params[4];
- }
- $arg_values = array();
- $arg_values['powod'] = self::getPowodyRezygnacji();
- $com = new stdClass();
- if ($user->BILLING_OWNER == 2) {
- $com->name = 'NET-DAY';
- $com->fullName = 'NET-DAY s.c.';
- $com->address_street = 'ul. Kopeckiego 9/24';
- $com->address_city = '80-809 Gdańsk';
- } else {
- $com->name = 'BIALL-NET';
- $com->fullName = 'BIALL-NET Sp. z o.o.';
- $com->address_street = 'Otomin ul. Słoneczna 43';
- $com->address_city = '80-174 Gdańsk';
- }
- ?>
- <style type="text/css">
- body{margin:12px;font-family:serif;font-size:11px;line-height:14px;}
- td{font-family:verdana; font-size:10px; color:#333;}
- table {border-style:none;}
- table td, table th {padding:0 2px;border-collapse:collapse;}
- table.tbl-bordered {border-style:none;}
- table.tbl-bordered td, table.tbl-bordered th {padding:0 2px;border-style:solid;border-collapse:collapse;}
- table.tbl-bordered th {border-width:1px;border-color:#333;}
- table.tbl-bordered td {border-width:1px;border-color:#333;}
- </style>
- <table cellspacing="0" cellpadding="0" border="0" style="width:100%;"><tr>
- <td>[1612][v3]</td>
- <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); ?>
- <br />Gdańsk, dnia: .......................
- </td>
- </tr></table>
- <br /><b>Dane Abonenta</b>
- <br />Imię i Nazwisko / Nazwa firmy: <?php echo "{$user->P_NAME} {$user->P_NAME_SECOND}";?>
- <br />Pesel / nr dowodu osoby reprezentującej firmę: <?php echo $user->P_PESEL; ?>
- <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}"; ?>
- <br />Nr ID klienta: <?php echo $user->ID; ?>
- <br />Nr ID Umowy: <?php echo $deal_id; ?>
- <?php
- // <br />ID_SERVICES_OLD: ..........................................................
- ?>
- <table cellspacing="0" cellpadding="0" border="0" style="width:100%;margin:40px 0;"><tr>
- <td> </td>
- <td style="width:260px;text-align:left">
- <?php echo $com->fullName; ?><br /><?php echo $com->address_street; ?><br /><?php echo $com->address_city; ?>
- </td>
- </tr></table>
- <p style="margin:50px 0; text-align:center;">ROZWIĄZANIE UMOWY ABONENCKIEJ O ŚWIADCZENIE USŁUG TELEKOMUNIKACYJNYCH NR <sup>[794]</sup></p>
- <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>
- <p>Termin odłączenia: <?php echo $termin_odlaczenia; ?>
- <br />(poinformowano o miesięcznym terminie wypowiedzenia, jak również przedstawiono nowe propozycje oferty)</p>
- <p style="margin:30px 0;font-weight:bold;"><sup>[1061]</sup>Powody rezygnacji z Usług (wybierz tylko 1 najważniejszy powód)</p>
- <table cellspacing="0" cellpadding="0" border="1" style="width:100%" class="tbl-bordered">
- <?php foreach ($arg_values['powod'] as $k_powod => $v_label) : ?>
- <?php $sel = ($powod == $k_powod)? "X" : " "; ?>
- <tr><td style="width:26%;"><?php echo $v_label; ?></td><td style="width:5%;text-align:center;"> <?php echo $sel; ?> </td><td></td></tr>
- <?php endforeach; ?>
- </table>
- <table cellspacing="0" cellpadding="0" border="0" style="margin:60px 0;width:100%;">
- <tr>
- <td style="width:15%;"> </td>
- <td style="width:20%;border-top:1px dotted #000;text-align:center;">
- Data i podpis pracownika BOK
- </td>
- <td> </td>
- <td style="width:20%;border-top:1px dotted #000;text-align:center;">
- Data i czytelny podpis Klienta
- </td>
- <td style="width:15%;"> </td>
- </tr>
- </table>
- <?php
- }
- public static function task_bok_rozwiazanie_umowy(&$user) {
- echo'<script type="text/javascript">'."
- function frm_bok_rozwiazanie_umowy(frm){
- if (frm.id_proj.value=='') {
- alert('Nie podano numeru projektu!');
- } else if (frm.nr_umowy.value=='') {
- alert('Nie podano numeru umowy!');
- } else if (frm.temin_odlaczenia.value=='') {
- alert('Nie podano daty odłączenia!');
- // TODO: powod - radio
- } else {
- return true;
- }
- return false;
- }
- ".'</script>';
- $umowy_l2 = Windykacja_StatsModel::getClientUmowy($user->ID);
- if (empty($umowy_l2)) {
- echo '<p style="color:red">' . "Brak aktualnych umów z klientem" . '</p>';
- return;
- }
- $arg_errors = array();
- $arg_values = array();
- $args = array();
- $args['id_proj'] = V::get('id_proj', '', $_REQUEST, 'int');
- $args['nr_umowy'] = V::get('nr_umowy', '', $_REQUEST, 'int');
- $args['temin_odlaczenia'] = V::get('temin_odlaczenia', '', $_REQUEST);
- $args['powod'] = V::get('powod', '', $_REQUEST, 'int');
- $arg_values['nr_umowy'] = array();
- foreach ($umowy_l2 as $k_id => $v_deal) {
- $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'] . ')';
- }
- $arg_values['powod'] = self::getPowodyRezygnacji();
- // validate
- if ($args['temin_odlaczenia'] == '') {
- $args['temin_odlaczenia'] = date("Y-m-d", mktime(0, 0, 0, date('m') + 1, date('d'), date('Y')));
- } else {// cehck date format
- if (strlen($args['temin_odlaczenia']) != 10) {
- $arg_errors['temin_odlaczenia'] = "Błędny format daty";
- } else {
- $check_date = explode('-', $args['temin_odlaczenia']);
- if (count($check_date) != 3 || strlen($check_date[0]) != 4 || strlen($check_date[1]) != 2 || strlen($check_date[2]) != 2) {
- $arg_errors['temin_odlaczenia'] = "Błędny format daty";
- } else {
- // ok
- }
- }
- }
- if ($args['id_proj'] <= 0) {
- $arg_errors['id_proj'] = "Nie podano numeru projektu!";
- }
- if ($args['nr_umowy'] <= 0) {
- $arg_errors['nr_umowy'] = "Nie wybrano numeru umowy!";
- }
- if ($args['powod'] <= 0) {
- $arg_errors['powod'] = "Nie wybrano powodu rezygnacji!";
- }
- // add rezygnacja z umowy
- if (1 == V::get('contact_bok_rozwiazanie_umowy_save', 0, $_POST, 'int')) {
- if (!empty($arg_errors)) {
- echo '<p style="color:red">' . "W formularzy wystąpiły błędy:";
- foreach ($arg_errors as $k_field => $v_err) {
- echo '<br />' . $v_err;
- }
- echo '</p>';
- } else {
- $msg_log = array();
- $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);
- if ($ret) {
- echo '<p style="color:green">' . "Dane zapisano pomyślnie" . '</p>';
- if (!empty($msg_log)) {
- echo '<p style="color:silver">' . implode('<br />', $msg_log) . '</p>';
- }
- $ico_print = '<img src="icon/print.gif" height="16" />';
- 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>';
- return;
- } else {
- echo '<p style="color:red">' . "Wystąpił błąd podczas zapisu danych" . '</p>';
- if (!empty($msg_log)) {
- echo '<p style="color:silver">' . implode('<br />', $msg_log) . '</p>';
- }
- }
- }
- }
- echo'<form action="" method="post" onsubmit="' . "return frm_bok_rozwiazanie_umowy(this);" . '">';
- echo'<input type="hidden" name="'."contact_bok_rozwiazanie_umowy_save".'" value="'."1".'" />';
- echo '<b>' . "Rozwiązanie umowy abonenckiej o świadczenie usług telekomunikacyjnych" . '</b>';
- echo '<br />' . "ID projektu: ";
- echo '<input type="text" name="'."id_proj".'" value="' . $args['id_proj'] . '" class="i" />';
- echo '<br />' . "Nr umowy: ";
- foreach ($arg_values['nr_umowy'] as $k_id => $v_label) {
- $sel = ($k_id == $args['nr_umowy'])? ' checked="checked"' : '';
- echo '<br />' . " " . '<input type="radio" name="'."nr_umowy".'" value="' . $k_id . '" class="i" ' . $sel . ' />' . " " . $v_label;
- }
- echo '<br />' . "Termin odłączenia: ";
- echo '<input type="text" name="'."temin_odlaczenia".'" value="' . $args['temin_odlaczenia']. '" class="i" />';
- echo '<br />' . "Powód rezygnacji z usług: ";
- foreach ($arg_values['powod'] as $k_id => $v_label) {
- $sel = ($k_id == $args['powod'])? ' checked="checked"' : '';
- echo '<br />' . " " . '<input type="radio" name="'."powod".'" value="' . $k_id . '" class="i" ' . $sel . ' />' . " " . $v_label;
- }
- echo '<br />' . '<input type="submit" value="'."zapisz".'" />';
- echo'</form>';
- }
- }
- class Lay_Html_Toggle {
- public static function start($title, $attrs = array()) {
- $cls = array();
- $cls[] = 'may-hide';
- if (array_key_exists('open', $attrs) && $attrs['open'] == false) $cls[] = 'hide';
- echo'<div class="'.implode(' ', $cls).'">';
- $st = array();
- $st[] = 'margin-bottom:0';
- if (!empty($attrs['color'])) $st[] = 'color:'.$attrs['color'];
- echo'<h4 style="'.implode(';', $st).'">'.$title;
- echo'<a class="btn-hide" href="#" onclick="'."return hide(this);".'">'."-".'</a>';
- echo'<a class="btn-show" href="#" onclick="'."return hide(this);".'">'."+".'</a>';
- echo'</h4>';
- echo'<div class="to-hide">';
- }
- public static function end() {
- echo'</div>';// .to-hide
- echo'</div>';// .may-hide'
- }
- public static function show_js() {
- echo'<script type="text/javascript">'."
- function hide(n){
- jQuery(n).parent().parent().toggleClass('hide');
- return false;
- }
- ".'</script>';
- }
- }
|