AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.08.2004, 06:54   #1  
malex is offline
malex
Участник
 
164 / 19 (1) ++
Регистрация: 10.08.2004
Адрес: Тверь, Москва
Как программно сформировать счет-фактуру по накладной.
Доброе утро.

Такая вот задача. Причем нюанс состоит в том, что номер счета-фактуры должен быть ручной, а не из номерной серии. По умолчанию номера счетов-фактур берутся из номерной серии (для главной бухгалтерии), но есть счета-фактуры поступающие из другого отдела (формируются и распечатываются в другой системе, в Axapta нужны только для формирования книги продаж). У них естественно есть свой номер, который и хочется видеть в книге продаж.

Ниже приведена реализация без ручных номеров. Все ли здесь нормально? И самое главное - как сформировать счет-фактуру с ручным номером?

PHP код:
static void Test3(Args _args)
{
   
CustInvoiceTrans custInvoiceTrans;
   
FactureJourCreate_RU factureCreate;
   
OfficialsServ_RU offServ;
   
OffSessionId_RU offSess;
 ;
   
custInvoiceTrans custInvoiceTrans::findInvoice('59'05\08\2004);   //Выбираем нужную накладную для обработки

   
factureCreate factureJourCreate_RU::construct(FactureModule_RU::Cust);
   
factureCreate.appendTrans([custInvoiceTrans.TableIdcustInvoiceTrans.RecId], 1); //связывает класс с накладной

if (OfficialsServ_RU::isFeatureEnabled()) // должностные лица по умолчанию
   
{
       
offServ      = new OfficialsServ_RU();
       
offServ.initTableFacture(FactureModule_RU::Cust,
                                
'Сок');
       
offSess offServ.newId();
   }

   
factureCreate.initParameters(NoYes::Yes,
                                    
NoYes::No,
                                    
PrintOut::After,
                                    
FacturePrintType_RU::Original,
                                    
NoYes::No,
                                    
''
                                    
Today(),
                                    
'Сок',
                                    
'рур',
                                    
FactureType_RU::Invoice,
                                    
'',
                                    
'',
                                    
offSess,
                                    
'',
                                    
'',
                                    
Today(), //???
                                    
'',
                                    
Today());
   
factureCreate.run();


PS: Axapta 3.0 SP1
Старый 10.08.2004, 09:23   #2  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Думаю, что Вам надо создать класс-наследник от FactureJourCreate_RU, в котором перекрыть initJournal и добавить передачу номера фактуры.
Старый 10.08.2004, 17:50   #3  
AlGol is offline
AlGol
Участник
 
277 / 93 (4) ++++
Регистрация: 24.12.2001
Адрес: Тверь.
Вместо функции today() при проводке документов используй systemDateGet() .
На всякий случай.
Старый 16.08.2004, 14:26   #4  
demID is offline
demID
Участник
 
61 / 12 (1) ++
Регистрация: 16.08.2004
Адрес: Москва
А можете опубликовать код метода custInvoiceTrans::findInvoice() ?
А то у меня нет такого метода в таблице custInvoiceTrans. ( У меня Axapta 3.0 SP3 без Hot fix'ов)
Старый 16.08.2004, 18:37   #5  
malex is offline
malex
Участник
 
164 / 19 (1) ++
Регистрация: 10.08.2004
Адрес: Тверь, Москва
Цитата:
Изначально опубликовано Wamr
Думаю, что Вам надо создать класс-наследник от FactureJourCreate_RU, в котором перекрыть initJournal и добавить передачу номера фактуры.
Спасибо, помогло. Но есть вопросик по реализации.
Создал класс FactureJourCreateCust_RU_ARG extends FactureJourCreateCust_RU, который в свою очередь extends FactureJourCreate_RU. Перекрыл в нем InitJournal(). Пытаюсь создать экземпляр FactureJourCreateCust_RU_ARG посредством new(). Компилятор ругается что 'Нельзя создать объект, поскольку абстрактный метод RunBase.unpack(container) не реализован’. Но ведь реализация этого метода есть в FactureJourCreate_RU. Скопировал реализацию pack() и unpack() в свой класс – заработало.
Чувствую что это очень коряво, но никак не пойму как нужно делать правильно.

Цитата:
Изначально опубликовано demID
А можете опубликовать код метода custInvoiceTrans::findInvoice() ?
Это всего лишь поиск в CustInvoiceTrans по InvoiceId
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Печатаем счет фактуру Varmen DAX: Функционал 5 17.03.2008 09:27
Удаление отгрузочной накладной программно Sada DAX: Программирование 14 03.11.2006 09:01
Счет на оплату ПОСЛЕ отборочной накладной Hamster DAX: Функционал 3 23.11.2004 16:18
Оплата поставщику и регистрация накладной (счет-факутры) May DAX: Функционал 4 29.07.2003 17:18
можно ли в аксапте выписать счет-фактуру, если товар оплачен VladimirS DAX: Функционал 5 19.08.2002 12:09
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:47.