id = $id; $this->wz = new EcmStockDocOut(); $this->wz->retrieve($this->id); $this->sale = new EcmSale(); $this->sale->retrieve($this->wz->so_id); } public function getXML () { $this->xml = $this->createDeliveryNoteXML(); $this->xml->flush(); } private function createDeliveryNoteXML () { global $timedate; $wz = $this->wz; $sale = $this->sale; $xml = new XMLWriter(); $name = str_replace('/', '_', $wz->document_no); $name = str_replace(' ', '', $name); $name = str_replace('DN', '', $name); $xml->openURI($this->ediDeliveryNotesPath . $name . '.xml'); $xml->startDocument('1.0', 'UTF-8'); $xml->startElement('Document-DespatchAdvice'); $xml->startElement('DespatchAdvice-Header'); $xml->writeElement('DespatchAdviceNumber', $wz->document_no); // numer delivery note $xml->writeElement('DespatchAdviceDate', $timedate->to_db_date($wz->register_date)); // create element DeliveryDate with register_date plus one day $date = new DateTime($wz->register_date); $date->add(new DateInterval('P1D')); if ($date->format('N') == 6) { // sobota/niedziela => poniedziaĆek $date->add(new DateInterval('P2D')); } elseif ($date->format('N') == 7) { $date->add(new DateInterval('P1D')); } $xml->writeElement('ExpectedDeliveryDate', $date->format('Y-m-d')); // spodziewana data dostawy $xml->writeElement('ExpectedDeliveryTime', '10:00'); // spodziewana godzina dostawy $xml->writeElement('EstimatedDeliveryDate', $date->format('Y-m-d')); // spodziewana data dostawy $xml->writeElement('EstimatedDeliveryTime', '10:00'); // spodziewana godzina dostawy $xml->writeElement('EstimatedDeliveryDate', $date->format('Y-m-d')); // spodziewana data dostawy $xml->writeElement('EstimatedDeliveryTime', '08:00'); // spodziewana godzina dostawy $xml->writeElement('EarliestDeliveryDate', $date->format('Y-m-d')); $xml->writeElement('EarliestDeliveryTime', '08:00'); $date->add(new DateInterval('P3D')); if ($date->format('N') == 6) { // sobota/niedziela => poniedziaĆek $date->add(new DateInterval('P2D')); } elseif ($date->format('N') == 7) { $date->add(new DateInterval('P1D')); } $xml->writeElement('LatestDeliveryDate', $date->format('Y-m-d')); $xml->writeElement('LatestDeliveryTime', '16:00'); $xml->writeElement('BuyerOrderNumber', $sale->parent_document_no); $xml->writeElement('SupplierOrderNumber', $sale->document_no); $xml->writeElement('BuyerOrderDate', $timedate->to_db_date($sale->register_date)); $xml->writeElement('SupplierOrderDate', $timedate->to_db_date($sale->register_date)); $xml->writeElement('DespatchNumber', $wz->document_no); $xml->writeElement('DespatchDate', $timedate->to_db_date($wz->register_date)); $xml->writeElement('ShipmentDate', $timedate->to_db_date($wz->register_date)); $xml->writeElement('MessageType', 'DA'); $xml->writeElement('DocumentFunctionCode', 'O'); $xml->endElement(); // DespatchAdvice-Header $xml->startElement('DespatchAdvice-Parties'); $xml->startElement('Buyer'); $a = new Account(); $a->retrieve($sale->parent_id); if (! $sale->parent_iln || $sale->parent_iln == '') $sale->parent_iln = $a->iln; $xml->writeElement('ILN', $sale->parent_iln); $xml->writeElement('TaxID', $sale->parent_nip); $xml->writeElement('Name', $sale->parent_name); $xml->writeElement('StreetAndNumber', $sale->parent_address_street); $xml->writeElement('CityName', $sale->parent_address_city); $xml->writeElement('PostalCode', $sale->parent_address_postalcode); $xml->writeElement('Country', 'PL'); $xml->endElement(); // Buyer $xml->startElement('Seller'); $xml->writeElement('ILN', '5909000837119'); $xml->writeElement('TaxID', '8792676609'); $xml->writeElement('Name', 'Twinpol Sp. z o.o.'); $xml->writeElement('StreetAndNumber', 'Al. Lipowa 48'); $xml->writeElement('CityName', 'Obrowo'); $xml->writeElement('PostalCode', '87-126'); $xml->writeElement('Country', 'PL'); $xml->endElement(); // Seller $xml->startElement('DeliveryPoint'); $xml->writeElement('ILN', $sale->shipping_iln); $xml->writeElement('Name', $sale->shipping_address_name); $xml->writeElement('StreetAndNumber', $sale->shipping_address_street); $xml->writeElement('CityName', $sale->shipping_address_city); $xml->writeElement('PostalCode', $sale->shipping_address_postalcode); $xml->writeElement('Country', 'PL'); $xml->endElement(); // DeliveryPoint $xml->startElement('SellerHeadquarters'); $xml->writeElement('ILN', '5909000837119'); $xml->writeElement('TaxID', '8792676609'); $xml->writeElement('Name', 'Twinpol Sp. z o.o.'); $xml->writeElement('StreetAndNumber', 'Al. Lipowa 48'); $xml->writeElement('CityName', 'Obrowo'); $xml->writeElement('PostalCode', '87-126'); $xml->writeElement('Country', 'PL'); $xml->endElement(); // SellerHeadquarters $xml->startElement('ShipFrom'); $xml->writeElement('ILN', '5909000837119'); $xml->writeElement('TaxID', '8792676609'); $xml->writeElement('Name', 'Twinpol Sp. z o.o.'); $xml->writeElement('StreetAndNumber', 'Al. Lipowa 48'); $xml->writeElement('CityName', 'Obrowo'); $xml->writeElement('PostalCode', '87-126'); $xml->writeElement('Country', 'PL'); $xml->endElement(); // ShipFrom $xml->endElement(); // DespatchAdvice-Parties $xml->startElement('DespatchAdvice-Consignment'); $xml->startElement('Packing-Sequence'); $xml->startElement('Packing-Reference'); $xml->writeElement('PackageId', '1'); $xml->endElement(); // Packing-Reference $xml->startElement('Line'); $pl = $wz->getPositionList(true); $db = $GLOBALS['db']; foreach ($pl as $p) { $ean = $db->fetchByAssoc($db->query("SELECT ean as ean FROM ecmproducts WHERE id = '" . $p['product_id'] . "'")); if (strlen($p['name']) > 70){ mb_internal_encoding("UTF-8"); $p['name'] = mb_substr($p['name'], 0, 67, "utf-8") . '...'; } $xml->startElement('Line-Item'); $xml->writeElement('LineNumber', $p['position']+1); $xml->writeElement('EAN', $ean['ean']); $xml->writeElement('BuyerItemCode', $p['recipient_code']); $xml->writeElement('SupplierItemCode', $p['product_code']); $xml->writeElement('ItemDescription', $p['name']); $xml->writeElement('QuantityDespatched', $p['quantity']); $xml->endElement(); // Line } $xml->endElement(); // Lines $xml->endElement(); // Packing-Sequence $xml->endElement(); // DespatchAdvice-Consignment $xml->endElement(); // Document-DespatchAdvice return $xml; } } function brecho() { echo '
';
foreach (func_get_args() as $arg) {
print_r($arg);
echo "
";
}
echo '';
}