shop_due_days} DAY AS date_due, flags "; $var['from'] = ' '.getTableName('orders').' AS o '; $var['where'] = ' 1 '; $var['orderField'] = 'o.id'; $var['orderDir'] = 'ASC'; $var['order'] = ' ORDER BY '.$var['orderField'].' '.$var['orderDir']; if (findModule('currencies')) { $var['fields'] = str_replace('total_price', 'total_price, total_price*currency_rate as total_price_czk, currency, currency_rate', $var['fields']); } // ----------------------------------------------------------------- function prepdate($date) { if (empty($date)) { return ''; } $date = new \DateTime($date); return $date->format('Y-m-d'); } $var['where'] .= ' AND o.id IN ('.(!empty($orderIds) ? join(',', $orderIds) : '0').')'; $encode = function ($str) { return iconv('utf-8', getVal('coding', null, 'utf-8').'//TRANSLIT', $str); }; // ----------------------------------------------------------------- $var['query'] = 'SELECT '.$var['fields'].' FROM '.$var['from'].' WHERE '.$var['where'].' '.$var['order']; // Invoice mass printing if ($format == 'invoice') { $where = 'screen'; $var['fields'] = 'id'; $SQL = sqlQuery('SELECT '.$var['fields'].' FROM '.$var['from'].' WHERE '.$var['where'].' '.$var['order']); $file = '
'; } if ($format == 'overview') { $where = 'screen'; } $SQL = sqlQuery($var['query']); if (sqlNumRows($SQL) > 0) { if ($format == 'dbf' || $format == 'overview') { $vats = sqlFetchAll(sqlQuery('SELECT DISTINCT COALESCE(tax, 0) vat FROM '.$var['from'].' LEFT JOIN order_items oi ON oi.id_order=o.id WHERE '.$var['where'].' ORDER BY vat'), 'vat'); $vats = array_map(function ($x) { return \DecimalConstants::zero(); }, $vats); $sumTaxes = $vats; if ($format == 'overview') { $file = '| číslo dokladu | datum vystavení | jmeno a přijmení | '; foreach ($sumTaxes as $vat => $sum) { $file .= "základ dph {$vat}% | dph {$vat}% | "; } $file .= 'celková částka | stav | poznámka | '; } if ($format == 'dbf') { if ($where == 'file') { header('Content-type: '.$mime_type[$format]); header('Content-Disposition: attachment; filename="'.$filename[$format].'"'); header('Expires: 0'); header('Pragma: no-cache'); } $oldErr = error_reporting(0); /* sample data */ $fields = [ ['DATUM_VYST', Record::DBFFIELD_TYPE_DATE], // datum vystavení ['DATUM_SPL', Record::DBFFIELD_TYPE_DATE], // prázdné ['DOKLAD_1', Record::DBFFIELD_TYPE_CHAR, 12], // aby tam bylo fčíslo objednávky např. f11521 ['TYP_ZAP', Record::DBFFIELD_TYPE_CHAR, 1], // hodnota P ['ZNAK_UCT', Record::DBFFIELD_TYPE_CHAR, 5], // prázdné ['SYMBOLY', Record::DBFFIELD_TYPE_CHAR, 20], // včísloobjednávky např. v11521 ['PAR_ZNAK', Record::DBFFIELD_TYPE_CHAR, 12], // to samé jako DOKLAD_1 např. f11521 ['BANK_UCET', Record::DBFFIELD_TYPE_CHAR, 44], // prázdné ['SPEC_SYMB', Record::DBFFIELD_TYPE_CHAR, 10], // prázdné ['POPIS_TEXT', Record::DBFFIELD_TYPE_CHAR, 30], // libovolný text - např. prodej eshop-objednávka 11521 ['DRUH_UCT', Record::DBFFIELD_TYPE_CHAR, 5], // hodnota PZ ['MENA', Record::DBFFIELD_TYPE_CHAR, 3], // buď Kč nebo EUR ['CELKEM_KC', Record::DBFFIELD_TYPE_FLOATING, 8, 2], // celková částka dokladu včetně DPH v Kč ['CELKEMCIZI', Record::DBFFIELD_TYPE_FLOATING, 8, 2], // celková částka dokladu v EUR - prodej na Slovensko? ['KURZ', Record::DBFFIELD_TYPE_FLOATING, 5, 3], // kurz pro přepočet ['DATUM_DPH', Record::DBFFIELD_TYPE_DATE], // datum DPH = datum vystavení ['TYP_DPH', Record::DBFFIELD_TYPE_CHAR, 5], // hodnota U ['ZAKL_DPH_Z', Record::DBFFIELD_TYPE_FLOATING, 8, 2], // Částka bez daně v základní sazbě ['DPH_Z', Record::DBFFIELD_TYPE_FLOATING, 8, 2], // Daň s azba 21 % ['ZAKL_DPH_S', Record::DBFFIELD_TYPE_FLOATING, 8, 2], // Částka bez daně ve snížené sazbě ['DPH_S', Record::DBFFIELD_TYPE_FLOATING, 8, 2], // Daň s azba 15 % ['TYPMIMODPH', Record::DBFFIELD_TYPE_CHAR, 1], // prázdné ['CASTKAMIMO', Record::DBFFIELD_TYPE_FLOATING, 8, 2], // prázdné ['STREDISKO', Record::DBFFIELD_TYPE_CHAR, 5], // PRÁZDNÉ ['vykon', Record::DBFFIELD_TYPE_CHAR, 5], // prázdné ['zakazka', Record::DBFFIELD_TYPE_CHAR, 5], // prázdné ['POZNAMKA', Record::DBFFIELD_TYPE_CHAR, 150], // sem naimportovat jméno a příjmění a město kupujícího JAN NOVAK TURNOV ['FIRMA', Record::DBFFIELD_TYPE_CHAR, 30], // Firma ['JMENO', Record::DBFFIELD_TYPE_CHAR, 30], // Jmeno ['PRIJMENI', Record::DBFFIELD_TYPE_CHAR, 30], // Prijmeni ['ICO', Record::DBFFIELD_TYPE_CHAR, 15], // ICO ['DIC', Record::DBFFIELD_TYPE_CHAR, 20], // DIC ['ZAKAZNIK', Record::DBFFIELD_TYPE_CHAR, 80], // Prijmeni nebo firma ['ULICE', Record::DBFFIELD_TYPE_CHAR, 50], // Adresa ['MESTO', Record::DBFFIELD_TYPE_CHAR, 30], // Adresa ['PSC', Record::DBFFIELD_TYPE_CHAR, 10], // Adresa ['ZEME', Record::DBFFIELD_TYPE_CHAR, 30], // Adresa ['STAV', Record::DBFFIELD_TYPE_CHAR, 10], // STORNO/PRODEJ ['DATUM_SPLAT', Record::DBFFIELD_TYPE_DATE], // datum splatnosti ['SAZBA_DPH_Z', Record::DBFFIELD_TYPE_FLOATING, 8, 2], // sazba DPH - zakladni ['SAZBA_DPH_S', Record::DBFFIELD_TYPE_FLOATING, 8, 2], // sazba DPH - snizena ]; /* create a new table */ $tableNew = WritableTable::create($cfg['Path']['data'].'export.dbf', $fields); } $sumPrice = \DecimalConstants::zero(); while (($row = sqlFetchAssoc($SQL)) !== false) { $taxes = $vats; if ($row['status_storno']) { $row['total_price_czk'] = 0; $row['total_price'] = 0; } else { // Get vats $query = "SELECT oi.tax, SUM(oi.total_price) price FROM order_items oi JOIN orders o ON o.id = oi.id_order WHERE oi.id_order={$row['id']} GROUP BY oi.tax"; if (findModule('currencies')) { $query = str_replace('total_price', 'total_price*o.currency_rate', $query); } $i_SQL = sqlQuery($query); foreach ($i_SQL as $i_row) { $tax = strval($i_row['tax']); $price = toDecimal($i_row['price']); $taxes[$tax] = $price; if (!isset($sumTaxes[$tax])) { $sumTaxes[$tax] = \DecimalConstants::zero(); } $sumTaxes[$tax] = $sumTaxes[$tax]->add($price); } $sumPrice = $sumPrice->add(toDecimal($row['total_price'])); } if ($format == 'overview') { $note = ''; if ($row['status_storno']) { $note = 'STORNO'; } $file .= "
|---|---|---|---|---|---|---|---|
| {$row['order_no']} | {$row['dateh']} | {$row['invoice_name']} {$row['invoice_surname']}, {$row['invoice_city']} | "; foreach ($taxes as $vat => $sum) { $file .= "".number_format($taxes[$vat]->asFloat(), 2, ',', '')." | ".number_format($taxes[$vat]->mul(toDecimal($vat / 100))->asFloat(), 2, ',', '').' | '; } $file .= "".number_format($row['total_price'], 2, ',', '').' | '.$cfg['Order']['Status']['global'][$row['status']]." | {$note} |
|   | '; foreach ($sumTaxes as $tax => $sum) { $file .= " | zaklad dph {$tax}% | dph {$tax}% | "; } $file .= 'celková částka | |||
| CELKEM: | '; foreach ($sumTaxes as $tax => $sum) { $file .= "".number_format($sum->asFloat(), 2, ',', '')." | ".number_format($sum->mul(toDecimal($tax / 100))->asFloat(), 2, ',', '').' | '; } $file .= "".number_format($sumPrice->asFloat(), 2, ',', '').' | ||||