assign("data", $inv); $smarty->assign("totalNetto", $total_netto); $smarty->assign("totalBrutto", $total_brutto); $smarty->assign("totalVat", $total_vat); $smarty->assign("sources", getSources()); $smarty->assign("source", $_GET['source']); $smarty->assign("dates", getDates()); $smarty->assign("date", $_GET['date']); $smarty->assign("type", $_GET['type']); echo $smarty->display(getcwd() . '/modules/EcmInvoiceOuts/BimIT-eCommerceInvoices/ecommerceInvoicesListView.tpl'); } function getInvoices($source, $date, $type) { $db = $GLOBALS['db']; $date .= '%'; $query = "SELECT i.id, i.document_no, i.type, i.register_date, i.sell_date, i.origin, i.order_no, i.parent_name, i.parent_nip, i.parent_address_city, i.parent_address_postalcode, i.parent_address_street, i.parent_address_country, i.parent_address_country_code, i.currency, i.total_netto, i.total_brutto, i.total_vat, i.url, i.corrected_invoice_id, i.ecmstockdocout_id, i.ecmstockdoccorrect_id, i.ecmsale_id, i.series_id, wz.document_no AS wz_document_no, wz.id AS wz_id, p.id as product_id, p.code as product_code, p.name as product_name, ip.quantity, ip.price_netto, ip.price_brutto, ip.price_vat, ip.vat_value, ip.code as ecommerce_code FROM ecommerce_invoices AS i LEFT JOIN ecmstockdocouts AS wz ON wz.id = i.ecmstockdocout_id LEFT JOIN ecommerce_invoices_products AS ip ON i.id = ip.invoice_id LEFT JOIN ecmproducts AS p ON ip.ecmproduct_id = p.id WHERE i.register_date LIKE '$date'"; if ($source != '') { if ($source == 'baselinker') { $query .= " AND i.origin IN ('allegro', 'shop')"; } else if ($source == 'apilo') { $query .= " AND i.origin LIKE 'apilo%'"; } else { $query .= " AND i.origin = '" . $db->quote($source) . "'"; } } if ($type != '') { $query .= " AND i.type = '" . $db->quote($type) . "'"; } $query .= " ORDER BY i.register_date"; $result = $db->query($query); $invoices = array(); while ($row = $db->fetchByAssoc($result)) { if (!isset($invoices[$row['id']])) { $invoices[$row['id']] = array( 'id' => $row['id'], 'document_no' => $row['document_no'], 'type' => $row['type'], 'register_date' => date('d.m.Y', strtotime($row['register_date'])), 'sell_date' => date('d.m.Y', strtotime($row['sell_date'])), 'origin' => $row['origin'], 'order_no' => $row['order_no'], 'parent_name' => $row['parent_name'], 'parent_nip' => $row['parent_nip'], 'parent_address_city' => $row['parent_address_city'], 'parent_address_postalcode' => $row['parent_address_postalcode'], 'parent_address_street' => $row['parent_address_street'], 'parent_address_country' => $row['parent_address_country'], 'parent_address_country_code' => $row['parent_address_country_code'], 'currency' => $row['currency'], 'total_netto' => $row['total_netto'], 'total_brutto' => $row['total_brutto'], 'total_vat' => $row['total_vat'], 'url' => $row['url'], 'corrected_invoice_id' => $row['corrected_invoice_id'], 'ecmstockdocout_id' => $row['ecmstockdocout_id'], 'ecmstockdoccorrect_id' => $row['ecmstockdoccorrect_id'], 'ecmsale_id' => $row['ecmsale_id'], 'series_id' => $row['series_id'], 'wz_document_no' => $row['wz_document_no'], 'wz_id' => $row['wz_id'], 'products' => array(), 'sum_by_products' => 0 ); } if ($row['product_id']) { $invoices[$row['id']]['products'][] = array( 'id' => $row['product_id'], 'code' => $row['product_code'], 'name' => $row['product_name'], 'price_netto' => $row['price_netto'], 'price_brutto' => $row['price_brutto'], 'quantity' => $row['quantity'], 'ecommerce_code' => $row['ecommerce_code'], 'vat_value' => str_replace(".00", "", $row['vat_value']) ); $invoices[$row['id']]['sum_by_products'] += ($row['price_netto'] * $row['quantity']); } } return array_values($invoices); } function getInvoiceSumByProducts($invoiceId) { $db = $GLOBALS['db']; $query = sprintf("SELECT SUM(ip.price_netto * ip.quantity) as sum FROM ecommerce_invoices_products as ip WHERE ip.invoice_id='%s'", $invoiceId); $result = $db->query($query); $row = $db->fetchByAssoc($result); return $row['sum']; } function getInvoicProducts($invoiceId) { $db = $GLOBALS['db']; $query = sprintf("SELECT p.id, p.code, p.name, ip.price_netto, ip.price_brutto, ip.quantity, ip.code as ecommerce_code, ip.vat_value FROM ecommerce_invoices_products as ip INNER JOIN ecmproducts AS p ON ip.ecmproduct_id = p.id WHERE ip.invoice_id='%s'", $invoiceId); $result = $db->query($query); $products = array(); while ($row = $db->fetchByAssoc($result)) { $row['vat_value'] =str_replace(".00","",$row['vat_value']); $products[] = $row; } return $products; } function getDates() { $dates = array(); $date = new DateTime(); $dates[] = $date->format('Y-m'); while ($date->format('Y-m') != '2024-01') { $date->modify('-1 month'); $dates[] = $date->format('Y-m'); } return $dates; } function getSources() { $db = $GLOBALS['db']; $sources = array(); $res = $db->query("SELECT DISTINCT origin FROM ecommerce_invoices WHERE origin NOT IN ('allegro', 'shop')"); while ($row = $db->fetchByAssoc($res)) { $sources[]= $row['origin']; } $sources[] = 'apilo'; $sources[] = 'baselinker'; return $sources; } function exportToRewizor($source, $date, $type) { $smarty = new Sugar_Smarty(); $invoices = getInvoices($source, $date, $type); $accounts = array(); foreach ($invoices as &$i) { $i['register_date'] = date("Ymd000000",strtotime($i['register_date'])); $i['sell_date'] = date("Ymd000000",strtotime($i['sell_date'])); // create 20 characters length hash from parent_name $i['parent_hash'] = substr(md5($i['parent_name']), 0, 20); $i['parent_short_name'] = substr($i['parent_name'], 0, 40); if ($type == 'correcting') { $db = $GLOBALS['db']; $fv = $db->fetchByAssoc($db->query(sprintf("SELECT document_no, register_date FROM ecommerce_invoices WHERE id='%s'", $i['corrected_invoice_id']))); $i['corrected_document_no'] = $fv['document_no']; $i['corrected_register_date'] = date("Ymd000000",strtotime(date('d.m.Y', strtotime($fv['register_date'])))); } if ($source == 'amazon b2b') { $i['category'] = 'WDT'; $i['parent_country_code'] = substr($i['parent_nip'], 0, 2); $i['parent_name'] = $i['parent_name'] . ' ' . $i['parent_nip']; $i['parent_hash'] = $i['parent_nip']; //substr(md5($i['parent_name']), 0, 20); $i['parent_short_name'] = $i['parent_name']; //substr($i['parent_name'], 0, 40); } else { $i['parent_country_code'] = 'PL'; $i['parent_short_name'] = $i['parent_name']; if (isset($i['parent_nip']) && !empty($r['parent_nip'])) { $i['parent_name'] = $i['parent_name'] . ' ' . $i['parent_nip']; $i['parent_hash'] = $i['parent_nip']; } $i['category'] = "Sprzedaż"; } $i['products'] = getInvoicProducts($i['id']); $i['vats'] = array(); foreach ($i['products'] as $p) { if (!isset($i['vats'][$p['vat_value']])) { $i['vats'][$p['vat_value']] = array( 'netto' => 0, 'brutto' => 0, 'vat' => 0, ); $i['vats'][$p['vat_value']]['vat_value'] = $p['vat_value']; if ($source == 'amazon b2b') { $i['vats'][$p['vat_value']]['vat_name'] = 'ue'; } else { $i['vats'][$p['vat_value']]['vat_name'] = $p['vat_value']; } } $i['vats'][$p['vat_value']]['netto'] += $p['price_netto'] * $p['quantity']; $i['vats'][$p['vat_value']]['brutto'] += $p['price_brutto'] * $p['quantity']; $i['vats'][$p['vat_value']]['vat'] += ($p['price_brutto'] - $p['price_netto']) * $p['quantity']; } if (!isset($accounts['parent_hash'])) { $accounts[$i['parent_hash']] = array ( 'parent_hash' => $i['parent_hash'], 'parent_name' => $i['parent_name'], 'parent_address_city' => $i['parent_address_city'], 'parent_address_postalcode' => $i['parent_address_postalcode'], 'parent_address_street' => $i['parent_address_street'], 'parent_country_code' => $i['parent_country_code'], ); } } $smarty->assign("data", $invoices); $smarty->assign("accounts", $accounts); if ($type == 'normal') { $result = $smarty->fetch(getcwd() . '/modules/EcmInvoiceOuts/BimIT-eCommerceInvoices/rewizor.tpl'); } else { $result = $smarty->fetch(getcwd() . '/modules/EcmInvoiceOuts/BimIT-eCommerceInvoices/rewizor_fvkor.tpl'); } //echo $result; echo mb_convert_encoding($result, 'ISO-8859-2', 'UTF-8'); } function brecho($var) { echo '
';
    print_r($var);
    echo '
'; }