瀏覽代碼

+ export gus

Piotr Labudda 6 年之前
父節點
當前提交
9b0449c56a
共有 1 個文件被更改,包括 112 次插入0 次删除
  1. 112 0
      SE/se-lib/Route/ExportTransGus.php

+ 112 - 0
SE/se-lib/Route/ExportTransGus.php

@@ -0,0 +1,112 @@
+<?php
+
+Lib::loadClass('RouteBase');
+
+class Route_ExportTransGus extends RouteBase {
+
+	function defaultAction() { UI::layout([ $this, 'defaultView' ]); }
+	function defaultView() {
+		if (!User::isAdmin()) throw new Excetion("Access Denied");
+		echo UI::h('a', [ 'class' => 'btn btn-primary', 'href' => $this->getLink('exportTransGusCsv') ], "Export csv");
+		echo '<hr>';
+
+
+		$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
+		];
+	}
+
+}