Несколько услуг в одном счёте

Технические вопросы по UTM 5.0
Ответить
outlander
Сообщения: 2
Зарегистрирован: Пт авг 15, 2014 11:26

Несколько услуг в одном счёте

Сообщение outlander »

Здравствуйте. Подскажите пожалуйста как реализовать, чтобы при формировании счёта туда заносились все услуги которые есть у клиента? Поясню есть клиент у которого в услугах телефония и выделенный телефонный номер. При формировании счёта генерится две отдельные странички, где телефония и номер отдельно. Хочется видеть это в одном счёте, в одной табличке. Спасибо.

kirush
Сообщения: 699
Зарегистрирован: Пт фев 04, 2005 13:58

Сообщение kirush »

подымал тему об этом несколько раз - ответа нет :(

serjk
NetUP Team
Сообщения: 719
Зарегистрирован: Пн авг 14, 2006 08:56

Сообщение serjk »

Пока, к сожалению, не реализовали. Но код генерации документов в 5.3-003 переписан, и реализовать гибкое поведение в нем стало значительно проще, по возможности займемся этой проблемой, т.к. недовольных текущей жесткой логикой много.

serjk
NetUP Team
Сообщения: 719
Зарегистрирован: Пн авг 14, 2006 08:56

Сообщение serjk »

Завел тикет #2599

jackal
Сообщения: 2
Зарегистрирован: Чт апр 23, 2015 11:55

Сообщение jackal »

Добрый день.
Скажите, где можно прослеживать ход работ по тикету?

kara
Сообщения: 125
Зарегистрирован: Вс мар 21, 2010 21:02

Сообщение kara »

Есть некая инструкция по объединению счетов в рамках всех услуг на данном ЛС. Опробовано(на 5.2.1-009), работает.
Хотел сваять скрипт для автозапуска ночью первого числа, но руки не доходят, да и вручную оно надежнее.

АЛЯРМ: перед экспериментами не забываем бэкапить БД и\или таблицы которые затрагиваются работой данного механизма.

Код: Выделить всё

1)обрабатываем таблицу invoice entry(проставить диапазоны дат для тех счетов, которые мы будем печатать(первое число месяца))
UPDATE invoice_entry ie LEFT JOIN (
SELECT a.id AS aid , 
  i.id AS iid , 
  i.invoice_date AS idate 
  from invoices i left join (
SELECT
min(i.id) as id,
i.ext_num,
min(i.invoice_date) as invoice_date,
i.payment_transaction_id,
i.expire_date,
i.is_payed,
i.is_printed,
i.is_mailed,
i.uid,
i.account_id,
sum(i.arrearage) as arrearage,
max(i.period_start) as period_start,
max(i.period_end) as period_end,
i.balance_on_set,
i.version,
i.ic_status,
i.ic_id,
i.last_sync_date
from invoices i
where i.invoice_date > UNIX_TIMESTAMP('2015-05-01 00:00:00')
and i.invoice_date < UNIX_TIMESTAMP&#40;'2015-05-01 00&#58;59&#58;00'&#41;
group by
i.ext_num,
i.payment_transaction_id,
i.expire_date,
i.is_payed,
i.is_printed,
i.is_mailed,
i.uid,
i.account_id,
i.balance_on_set,
i.version,
i.ic_status,
i.ic_id,
i.last_sync_date
&#41; a on a.uid = i.uid 
  and a.account_id = i.account_id
&#41; r ON r.iid = ie.invoice_id SET ie.invoice_id = r.aid WHERE
r.idate > UNIX_TIMESTAMP&#40;'2015-05-01 00&#58;00&#58;00'&#41;
and r.idate < UNIX_TIMESTAMP&#40;'2015-05-01 00&#58;59&#58;00'&#41;;

2&#41;удаляем пустые счета из таблицы invoices
delete from invoices where id not in &#40;select invoice_id from invoice_entry&#41;;

3&#41;делаем временную табличку для табличных частей счетов, копируем в нее нужные нам строчки счетов
Указываем айди текущего основного расчетного периода,и айди 0 для разовых счетов.
CREATE TEMPORARY TABLE invoice_entry_temp
select
min&#40;e.id&#41; as id,
e.name,
e.invoice_id,
e.slink_id,
e.service_type,
e.discount_period_id,
sum&#40;e.qnt&#41; as qnt,
e.base_cost,
sum&#40;e.sum_cost&#41; as sum_cost,
e.tax_amount,
e.version,
count&#40;e.id&#41;,
d.type,
d.value
from invoice_entry e
left join invoice_entry_details d on d.entry_id=e.id
group by invoice_id, name, service_type, slink_id, discount_period_id, d.type, d.value, base_cost, e.tax_amount, e.version
HAVING   e.discount_period_id IN &#40;0,23&#41;;

4&#41;чистим оригинальную таблицу invoice_entry от табличных частей за данный р\период
Указываем айди текущего основного расчетного периода,и айди 0 для разовых счетов.
delete from invoice_entry where discount_period_id IN &#40;0,23&#41;;
delete from invoice_entry_details where entry_id not in &#40;select id from invoice_entry&#41;;

5&#41;вносим в оригинальную таблицу invoice_entry табличные части из временной таблички
insert into invoice_entry
select
e.id,
e.name,
e.invoice_id,
e.slink_id,
e.service_type,
e.discount_period_id,
e.qnt,
e.base_cost,
e.sum_cost,
e.tax_amount,
e.version
from invoice_entry_temp e;

jackal
Сообщения: 2
Зарегистрирован: Чт апр 23, 2015 11:55

Сообщение jackal »

это надо делать каждый месяц?

Ответить