Добрый день !
Исходные данные :
Код:
Клиент: вер. 6.0 сборка 1369 от 26.01.2015 20:55:27
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_45
Сервер: вер. 6.0 сборка 1829 от 29.01.2015 18:21:52
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_45
bill вер. 6.0 сборка 344 от 09.09.2014 14:07:48
card вер. 6.0 сборка 229 от 19.11.2014 05:42:26
dialup вер. 6.0 сборка 406 от 12.09.2014 18:24:32
drweb вер. 6.0 сборка 98 от 10.04.2014 19:28:24
email вер. 6.0 сборка 187 от 05.02.2014 15:53:45
inet вер. 6.0 сборка 1482 от 29.01.2015 18:53:57
ipn вер. 6.0 сборка 277 от 19.08.2014 18:05:49
mps вер. 6.0 сборка 224 от 24.12.2014 13:50:40
npay вер. 6.0 сборка 229 от 14.11.2014 18:59:36
payonline вер. 6.0 сборка 101 от 30.12.2014 15:22:39
reports вер. 6.0 сборка 221 от 03.09.2014 16:39:20
ru.bitel.bgbilling.plugins.crm вер. 6.0 сборка 219 от 31.10.2014 05:37:29
ru.bitel.bgbilling.plugins.dispatch вер. 6.0 сборка 159 от 19.01.2015 17:42:18
ru.bitel.bgbilling.plugins.documents вер. 6.0 сборка 205 от 26.01.2015 20:55:42
ru.bitel.bgbilling.plugins.helpdesk вер. 6.0 сборка 210 от 27.11.2014 14:35:24
trayinfo вер. 6.0 сборка 176 от 05.02.2014 15:55:51
voiceip вер. 6.0 сборка 233 от 16.12.2014 13:31:04
wm вер. 6.0 сборка 191 от 05.02.2014 15:56:42
yamoney вер. 6.0 сборка 81 от 02.06.2014 14:51:09
Окружение:
Клиент:
os: Linux amd64, 3.13.0-45-generic
java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_45
jre home: /home/oleg/BGBillingClient/jdk1.6.0_45/jre
default tz: 20.02.2015 11:17 MSK +0300 (Europe/Moscow)
user tz: 20.02.2015 11:17 MSK +0300 (Europe/Moscow)
locale: ru_RU
Сервер:
os: Linux amd64, 3.2.0-4-amd64
java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_45
jre home: /opt/java/jdk1.6.0_45/jre
default tz: 20.02.2015 11:18 MSK +0300 (Europe/Moscow)
locale: ru_RU
Имеется договор с id 4062 которому в модуле бухгалтерии выставили счёт и пытаются этот счёт выгрузить в реестр.
В конфиге модуля bill реквизиты бухгалтерии такие:
Код:
bill.attributes=account:Счет;inn:ИНН;kpp:КПП;address:Адрес;dolz:Должность;face:Ф.И.О;osn:Основание;org_name:Полное название организации;pril:Приложение
Позиции такие :
Код:
bill.pos.1.title=Доступ в Интернет
bill.pos.1.name=Услуга доступа в Интернет согл. договора за {$month,date,MMMM yyyy г.}
bill.pos.1.summ=SERVICE_ACCOUNT($month, 30,13)
bill.pos.1.insum=1
bill.pos.1.awlz=0
bill.pos.3.title=Аренда IP-адреса
bill.pos.3.name=Аренда IP-адреса согл. договора за {$month,date,MMMM yyyy г.}
bill.pos.3.summ=SERVICE_ACCOUNT($month, 15)
bill.pos.3.insum=1
bill.pos.3.awlz=0
bill.pos.5.title=Обслуживание радиоканала
bill.pos.5.name=Обслуживание радиоканала согл. договора за {$month,date,MMMM yyyy г.}
bill.pos.5.summ=SERVICE_ACCOUNT($month, 31)
bill.pos.5.insum=1
bill.pos.5.awlz=0
В справочнике параметров договоров есть такие поля:
Код:
select id,title from contract_parameters_pref where id in (2,5,21,24)
2 Адрес подключения
5 Название организации
21 Телефон_текст
24 Приложение
У этого договора с id=4062 параметры договора такие :
Код:
select * from contract_parameter_type_1 where cid="4062"
4062 5 ООО Компания XxXxXx
4062 21 7916123456 ; 7499123456
4062 24 № 777 от 12.12.2012
и
Код:
select cid,pid,address from contract_parameter_type_2 where cid="4062"
4062 2 YyYyYyYyYyYy, YyYyyYyyYyy, южная часть, YyyYyy, д. 1, др. а, кв. 2, 2 эт.
а реквизиты для бухгалтерии такие :
Код:
select id,cid,name,value from bill_attribute_5 where cid="4062"
248 4062 org_name XxXxXx
249 4062 address YyYyYyYyYyYy YyYyyYyyYyy
250 4062 osn № 1234567 от 01.01.2001
251 4062 pril № 777 от 12.12.2012
252 4062 face Xyxxy Z.X.
клиенту выставляется счёт по документу :
Код:
elect * from bill_doc_type_5
1 1 Счет за интернет 1,3,5 14 1
select * from bill_contract_doc_type_5 where cid="4062"
173 4062 1
select * from bill_data_5 where cid="4062":
1945 4062 1 2 1049 1 105 0105 1 2015 1 2015-02-20 0 0 2.00 <?xml ....data> 0 1
Само поле xml из этой записи в несколько "урезанном" виде (тока основные поля):
Код:
<bill account="..." bik="..." bank_title="..." corr_account="..." saldo="239.98" saldo_prev="240.98" amounts="2.00" payments="1.00" charges="0.00" cid="4062" type="1" type_title="Счет за интернет"
contract="1100001" contract_date1="01.02.2007" contract_date2="" fc="0" balance_mode="1" yy="2015" mm="2" month="февраль" period_date1="01.02.2015" period_date2="28.02.2015" date="20.02.2015" bill_number="0105"
payer="Xyxxy Z.X. YyYyYyYyYyYy, YyYyyYyyYyy, южная часть, YyyYyy, д. 1, др. а, кв. 2, 2 эт." total_sum="2.00" npid="1" correction="0">
<pos position_id="1" name="Услуга доступа в Интернет согл. договора за февраль 2015 г." summ="2.00" sumUnscaled="2.00000" unit="шт." unitCode="796" quantity="1" qtynums="0" qtynumsRnd="4" insum="1" awlz="0"/>
<tariff_bill>
<personal_tariff id="137" tree_id="293" title="XyxxyZX" date1="01.01.2015" date2=""/>
</tariff_bill>
<contract_data cid="4062">
<contract cid="4062"
title="1100001" comment="Xyxxy Z.X. YyYyYyYyYyYy, YyYyyYyyYyy, южная часть, YyyYyy, д. 1, др. а, кв. 2, 2 эт." mode="1" limit="0.00" date1="01.02.2007" date2="" pswd="ksv1860" fc="0" time="20.02.2015 06:59"
gr="4503599627370496" param_group="1" status="0" status_date="17.03.2010" balance_rest="239.98"><personal_tariff id="137" title="XyxxyZX" date1="01.01.2015" date2=""/>
</contract>
<module id="5" title="Buhgalteriya" name="bill">
<bill_attribute_5 id="248" cid="4062" name="org_name" value="XxXxXx"/>
<bill_attribute_5 id="249" cid="4062" name="address" value="YyYyYyYyYyYy YyYyyYyyYyy"/>
<bill_attribute_5 id="250" cid="4062" name="osn" value="№ 1234567 от 01.01.2001"/>
<bill_attribute_5 id="251" cid="4062" name="pril" value="№ 777 от 12.12.2012"/>
<bill_attribute_5 id="252" cid="4062" name="face" value="Xyxxy Z.X."/>
<bill_contract_doc_type_5 id="173" cid="4062" doc_type="1"/>
</module>
..........
...........
...........
..........
</contract_data>
<condel pgid="1" del="0" fc="0" pfid="1"/>
<contract_params>
<parameter pid="1" pt="1" sort="1" title="ФИО" value="Xyxxy ZzZzZ XyYyYyYyY"/>
<parameter pid="21" pt="1" sort="18" title="Телефон_текст" value="7916123456 ; 7499123456 "/>
<parameter pid="22" pt="1" sort="19" title="Особые отметки" value="192.168.0.1"/>
<parameter pid="23" pt="1" sort="20" title="IP-адрес радиооборудования" value="порт 88"/>
<parameter pid="2" pt="2" title="Адрес подключения" sort="2" value=" YyYyYyYyYyYy, YyYyyYyyYyy, южная часть, YyyYyy, д. 1, др. а, кв. 2, 2 эт." comment=""/>
<parameter pid="3" pt="9" sort="6" title="Телефон" value="7916123456 [Личный]; 7499123456 [Домашний]; "/>
</contract_params>
<params nds="0"/>
<attributes address="YyYyYyYyYyYy YyYyyYyyYyy" face="Xyxxy Z.X." org_name="XxXxXx" osn="№ 1234567 от 01.01.2001" pril="№ 777 от 12.12.2012"/>
</bill></data>
Как видите, все параметры договора и реквизиты для бухгалтерии на месте.
Теперь попробуем выгрузить этот счёт в файл реестра счетов с именем p.csv помощью шаблона preempt_bill_reestr.xsl, имеющего следующий вид:
Код:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:xalan="http://xml.apache.org/xalan"
xmlns:st="bitel.billing.server.bill.bean.SummaToString"
xmlns:counter="bitel.billing.server.util.exslt.Counter"
xmlns:server_utils="ru.bitel.bgbilling.server.util.ServerUtils"
version="1.0">
<xalan:component prefix="st" functions="summaToString">
<xalan:script lang="javaclass" src="xalan://bitel.billing.server.bill.bean.SummaToString"/>
</xalan:component>
<xalan:component prefix="counter" functions="add set get">
<xalan:script lang="javaclass" src="xalan://bitel.billing.server.util.exslt.Counter"/>
</xalan:component>
<xalan:component prefix="server_utils" functions="replace">
<xalan:script lang="javaclass" src="xalan://ru.bitel.bgbilling.server.util.ServerUtils"/>
</xalan:component>
<xsl:output encoding="UTF-8" method='text' indent='yes' />
<xsl:template match="data">
<xsl:apply-templates select="bill" />
</xsl:template>
<xsl:variable name="fio" select="/data/bill/contract_params/parameter[@pid='5']/@value"/>
<xsl:variable name="address" select="/data/bill/contract_params/parameter[@pid='2']/@value"/>
<xsl:variable name="phone" select="/data/bill/contract_params/parameter[@pid='21']/@value"/>
<xsl:variable name="prill" select="/data/bill/contract_params/parameter[@pid='24']/@value"/>
<xsl:variable name="dolg" select="format-number(/data/bill/@saldo_prev, '0.00')"/>
<xsl:variable name="itogo" select="format-number(/data/bill/@total_sum,'0.00')"/>
<xsl:template match="bill">
<xsl:value-of select="$fio"/>;
<xsl:value-of select="$address"/>;
<xsl:value-of select="@bill_number"/>;
<xsl:value-of select="@type_title"/>;
<xsl:value-of select="@date"/>;
<xsl:value-of select="server_utils:replace($phone,';',',')"/>;
<xsl:value-of select="$prill"/>;
<xsl:value-of select="$dolg"/>;
<xsl:call-template name="positions"/> <xsl:value-of select="$itogo"/>;
</xsl:template>
<xsl:template name="positions">
<xsl:for-each select="pos"><xsl:value-of select="@name"/>;<xsl:value-of select="@summ"/>;</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
в результате в файле p.csv имеем :
Код:
; YyYyYyYyYyYy, YyYyyYyyYyy, южная часть, YyyYyy, д. 1, др. а, кв. 2, 2 эт.;0105;Счет за интернет;20.02.2015;7916123456 , 7499123456 ;;240.98;Услуга доступа в Интернет согл. договора за февраль 2015 г.;2.00;2.00;
т.е. поле №1 ( fio ) и поле № 7 (prill)
остались не заполненными хотя в этих полях должны были бы быть значения "ООО Компания XxXxXx" и "№ 777 от 12.12.2012" соответственно.
Вопрос - в каком месте я дурак или это так задуманно ?