Corwin писал(а):
Хочется увидеть, какие данные необходимо заполнить при создании договора, используя исключительно SQL, и какие указать связи с различными таблицами, чтобы договор был "дееспособным" для дальнейших действий по управлению и использованию его. И возможно ли при этом как-то использовать шаблоны договоров?
в своем скрипте переноса юзеров я использовал следующие запросы:
Код:
-- получение данных из шаблона
SELECT id, closesumma, groups, mode, pgid, pfid, fc, tgid, scrid FROM contract_pattern WHERE (groups & (1 << ?)) > 0
-- получение списка услуг по шаблону
SELECT sid FROM contract_pattern_services WHERE pid = ? ORDER BY sid
-- создание договора
INSERT INTO contract (gr, title, pswd, date1, closesumma, mode, pgid, pfid, fc) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
-- добавление услуг договору
INSERT INTO contract_service (cid, sid, date1) VALUES (?, ?, ?)
-- установка тарифа договора
INSERT INTO contract_tariff (cid, tpid, date1) VALUES (?, ?, ?)
-- привязка группы тарифов к договору
INSERT INTO contract_tariff_group (cid, date1, gid) VALUES (?, ?, ?)
-- привязка скрипта поведения к договору
INSERT INTO contract_script (cid, date1, script_id) VALUES (?, ?, ?)
-- установка баланса для договора
-- (ставится summa1, т.к. она получается из депозита пред. биллинга)
INSERT INTO contract_balance (yy, mm, cid, summa1, summa2, summa3, summa4) SELECT YEAR(?), MONTH(?), ?, ?, 0, 0, 0
-- создание логина для договора
INSERT INTO user_login_1 (cid, login, pswd, date1, session) SELECT ?, IF(MAX(login) IS NULL, 0, MAX(login) + 1), ?, ?, ? FROM user_login_1
-- создание алиаса для договора
INSERT INTO user_alias_1 SELECT ul.id, c.title FROM contract AS c LEFT JOIN user_login_1 AS ul ON (ul.cid = c.id) WHERE c.id = ?
все перенеслось без проблем

при этом половина данных для заполнения была взята именно из шаблонов ...