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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.12.2008, 18:53   #1  
DmitrySincerity is offline
DmitrySincerity
Участник
 
32 / 10 (1) +
Регистрация: 28.11.2008
Адрес: Минск
Создание CustInvoiceJour, CustInvoiceSalesLink, CustInvoiceTrans from X++
День добрый.
Есть такая необходимость: на основании SalesOrders (и SalesLine) запостить (создать) инвойс с помощью X++. (Т.е. чтобы из самого Dynamics AX я смог выбрать свой ордер и просмотреть соответствующий ему инвойс с items в итоге). Все делается на Dynamics AX 2009!

Что делаю я в X++?
1. создаю Sales Order ( ок )
2. создаю Sales Line ( ок )
3. делаю постинг Invoice следующим образом:
X++:
 SalesFormLetter = SalesFormLetter::construct(DocumentStatus::Invoice, true);
   salesFormLetter.update(salesTable, SystemDateGet(), SalesUpdate::All, AccountOrder::None, false, true);
Возникают проблемы:
1. инвойс (запись в CustInvoiceJour) создается без InvoiceId, LedgerVoucher, ParmId
2. необходимые записи в таблицах CustInvoiceSalesLink and CustInvoiceTrans не создаются.

Подскажите плиз, как решить данные проблемы?

Заранее спасибо!
Старый 12.12.2008, 21:20   #3  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Судя по коду разноски, вроде все делаете правильно. Поэтому предполагаю, что ошибка где-то в первых двух пунктах, или же неправильно (не до конца) настроена система (номерные серии??).
Старый 12.12.2008, 23:54   #4  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
DmitrySincerity,
А вручную вы пробовали разносить эти созданные вам заказы?
Всё ли получалось?
__________________
Zhirenkov Vitaly
Старый 15.12.2008, 13:23   #5  
DmitrySincerity is offline
DmitrySincerity
Участник
 
32 / 10 (1) +
Регистрация: 28.11.2008
Адрес: Минск
Цитата:
Сообщение от ZVV Посмотреть сообщение
DmitrySincerity,
А вручную вы пробовали разносить эти созданные вам заказы?
Всё ли получалось?
Пробовал - все получалось. Вот поэтому-то и обратился на форум. Пробовал применить несколько методов, которые скидывал muzzy - сейчас еще в экспериментах.
Старый 15.12.2008, 17:49   #6  
DmitrySincerity is offline
DmitrySincerity
Участник
 
32 / 10 (1) +
Регистрация: 28.11.2008
Адрес: Минск
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Судя по коду разноски, вроде все делаете правильно. Поэтому предполагаю, что ошибка где-то в первых двух пунктах, или же неправильно (не до конца) настроена система (номерные серии??).
Для пущей уверенности привожу свой тестовый код:

1. создание Sales Order:
X++:
 NumberSeq = NumberSeq::newGetNumFromCode(
   SalesParameters::numRefSalesId().numberSequence);
   salesTable.SalesId = NumberSeq.num();
   salesTable.CurrencyCode = "USD";
   salesTable.CustGroup = "10";
   salesTable.CustAccount = custAccount;
   salesTable.InvoiceAccount = custAccount;
   salesTable.SalesType = 3;
   salesTable.LanguageId = "en-us";
   salesTable.ShippingDateRequested = SystemDateGet();
   salesTable.SalesStatus = 1;
   salesTable.PostingProfile= "GEN";
   salesTable.AddressRefRecId = 5637147107;
   salesTable.AddressRefTableId = 77;
  
   salesTable.initValue();

    //salesTable.initFromCustTable();

   salesTable.insert();
Ордер создается нормальный - т.е. согласно номерной серии происходит все нормально.

2. создание Sales Line:
X++:
salesLine.clear();
   
   salesLine.salesId = salesTable.SalesId;
   salesLine.ItemId = itemId;
   salesLine.LineAmount = 888;
   salesLine.ShippingDateRequested = SystemDateGet(); 
   salesLine.ConfirmedDlv = SystemDateGet();
   salesLine.InventDimId = "00008243_069";
   salesLine.Name = "IN006";
   salesLine.QtyOrdered = 1;
   salesLine.SalesQty = 1;
   salesLine.SalesPrice = 777;
   salesLine.SalesStatus = 3;
   salesLine.SalesType = 1;
   salesLine.CurrencyCode = "USD";
   salesLine.CustGroup = "10";
   salesLine.CustAccount = "ACC13";
   salesLine.AddressRefRecId = salesTable.AddressRefRecId;
   salesLine.AddressRefTableId = 366;
   salesLine.SalesUnit = "Pcs";
   salesLine.PriceUnit = 1;
   salesLine.LineNum = 1;
   salesLine.LineAmount = 888;
   
   salesLine.createLine(true, true,true,true,true, false);
После создания Sales Line не создается SalesParmLine - это так, для заметки

3. постинг инвойса с вытекающими "приятными" последствиями:
X++:
 SalesFormLetter = SalesFormLetter::construct(DocumentStatus::Invoice, true);
 salesFormLetter.update(salesTable, SystemDateGet(), SalesUpdate::All, AccountOrder::None, false, true);
Есть идеи, господа?
Старый 15.12.2008, 18:22   #7  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
salesTable.initValue();

не понравилось мне, что это стоит в конце, перед инсертом.

После создания Sales Line не должен создаваться SalesParmLine
.
перед инсертами вызывайте if (table.validateWrite())

Последний раз редактировалось Sada; 15.12.2008 в 18:30.
Старый 15.12.2008, 18:28   #8  
DmitrySincerity is offline
DmitrySincerity
Участник
 
32 / 10 (1) +
Регистрация: 28.11.2008
Адрес: Минск
предлагаете вставить после инсерта?
Старый 15.12.2008, 18:30   #9  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Предлагаю вставить в самом начале.
Старый 15.12.2008, 18:34   #10  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
После salesLine.clear();
вызывать
salesline.initformsalestable(salestable);
+ Вам почитать как создаются заказы на продажу на форуме нада
Старый 15.12.2008, 18:35   #11  
DmitrySincerity is offline
DmitrySincerity
Участник
 
32 / 10 (1) +
Регистрация: 28.11.2008
Адрес: Минск
Цитата:
Сообщение от Sada Посмотреть сообщение
Предлагаю вставить в самом начале.
не помогло
Старый 15.12.2008, 18:36   #12  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Цитата:
Сообщение от DmitrySincerity Посмотреть сообщение
не помогло
И не поможет скорее всего. Просто ТАК надо.
Старый 15.12.2008, 18:40   #13  
DmitrySincerity is offline
DmitrySincerity
Участник
 
32 / 10 (1) +
Регистрация: 28.11.2008
Адрес: Минск
Цитата:
Сообщение от Sada Посмотреть сообщение
После salesLine.clear();
вызывать
salesline.initformsalestable(salestable);
+ Вам почитать как создаются заказы на продажу на форуме нада
Сейчас попробую-займусь...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Разница NotInTTS и Found Logger DAX: База знаний и проекты 6 18.09.2008 12:35
Khue Trinh: AX 2009 Quality Management - Quality Control Blog bot DAX Blogs 1 04.07.2008 16:01
Dynamics AX: Make use of DotNet Assemblies from DAX 4.0 Blog bot DAX Blogs 0 28.10.2006 16:40
Вопрос про Demand Planner slava09 DAX: Функционал 4 25.09.2006 11:43
Говорят вышел SP2 для Axapta 3. Кто нибуть что знает на эту тему? soin DAX: Прочие вопросы 10 13.10.2003 10:43

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:04.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.