Сделал таблицу "КП" и подтаблицу "позиции КП". Все делал аналогично "счет" и "позиции счета" но не копировал!
Сейчас нужно добавить "доп. действие" кнопку Выставить счет - аналогично кнопке "счет-фактура" в "счете" .
СТАНДАРТНАЯ КОНФИГУРАЦИЯ
Для этого переделал доп.действие из "счета"
Вот что получилось
[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 = поле связи КП в таблице счета, также как и в с.ф поле "по счету"
Заранее спасибо за ответы.












