first commit
This commit is contained in:
156
admin/class/Export/ExportDataDBF.php
Normal file
156
admin/class/Export/ExportDataDBF.php
Normal file
@@ -0,0 +1,156 @@
|
||||
<?php
|
||||
|
||||
namespace Export;
|
||||
|
||||
use XBase\Record;
|
||||
use XBase\WritableTable;
|
||||
|
||||
/**
|
||||
* Own class for DBF export.
|
||||
*/
|
||||
class ExportDataDBF extends ExportData
|
||||
{
|
||||
/**
|
||||
* @var WritableTable
|
||||
*/
|
||||
private $table;
|
||||
|
||||
public function initialize()
|
||||
{
|
||||
global $cfg;
|
||||
|
||||
$this->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']));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user