'btn btn-primary', 'href' => $this->getLink('exportTransGusCsv') ], "Export csv"); echo '
'; $rows = $this->fetch(); UI::table([ 'rows' => array_map([ $this, 'convertItemFromDB' ], $rows), ]); } function exportTransGusCsvAction() { if (!User::isAdmin()) throw new Excetion("Access Denied"); $fileName = 'biall-net--transgus--2019-12-31.csv'; header('Content-Type: application/csv'); header('Content-Disposition: attachment; filename="' . $fileName . '";'); $rows = $this->fetch(); $firstRow = reset($rows); if (!$firstRow) throw new Exception("Brak danych"); $headers = array_keys($this->convertItemFromDB($firstRow)); echo implode("\t", $headers) . "\n"; echo implode("\n", array_map([ $this, 'convertCsv' ], $rows)); iconv("UTF-8", "Windows-1250", $output); } function fetch() { return DB::getPDO()->fetchAll(" select com.ID , com.BILLING_OWNER , com.P_NAME, com.P_NAME_SECOND, com.P_NIP, com.P_PESEL, com.P_PHONE, com.P_PHONE_SMS , '#####' as _, com.* from `billing2013`.BILLS_FVAT fv left join `billing2013`.BILLS_FVAT_POS as pos on ( fv.ID = pos.ID_BILLS_FVAT ) left join `billing2013`.SERVICES srv on ( srv.ID = pos.ID_SERVICES ) left join `SES_USERS2`.`COMPANIES` as com on ( com.ID = fv.ID_BILLING_USERS ) where fv.BILL_DATE like '2020-01-%' and srv.ID is not null -- skip 9 rows -- and com.A_ADM_COMPANY = '19994_PODMIOT_Vectra_wlasciciel' -- 11689, 11815, 11923 -- OK BN -- and com.BILLING_OWNER = 3 -- 3 NETDAY and com.BILLING_OWNER = 1 -- BN and com.is_firma = 0 group by fv.ID_BILLING_USERS "); } function convertCsv($row) { $item = $this->convertItemFromDB($row); $values = array_map(function ($val) { return str_replace([ "\n", "\t" ], '', $val); }, array_values($item)); return implode("\t", $values); } function convertItemFromDB($item) { $tel = $item['P_PHONE_SMS']; if (empty($tel) && !empty($item['P_PHONE'])) { $listTel = explode(' ', trim(str_replace(',', ' ', $item['P_PHONE']))); if (!empty($listTel[0])) $tel = $listTel[0]; else if (!empty($listTel[1])) $tel = $listTel[1]; } return [ 'REGON' => '192120212', // numer REGON podmiotu sprawozdającego 'Nazwa' => 'BIALL-NET Sp. z o.o.', // nazwa podmiotu sprawozdającego 'DataStanNa' => '2019-12-31', // data stanu danych w formacie DD-MM-RRRR (np. 31-12-2019) 'Identyfikator_rekordu' => $item['ID'], // Identyfikator sztuczny rekordu w zbiorze 'Identyfikator' => '', // Sztuczny identyfikator abonenta. Sluży do oznaczania abonenta, gdy występuje on w kilku rekordach (np. ma kilka numerów telefonów bądź podaje klika adresów zamieszkania lub do korespondencji). Wypełnienie Identyfikatora jest szczególnie istotne w sytuacjach, gdy dla klienta nie ma identyfikatora w postaci numeru PESEL. 'PESEL' => $item['P_PESEL'], // numer PESEL abonenta, jeżeli jest dostępny 'Nazwisko' => $item['P_NAME_SECOND'], // nazwisko abonenta 'Imie' => $item['P_NAME'], // pierwsze imię abonenta 'DrugieImie' => '', // drugie imię abonenta 'AdrZamNazwaWojew' => '', // nazwa województwa // 'AdrZamKodWojew' => '', // kod TERYT województwa 2 'AdrZamNazwaPowiatu' => '', // nazwa powiatu // 'AdrZamKodPowiatu' => '', // kod TERYT powiatu 2 'AdrZamNazwaGminy' => '', // nazwa gminy // 'AdrZamKodGminy' => '', // kod TERYT gminy 3 'AdrZamNazwaMiejscowosci' => $item['P_ADDRESS_CITY'], // nazwa miejscowości // 'AdrZamKodMiejscowosci' => '', // identyfikator TERYT miejscowości 7 'AdrZamNazwaUlicy' => $item['P_ADDRESS_STREET'], // nazwa ulicy // 'AdrZamKodUlicy' => '', // identyfikator TERYT ulicy 5 'AdrZamNumerDomu' => $item['P_ADDRESS_HOUSE'], // numer budynku 'AdrZamNumerLokalu' => $item['P_ADDRESS_HOME'], // numer mieszkania // 'AdrKorNazwaWojew' => '', // nazwa województwa // // 'AdrKorKodWojew' => '', // kod TERYT województwa 2 // 'AdrKorNazwaPowiatu' => '', // nazwa powiatu // // 'AdrKorKodPowiatu' => '', // kod TERYT powiatu 2 // 'AdrKorNazwaGminy' => '', // nazwa gminy // // 'AdrKorKodGminy' => '', // kod TERYT gminy 3 // 'AdrKorNazwaMiejscowosci' => '', // nazwa miejscowości // // 'AdrKorKodMiejscowosci' => '', // identyfikator TERYT miejscowości 7 // 'AdrKorNazwaUlicy' => '', // nazwa ulicy // // 'AdrKorKodUlicy' => '', // identyfikator TERYT ulicy 5 // 'AdrKorNumerDomu' => '', // numer budynku // 'AdrKorNumerLokalu' => '', // numer mieszkania 'NrTelefonu' => $tel, // numer telefonu abonenta ]; } }