diff --git a/htdocs/variants/combinations.php b/htdocs/variants/combinations.php index b0d5ebadda8..f690ec8e3f6 100644 --- a/htdocs/variants/combinations.php +++ b/htdocs/variants/combinations.php @@ -772,11 +772,6 @@ if (!empty($id) || !empty($ref)) print ''.$langs->trans('PropagateVariant').''; } - // Too much bugged page. - /* - print ''.$langs->trans('ProductCombinationGenerator').''; - */ - print ' '; print ''; diff --git a/htdocs/variants/generator.php b/htdocs/variants/generator.php deleted file mode 100644 index 9c41335c867..00000000000 --- a/htdocs/variants/generator.php +++ /dev/null @@ -1,385 +0,0 @@ - - * Copyright (C) 2018 Frédéric France - * - * 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. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php'; -require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; -require_once DOL_DOCUMENT_ROOT.'/variants/class/ProductAttribute.class.php'; -require_once DOL_DOCUMENT_ROOT.'/variants/class/ProductAttributeValue.class.php'; -require_once DOL_DOCUMENT_ROOT.'/variants/class/ProductCombination.class.php'; -require_once DOL_DOCUMENT_ROOT.'/variants/class/ProductCombination2ValuePair.class.php'; - -$langs->loadLangs(array("products", "other")); - -$id = GETPOST('id', 'int'); -$ref = GETPOST('ref'); -$form = new Form($db); - -// Security check -$fieldvalue = (!empty($id) ? $id : $ref); -$fieldtype = (!empty($ref) ? 'ref' : 'rowid'); -$result = restrictedArea($user, 'produit|service', $fieldvalue, 'product&product', '', '', $fieldtype); - -$prodattr = new ProductAttribute($db); -$prodattrval = new ProductAttributeValue($db); -$product = new Product($db); - -$product->fetch($id); - -$error = 0; - - -/* - * Actions - */ - -if (!$product->isProduct()) { - header('Location: '.dol_buildpath('/product/card.php?id='.$product->id, 2)); - exit(); -} - -/** - * Posible combinations. Format. - * attrval => array( - * valueid => array( - * price => '' - * weight => '' - * ) - * ) - */ -$combinations = GETPOST('combinations', 'array'); -$price_var_percent = (bool) GETPOST('price_var_percent'); -$donotremove = true; - -if ($_POST) -{ - $donotremove = (bool) GETPOST('donotremove'); - - //We must check if all those given combinations actually exist - $sanitized_values = array(); - - foreach ($combinations as $attr => $val) { - if ($prodattr->fetch($attr) > 0) { - foreach ($val as $valueid => $content) { - if ($prodattrval->fetch($valueid) > 0) { - $sanitized_values[$attr][$valueid] = $content; - } - } - } - } - - if ($sanitized_values) { - require DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; - - $adapted_values = array(); - - //Adapt the array to the cartesian function - foreach ($sanitized_values as $attr => $val) { - $adapted_values[$attr] = array_keys($val); - } - - $db->begin(); - - $combination = new ProductCombination($db); - - $delete_prev_comb_res = 1; - - if (!$donotremove) { - $delete_prev_comb_res = $combination->deleteByFkProductParent($user, $id); - } - - //Current combinations will be deleted - if ($delete_prev_comb_res > 0) { - $res = 1; - - $cartesianarray = cartesianArray($adapted_values); - foreach ($cartesianarray as $currcomb) - { - $res = $combination->createProductCombination($user, $product, $currcomb, $sanitized_values, $price_var_percent); - if ($res < 0) { - $error++; - setEventMessages($combination->error, $combination->errors, 'errors'); - break; - } - } - - if ($res > 0) { - $db->commit(); - setEventMessages($langs->trans('RecordSaved'), null, 'mesgs'); - header('Location: '.dol_buildpath('/variants/combinations.php?id='.$id, 2)); - exit; - } - } else { - setEventMessages($langs->trans('ErrorDeletingGeneratedProducts'), null, 'errors'); - } - - $db->rollback(); - } else { - setEventMessages($langs->trans('ErrorFieldsRequired'), null, 'errors'); - } -} - - - -/* - * View - */ - -if (!empty($id) || !empty($ref)) { - $object = new Product($db); - $result = $object->fetch($id, $ref); - - llxHeader("", "", $langs->trans("CardProduct".$object->type)); - - if ($result > 0) - { - $showbarcode = empty($conf->barcode->enabled) ? 0 : 1; - if (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->barcode->lire_advance)) $showbarcode = 0; - - $head = product_prepare_head($object); - $titre = $langs->trans("CardProduct".$object->type); - $picto = ($object->type == Product::TYPE_SERVICE ? 'service' : 'product'); - print dol_get_fiche_head($head, 'combinations', $titre, 0, $picto); - - $linkback = ''.$langs->trans("BackToList").''; - $object->next_prev_filter = " fk_product_type = ".$object->type; - - dol_banner_tab($object, 'ref', $linkback, ($user->socid ? 0 : 1), 'ref', '', '', '', 0, '', '', 1); - - print dol_get_fiche_end(); - } - - print load_fiche_titre($langs->trans('ProductCombinationGenerator')); - - $dictionary_attr = array(); - - foreach ($prodattr->fetchAll() as $attr) { - $dictionary_attr[$attr->id] = $attr; - foreach ($prodattrval->fetchAllByProductAttribute($attr->id) as $attrval) { - $dictionary_attr[$attr->id]->values[$attrval->id] = $attrval; - } - } - ?> - - - -
- -
- -
- -

trans('TooMuchCombinationsWarning', $langs->transnoentitiesnoconv('DoNotRemovePreviousCombinations')) ?>

- > -
- > - -
-
- - trans('ProductCombinationGeneratorWarning') ?> -
-
- -
- -
- -
- -
-
- - - -

- - - -
- -
- - - close();