tempFilename = $cfg['Path']['data'].'export_data.dbf'; $this->table = WritableTable::create($this->tempFilename, $this->columnDefs(), $this->tempFilename); } public function finalize() { $this->sendHttpHeaders(); $this->table->close(); readfile($this->tempFilename); exit; } /** * @param $order \Order */ public function generateRow($order) { $row_pointer = $this->table->appendRecord(); $this->appendToRow($row_pointer, $order); $this->table->writeRecord(); } public function sendHttpHeaders() { header('Content-Type: application/x-dbase; charset='.$this->encoding); header('Content-Disposition: attachment; filename="'.$this->filename.'"'); header('Expires: 0'); header('Pragma: no-cache'); } protected function columnDefs() { /* FIXME: dodělat zbytek a přesměrovat DBF z export_sracka sem */ return [ ['DATUM_VYST', Record::DBFFIELD_TYPE_DATE], // datum vystavení // ['DATUM_SPL', DBFFIELD_TYPE_DATE], //prázdné // ['DOKLAD_1', DBFFIELD_TYPE_CHAR, 12], //aby tam bylo fčíslo objednávky např. f11521 // ['TYP_ZAP', DBFFIELD_TYPE_CHAR, 1], //hodnota P // ['ZNAK_UCT', DBFFIELD_TYPE_CHAR, 5], //prázdné // ['SYMBOLY', DBFFIELD_TYPE_CHAR, 20], //včísloobjednávky např. v11521 // ['PAR_ZNAK', DBFFIELD_TYPE_CHAR, 12], //to samé jako DOKLAD_1 např. f11521 // ['BANK_UCET', DBFFIELD_TYPE_CHAR, 44], //prázdné // ['SPEC_SYMB', DBFFIELD_TYPE_CHAR, 10], //prázdné // ['POPIS_TEXT', DBFFIELD_TYPE_CHAR, 30], //libovolný text - např. prodej eshop-objednávka 11521 // ['DRUH_UCT', DBFFIELD_TYPE_CHAR, 5], //hodnota PZ // ['MENA', DBFFIELD_TYPE_CHAR, 3], //buď Kč nebo EUR // ['CELKEM_KC', DBFFIELD_TYPE_NUMERIC, 8, 2], //celková částka dokladu včetně DPH v Kč // ['CELKEMCIZI', DBFFIELD_TYPE_NUMERIC, 8, 2], //celková částka dokladu v EUR - prodej na Slovensko? // ['KURZ', DBFFIELD_TYPE_NUMERIC, 5, 3], //kurz pro přepočet // ['DATUM_DPH', DBFFIELD_TYPE_DATE], //datum DPH = datum vystavení // ['TYP_DPH', DBFFIELD_TYPE_CHAR, 5], //hodnota U // ['ZAKL_DPH_Z', DBFFIELD_TYPE_NUMERIC, 8, 2], //Částka bez daně v základní sazbě // ['DPH_Z', DBFFIELD_TYPE_NUMERIC, 8, 2], //Daň s azba 21 % // ['ZAKL_DPH_S', DBFFIELD_TYPE_NUMERIC, 8, 2], //Částka bez daně ve snížené sazbě // ['DPH_S', DBFFIELD_TYPE_NUMERIC, 8, 2], //Daň s azba 15 % // ['TYPMIMODPH', DBFFIELD_TYPE_CHAR, 1], //prázdné // ['CASTKAMIMO', DBFFIELD_TYPE_NUMERIC, 8, 2], //prázdné // ['STREDISKO', DBFFIELD_TYPE_CHAR, 5], //PRÁZDNÉ // ['vykon', DBFFIELD_TYPE_CHAR, 5], //prázdné // ['zakazka', DBFFIELD_TYPE_CHAR, 5], //prázdné // ['POZNAMKA', DBFFIELD_TYPE_CHAR, 150], //sem naimportovat jméno a příjmění a město kupujícího JAN NOVAK TURNOV // ['FIRMA', DBFFIELD_TYPE_CHAR, 30], // Firma // ['JMENO', DBFFIELD_TYPE_CHAR, 30], //Jmeno // ['PRIJMENI', DBFFIELD_TYPE_CHAR, 30], //Prijmeni // ['ICO', DBFFIELD_TYPE_CHAR, 15], //ICO // ['DIC', DBFFIELD_TYPE_CHAR, 20], //DIC // // ['ZAKAZNIK', DBFFIELD_TYPE_CHAR, 80], //Prijmeni nebo firma // ['ULICE', DBFFIELD_TYPE_CHAR, 50], //Adresa // ['MESTO', DBFFIELD_TYPE_CHAR, 30], //Adresa // ['PSC', DBFFIELD_TYPE_CHAR, 10], //Adresa // ['ZEME', DBFFIELD_TYPE_CHAR, 30], //Adresa // // ['STAV', DBFFIELD_TYPE_CHAR, 10], // STORNO/PRODEJ // ['DATUM_SPLAT', DBFFIELD_TYPE_DATE], //datum splatnosti ]; } /** * @param $row_pointer Record * @param $order \Order */ protected function appendToRow($row_pointer, $order) { /* FIXME: dodělat zbytek a přesměrovat DBF z export_sracka sem */ if ($order->date_handle) { $row_pointer->setObjectByName('DATUM_VYST', $order->date_handle->format('Ymd')); // datum vystavení } // $r->setObjectByName("DATUM_SPL", $row['DBFFIELD_TYPE_DATE']); //prázdné // $row_pointer->setObjectByName('DOKLAD_1', $order['order_no']); //aby tam bylo fčíslo objednávky např. f11521 // $row_pointer->setObjectByName('TYP_ZAP', 'P'); //hodnota P // $row_pointer->setObjectByName('ZNAK_UCT', ''); //prázdné // $row_pointer->setObjectByName('SYMBOLY', $order['id']); //včísloobjednávky např. v11521 // $row_pointer->setObjectByName('PAR_ZNAK', $order['order_no']); //to samé jako DOKLAD_1 např. f11521 // $row_pointer->setObjectByName('BANK_UCET', ''); //prázdné // $row_pointer->setObjectByName('SPEC_SYMB', ''); //prázdné // $row_pointer->setObjectByName('POPIS_TEXT', $encode('Objednávka: ').$order['id']); //libovolný text - např. prodej eshop-objednávka 11521 // $row_pointer->setObjectByName('DRUH_UCT', 'PZ'); //hodnota PZ // $row_pointer->setObjectByName('MENA', $encode('Kč')); //buď Kč nebo EUR // $row_pointer->setObjectByName('CELKEM_KC', $total_price); //celková částka dokladu včetně DPH v Kč // $row_pointer->setObjectByName('CELKEMCIZI', 0); //celková částka dokladu v EUR - prodej na Slovensko? // $row_pointer->setObjectByName('KURZ', 0); //kurz pro přepočet // $row_pointer->setObjectByName('DATUM_DPH', strtotime($order['date_handle'])); //datum DPH = datum vystavení // $row_pointer->setObjectByName('TYP_DPH', 'U'); //hodnota U // $row_pointer->setObjectByName('ZAKL_DPH_Z', $taxes['21']); //Částka bez daně v základní sazbě // $row_pointer->setObjectByName('DPH_Z', $taxes['21']->mul(toDecimal(0.21))); //Daň sazba 21 % // $row_pointer->setObjectByName('ZAKL_DPH_S', $taxes['15']); //Částka bez daně ve snížené sazbě // $row_pointer->setObjectByName('DPH_S', $taxes['15']->mul(toDecimal(0.15))); //Částka bez daně ve snížené sazbě // $row_pointer->setObjectByName('TYPMIMODPH', ''); //prázdné // $row_pointer->setObjectByName('CASTKAMIMO', $taxes['0']); //prázdné // $row_pointer->setObjectByName('STREDISKO', ''); //PRÁZDNÉ // $row_pointer->setObjectByName('vykon', ''); //prázdné // $row_pointer->setObjectByName('zakazka', ''); //prázdné // $row_pointer->setObjectByName('POZNAMKA', "{$order['invoice_name']} {$order['invoice_surname']}, {$order['invoice_city']}"); //sem naimportovat jméno a příjmění a město kupujícího JAN NOVAK TURNOV // $row_pointer->setObjectByName('FIRMA', $order['invoice_firm']); // Firma // $row_pointer->setObjectByName('JMENO', $order['invoice_name']); //Jmeno // $row_pointer->setObjectByName('PRIJMENI', $order['invoice_surname']); //Prijmeni // // $row_pointer->setObjectByName('ICO', $order['invoice_ico']); //ICO // $row_pointer->setObjectByName('DIC', $order['invoice_dic']); //DIC // // $row_pointer->setObjectByName('ZAKAZNIK', $order['invoice_firm'] ? $order['invoice_firm'] : "{$order['invoice_name']} {$order['invoice_surname']}"); //Prijmeni nebo firma // $row_pointer->setObjectByName('ULICE', $order['invoice_street']); // $row_pointer->setObjectByName('MESTO', $order['invoice_city']); // $row_pointer->setObjectByName('PSC', $order['invoice_zip']); // $row_pointer->setObjectByName('ZEME', $order['invoice_country']); // // $row_pointer->setObjectByName('STAV', $order['status_storno'] ? 'STORNO' : 'PRODEJ'); // STORNO/PRODEJ // $row_pointer->setObjectByName('DATUM_SPLAT', strtotime($order['date_due'])); } }