* * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. */ // Load Dolibarr environment $res = 0; if (!$res && file_exists("../main.inc.php")) $res = @include "../main.inc.php"; if (!$res && file_exists("../../main.inc.php")) $res = @include "../../main.inc.php"; if (!$res && file_exists("../../../main.inc.php")) $res = @include "../../../main.inc.php"; if (!$res && file_exists("../../../../main.inc.php")) $res = @include "../../../../main.inc.php"; if (!$res) die("Include of main fails"); require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions.lib.php'; $langs->loadLangs(array('orders', 'sendings', 'companies', 'suppliers')); // Parameter $origin = GETPOST('origin', 'alpha'); $originid = GETPOST('originid', 'int'); $action = GETPOST('action', 'alpha'); // Berechtigungen prüfen if (empty($user->rights->fournisseur->commande->creer)) { accessforbidden(); } // Kundenauftrag laden $objectsrc = new Commande($db); $objectsrc->fetch($originid); $objectsrc->fetch_lines(); // Kunde laden für Lieferantenreferenz $customer = new Societe($db); $customer->fetch($objectsrc->socid); // Lieferantenreferenz Format: "Kundenname - Auftragsnummer / Kundenzeichen" $supplier_ref_default = $customer->name.' - '.$objectsrc->ref; if (!empty($objectsrc->ref_client)) { $supplier_ref_default .= ' / '.$objectsrc->ref_client; } /* * Actions */ if ($action == 'create_supplier_orders') { $toselect = GETPOST('toselect', 'array'); $supplier_id = GETPOST('supplier_id', 'int'); $ref_supplier = GETPOST('ref_supplier', 'alpha'); if (empty($toselect)) { setEventMessages('Bitte wählen Sie mindestens eine Zeile aus.', null, 'errors'); } elseif (empty($supplier_id)) { setEventMessages('Bitte wählen Sie einen Lieferanten aus.', null, 'errors'); } else { // Lieferantenbestellung erstellen $supplierorder = new CommandeFournisseur($db); $supplierorder->socid = $supplier_id; $supplierorder->ref_supplier = !empty($ref_supplier) ? $ref_supplier : $supplier_ref_default; $supplierorder->cond_reglement_id = 0; $supplierorder->mode_reglement_id = 0; $supplierorder->origin = 'commande'; $supplierorder->origin_id = $originid; $db->begin(); $result = $supplierorder->create($user); if ($result > 0) { // Zeilen hinzufügen $errors = 0; foreach ($toselect as $lineid) { // Zeile aus Kundenauftrag finden $srcline = null; foreach ($objectsrc->lines as $line) { if ($line->id == $lineid) { $srcline = $line; break; } } if ($srcline && !empty($srcline->fk_product)) { // Günstigsten Lieferantenpreis für diesen Lieferanten finden $sql = "SELECT pfp.rowid, pfp.ref_fourn, pfp.price, pfp.quantity as min_qty FROM ".MAIN_DB_PREFIX."product_fournisseur_price pfp WHERE pfp.fk_product = ".(int)$srcline->fk_product." AND pfp.fk_soc = ".(int)$supplier_id." ORDER BY pfp.price ASC LIMIT 1"; $resql = $db->query($sql); $fournprice = 0; $fournref = ''; $fournpricerowid = 0; if ($resql && $db->num_rows($resql) > 0) { $objprice = $db->fetch_object($resql); $fournprice = $objprice->price; $fournref = $objprice->ref_fourn; $fournpricerowid = $objprice->rowid; } // Zeile zur Lieferantenbestellung hinzufügen $result_line = $supplierorder->addline( $srcline->desc, // Description $fournprice, // Unit price $srcline->qty, // Quantity $srcline->tva_tx, // VAT rate $srcline->localtax1_tx, // Local tax 1 $srcline->localtax2_tx, // Local tax 2 $srcline->fk_product, // Product ID $fournpricerowid, // Supplier price ID $fournref, // Supplier ref $srcline->remise_percent, // Discount 'HT', // Price base type 0, // pu_ht_devise 0, // type 0, // info_bits false, // notrigger null, // date_start null, // date_end 0, // array_options '', // fk_unit 0, // origin 0, // origin_id 1 // rang ); if ($result_line < 0) { $errors++; } } } if ($errors == 0) { $db->commit(); setEventMessages('Lieferantenbestellung '.$supplierorder->ref.' wurde erstellt.', null, 'mesgs'); header('Location: '.DOL_URL_ROOT.'/fourn/commande/card.php?id='.$supplierorder->id); exit; } else { $db->rollback(); setEventMessages('Fehler beim Hinzufügen der Zeilen.', null, 'errors'); } } else { $db->rollback(); setEventMessages('Fehler beim Erstellen der Lieferantenbestellung: '.$supplierorder->error, null, 'errors'); } } } /* * View */ $title = 'Lieferantenbestellung aus Kundenauftrag erstellen'; llxHeader('', $title); print load_fiche_titre($title, '', 'order'); // Formular für Auswahl print '
'; // JavaScript für "Alle auswählen" print ''; // Badge-Styles print ''; llxFooter(); $db->close();