31 (изменено: Денис, 11-04-2020 10:05:37)

Re: СКЛАД

Есть идея в счетах и накладных использовать NumberFormatter или MessageFormatter для указания прописью "итого Х наименований на сумму Y". К примеру, в invoice.php взять максимальное значение no из массива $detail и total из $header и воткнуть в invoice.tpl

32

Re: СКЛАД

ну предполагалось  что  если  вы  сегодня  проаодите  докеумент то и отправку  вы  делаете  сегодня.
если  дата отпраки будет  совпаать с  датой  документа  то  еее и смысла  нет
ну или надо  тогда  поле  добавлять  чтобы  указывать

33

Re: СКЛАД

там ща  локализация  оно и так  отформатирует
Сумма  там  уже  есть
нумерация  строк  тоже по карайней мере  в  счете

проверю  везде нумерацию  строк

34 (изменено: Денис, 11-04-2020 12:46:57)

Re: СКЛАД

support пишет:

ну предполагалось  что  если  вы  сегодня  проаодите  докеумент то и отправку  вы  делаете  сегодня.
если  дата отпраки будет  совпаать с  датой  документа  то  еее и смысла  нет
ну или надо  тогда  поле  добавлять  чтобы  указывать

Товар может быть продан и оплачен сегодня и накладная создана тоже сегодня. А курьер отвёз на отправку только завтра. Или даже так: товары собираются и всего два раза в неделю отвозятся в транспортную компанию. Или наоборот, товары отправлены курьерами,  а даты отправки вносятся на следующий /через день.

Поле B уже есть, но ведёт оно себя некорректно с точки зрения пользователя: дату отправки указал (например вчерашнюю), она сохранилась в документе, а  после проведения оказывается что сброшена на сегодняшнюю. При этом дата накладной А  сохраняется и проводится та, что указана.

Короче, смысл в том, что есть три поля с датами, и это могут быть три абсолютно разные даты. Поле отправки не сохраняет введенные данные.

http://i.imgur.com/PvIsRMc.jpeg

35

Re: СКЛАД

убрал  сбрасывание, надеюсь  было в  одном  месте

36 (изменено: Денис, 11-04-2020 13:22:49)

Re: СКЛАД

support пишет:

убрал  сбрасывание, надеюсь  было в  одном  месте

гран мерси!

support пишет:

там ща  локализация  оно и так  отформатирует
Сумма  там  уже  есть
нумерация  строк  тоже по карайней мере  в  счете

проверю  везде нумерацию  строк

Я имею в виду засунуть в *.tpl:

"Всего {{itm_qty}} наименований на сумму {{total}} ₴"

чтобы читалось как "Всего 7 наименований на сумму 12 345 ₴"

Я пытаюсь для этого в invoice.php использовать MessageFormatter: 

(new \MessageFormatter('ru-UA', '{n, spellout}'))->format(['n' => 123435 ]);

Так вот когда в 'n' засовываешь вместо 12345 под каким-нибудь соусом total из массива $header – функция ничего не отдаёт. Скорее всего я это делаю не в том месте и/или не так.

Та же история со значением no из $detail – не получается нормально достать её максимальное значение чтобы затем подставить в {{itm_qty}}

37

Re: СКЛАД

зачем такие  сложности  если  переменные   можно  просто засунуть  в  строку
даже  не  знал  что существует како  то  MessageFormatter

если  хотите  в  темплейт  то надо  в  массив  hesader  передать соответстующую переменную
ну или готовую строку


вам надо не  максимальное  значение  а  количество  строк
добавте  в массив  header
"itm_qty"=> count($detail)

а  в  темплейт
Всего {{itm_qty}} наименований на сумму {{total}}

но  количество  строк  и сумма  там и так  уже  есть непонятно  зачем эта  строка  вообще

38 (изменено: Денис, 11-04-2020 15:24:47)

Re: СКЛАД

support пишет:

зачем такие  сложности  если  переменные   можно  просто засунуть  в  строку
даже  не  знал  что существует како  то  MessageFormatter

если  хотите  в  темплейт  то надо  в  массив  hesader  передать соответстующую переменную
ну или готовую строку


вам надо не  максимальное  значение  а  количество  строк
добавте  в массив  header
"itm_qty"=> count($detail)

а  в  темплейт
Всего {{itm_qty}} наименований на сумму {{total}}

но  количество  строк  и сумма  там и так  уже  есть непонятно  зачем эта  строка  вообще

Прошу прощения, это я не так описал задачу smile

смысл в строке прописью чтобы читалось как:

"Всего семь наименований на сумму двенадцать тысяч триста сорок пять ₴"

Для этого используется MessageFormatter или NumberFormatter. до PHP7 приходилось городить целый скрипт а потом добавили класс ICU и все стало проще.

39

Re: СКЛАД

у  меня  такое  было  в  бухгалтерской версии
но тут типа  не  бухгалтерия  не  так  сстрого  потому  убрал

только  сумма  прописью , наименования не  очень понятно зачем
функция до  сих  пор  есть в  util.php

ok

  можно  добавить

  кинте  пример  для  русского и украинского чтобы  я  не  разбирался  с этим  форматтером.

добавлю  с  счет  фактуру  и расходную накладную

40 (изменено: Денис, 11-04-2020 17:21:14)

Re: СКЛАД

$total_str = (new \MessageFormatter('ru', '{n, spellout}'))->format(['n' => 1234567]);
$total_str = (new \MessageFormatter('uk', '{n, spellout}'))->format(['n' => 1234567]);

n берёт значение из total
NumberFormatter работает также в принципе

Правда, учитывая что у нас род валюты женский, суммы оканчивающиеся на 1 (одна), 2 (две) гривны, будут писаться как "... один гривна", "... два гривна". Но это при необходимости можно вычистить парсером, наверное.

41

Re: СКЛАД

так  и с наименованиями  нестыковка.  Но наименования  модно  не писать - там  по номерам  строк  видно  сколько
достаточно  суммы  прописью как в  одноце

42

Re: СКЛАД

а  еще  на  русском  может  быть гривна  а  может  быть  рубль

43

Re: СКЛАД

кароче добавил  в  счет  фактуру  и  расходную

44

Re: СКЛАД

support пишет:

а  еще  на  русском  может  быть гривна  а  может  быть  рубль

для этого просто указываем нужную локаль 'ru-UA' или 'ru-RU':

$symbol = (new NumberFormatter( 'ru-UA', NumberFormatter::CURRENCY))->getSymbol(NumberFormatter::CURRENCY_SYMBOL);

45

Re: СКЛАД

в  любом  случае  пришлось  добавить настройку  рубль  или  гривна.
да  и с  склонением  по  падежам ща  вроде  норм