AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search Mark Forums Read

 
 
Thread Tools Search this Thread Display Modes
Old 12.12.2008, 18:53   #1  
DmitrySincerity is offline
DmitrySincerity
Участник
 
32 / 10 (1) +
Join Date: 28.11.2008
Location: Минск
Создание 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 не создаются.

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

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

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);
Есть идеи, господа?
Old 15.12.2008, 18:22   #7  
Sada is offline
Sada
Программатор
Sada's Avatar
 
1,450 / 153 (8) ++++++
Join Date: 29.03.2005
Location: Толи Барнаул, толи Москва
salesTable.initValue();

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

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

Last edited by Sada; 15.12.2008 at 18:30.
Old 15.12.2008, 18:28   #8  
DmitrySincerity is offline
DmitrySincerity
Участник
 
32 / 10 (1) +
Join Date: 28.11.2008
Location: Минск
предлагаете вставить после инсерта?
Old 15.12.2008, 18:30   #9  
Sada is offline
Sada
Программатор
Sada's Avatar
 
1,450 / 153 (8) ++++++
Join Date: 29.03.2005
Location: Толи Барнаул, толи Москва
Предлагаю вставить в самом начале.
Old 15.12.2008, 18:34   #10  
Sada is offline
Sada
Программатор
Sada's Avatar
 
1,450 / 153 (8) ++++++
Join Date: 29.03.2005
Location: Толи Барнаул, толи Москва
После salesLine.clear();
вызывать
salesline.initformsalestable(salestable);
+ Вам почитать как создаются заказы на продажу на форуме нада
Old 15.12.2008, 18:35   #11  
DmitrySincerity is offline
DmitrySincerity
Участник
 
32 / 10 (1) +
Join Date: 28.11.2008
Location: Минск
Quote:
Originally Posted by Sada View Post
Предлагаю вставить в самом начале.
не помогло
Old 15.12.2008, 18:36   #12  
Sada is offline
Sada
Программатор
Sada's Avatar
 
1,450 / 153 (8) ++++++
Join Date: 29.03.2005
Location: Толи Барнаул, толи Москва
Quote:
Originally Posted by DmitrySincerity View Post
не помогло
И не поможет скорее всего. Просто ТАК надо.
Old 15.12.2008, 18:40   #13  
DmitrySincerity is offline
DmitrySincerity
Участник
 
32 / 10 (1) +
Join Date: 28.11.2008
Location: Минск
Quote:
Originally Posted by Sada View Post
После salesLine.clear();
вызывать
salesline.initformsalestable(salestable);
+ Вам почитать как создаются заказы на продажу на форуме нада
Сейчас попробую-займусь...
 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Разница 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
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 10:21.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.