Сделал таблицу "КП" и подтаблицу "позиции КП". Все делал аналогично "счет" и "позиции счета" но не копировал!
Сейчас нужно добавить "доп. действие" кнопку Выставить счет - аналогично кнопке "счет-фактура" в "счете" .
СТАНДАРТНАЯ КОНФИГУРАЦИЯ
Для этого переделал доп.действие из "счета"
Вот что получилось
[i]global $base64_current_url;[/i] [i]$insertTableID = 43; // Номер таблицы счета $positionTableId = 290; // Номер таблицы позиций кп $newPositionTableId = 74; // Номер таблицы позиций счета[/i] [i]// выбираем из счет записи, которые ссылаются на данное КП $result = data_select($insertTableID, "status='0' AND f4230=", $ID); $row = sql_fetch_assoc($result); // если по данному КП есть запись счета, то выводим предупреждение и переходим в запись if ($row) { echo "<script> if (confirm('Счет по данному КП уже сформирована. Перейти в счет?')) location.href='",$config["site_root"],"/view_line.php?table=",$insertTableID,"&line=",$row['id'],"&back_url=",$base64_current_url,"' </script>"; } // если записи не нашлись, то формируем счет else { // объявляем массив, в который записываем по названию полей счета, значения полей из КП $newLine = array(); $newLine['f4230'] = $line['ID']; $newLine['f839'] = $line['На кого']['raw']; $newLine['f654'] = $line['Наша компания']['raw'];[/i] [i] // последний номер счета $result = data_select_field($insertTableID, "MAX(f437) as max","status=0"); $row = sql_fetch_assoc($result); $newLine['437'] = ++$row['max'];[/i] [i] // вставляем массив с данными в таблицу счета, создается запись и функция возвращает id новой записи счета $inserted_id = data_insert($insertTableID, EVENTS_ENABLE, $newLine); $line['Расход']['№ с/ф'] = $inserted_id;[/i] [i] if ($inserted_id) { // выбираем все позиции КП $positions = data_select($positionTableId, "status=0 AND f4110=", $ID); // если есть позиции, то проходим по всем позициям while ($position = sql_fetch_assoc($positions)) { // на каждой позиции объявляем массив и заносим в номера полей позиции счета, значения из позиции КП $newPosition = array(); $newPosition['f807'] = $inserted_id; $newPosition['f2331'] = $position['f4120']; $newPosition['f1440'] = $position['f4130']; $newPosition['f809'] = $position['f4140']; $newPosition['f810'] = $position['f4200']/$position['f4160']; $newPosition['f811'] = $position['f4160']; // вставляем в позиции счета получившийся массив data_insert($newPositionTableId, EVENTS_ENABLE, $newPosition); } // в конце переходим по ссылке в новую запись счета echo "<script> location.href='",$config["site_root"],"/view_line.php?table=",$insertTableID,"&line=",$inserted_id,"&back_url=",$base64_current_url,"' </script>"; } }[/i]
При нажатии кнопки "Выставить счет" выдает ошибку:
Ошибка в вычислении.
Подробно
КП.Button 190 :
31: // вставляем массив с данными в таблицу счета, создается запись и функция возвращает id новой записи счета
32: $inserted_id = data_insert($insertTableID, EVENTS_ENABLE, $newLine);
33: $line['Расход']['№ с/ф'] = $inserted_id;
Ошибка SQL запроса:
INSERT INTO f_data43 (f4230, f839, f654, 437, user_id, add_time, f437, f436, f448, f2071, f889, f454, f455, f456, f2061, r) VALUES ('11', '1', '1', '9', '1', '2015-01-04 23:09:51', '9', '2015-01-04 00:00:00', '1', '0.00', '0.00', '0.00', '0', '0.00', '0', '1')
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '437, user_id, add_time, f437, f436, f448, f2071, f889, f454, f455, f456, f2061, ' at line 1
Я знаю что строка 33 неправильная, расхода из КП в счет нет, но не знаю как исправить.
Поле F4230 = поле связи КП в таблице счета, также как и в с.ф поле "по счету"
Заранее спасибо за ответы.