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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.01.2012, 10:19   #1  
AX3 is offline
AX3
Участник
 
15 / 10 (1) +
Регистрация: 04.03.2009
Редактирование отчета "счет на оплату"
Добрый день, уважаемые!
Есть вопрос от изучающего разработку:
Как в отчете "счет на оплату" по клиенту добавить поле "грузополучатель" из SalesTable.ConsigneeAccount_Ru с условием есть ли по заказу грузополучатель?
Пол дела я сделал, добавив в репортс "salesinvoice4paym" string "Грузополучатель" =)))
Нашел временную таблицу TmpSalesPurchReportTable на которую ссылаются некоторые поля в интересующем меня репорте. Создал в этой таблице поле, к примеру"consignor". осталось, на сколько я понимаю прописать в каком-то классе внесенное мной изменение?
Буду рад любому ответу.


P/S
Axapta v3

С уважением,
Юрий

Последний раз редактировалось AX3; 16.01.2012 в 11:13.
Старый 16.01.2012, 14:39   #2  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Если говорить про заказы :
Класс, который формирует счет на оплату : SalesFormLetter_Invoice4Paym_RU. В методе writeJournal() заполняется шапка, в методе writeJournalLine() - строки. Сформированные счета на оплату хранятся в 2-х таблицах : CustInvoice4PaymJour_RU,CustInvoice4PaymTrans_RU (соответственно шапка и строки).
В закупках аналогично. Т.е. в метод writeJournal() надо прописать код.
Общий класс, который отвечает за вывод отчета : SalesPurchReport_Invoice4Paym_RU. В методе
X++:
protected void prepareReportHeader()
{
    super();

    select firstonly costAllocationHistory
        where costAllocationHistory.CustVendInvoice4PaymJourRecId == invoiceJour.RecId;

    header.CustName        = invoiceJour.DeliveryName_RU;
    header.CustBankAddress = invoiceJour.DeliveryAddresss_RU;

    header.DueDate         = invoiceJour.FixedDueDate ?
                             invoiceJour.FixedDueDate :
                             PaymTerm::find(invoiceJour.Payment).due(invoiceJour.InvoiceDate);

    [ header.AcceptorName,
      header.AcceptorTitle ] = OfficialsTrans_RU::getNameTitleByIdPosition(invoiceJour.OffSessionId_RU, OffPosition_RU::Responsible);
    [ header.TakerName,
      header.TakerTitle ]    = OfficialsTrans_RU::getNameTitleByIdPosition(invoiceJour.OffSessionId_RU, OffPosition_RU::Filler);

    header.Notes            = CustInvoice4PaymJour_RU::findRecId(invoiceJour.RecId).Notes;

    if (mappingExists_RU(tablenum(CustVendInvoiceJour),
                         invoiceJour.TableId,
                         fieldnum(CustVendInvoiceJour, rContractCode)))
    {
        header.rContractAccount = invoiceJour.rContractAccount;
        header.rContractCode    = invoiceJour.rContractCode;
        header.rContractDate    = RContractTable::find(RContractPartnerType::Cust,invoiceJour.rContractCode,invoiceJour.rContractAccount).ContractDate;
        header.rContractNumber  = RContractTable::find(RContractPartnerType::Cust,invoiceJour.rContractCode,invoiceJour.rContractAccount).rContractNumber;
    }
}
идет заполнение header - это и есть временная таблица TmpSalesPurchReportTable_RU.
Обратите внимание, что invoiceJour - это Map : CustVendInvoiceJour., который передается в методе main() класса SalesReport_Invoice4Paym_RU. В мар-е поле ConsigneeAccount_RU уже есть.
И в этом методе тоже прописать добавление вашего поля или в таблице TmpSalesPurchReportTable_RU в метод initFromInvoiceJour().
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.

Последний раз редактировалось Pustik; 16.01.2012 в 15:30. Причина: в мар-е поле ConsigneeAccount_RU уже есть
За это сообщение автора поблагодарили: AX3 (1).
Старый 17.01.2012, 10:16   #3  
AX3 is offline
AX3
Участник
 
15 / 10 (1) +
Регистрация: 04.03.2009
Спасибо Pustik за описание сего процесса!
Немного уточню/подытожу:
В таблицу CustInvoice4PaymJour_RU добавляю филд ConsigneeAccount_RU
1) В SalesFormLetter_Invoice4Paym_RU.writeJournal() добавляю запись:
custInvoice4PaymJour.ConsigneeAccount_RU = salestable.ConsigneeAccount_RU;
2) В SalesPurchReport_Invoice4Paym_RU.prepareReportHeader() добавляю запись:
header.ConsigneeAccount_RU = invoiceJour.ConsigneeAccount_RU;
3) В таблице TmpSalesPurchReportTable_RU в методе initFromInvoiceJour добавляю запись:
this.ConsigneeAccount_RU = _invoiceJour.ConsigneeAccount_RU;

4)Вопрос. Проанализировав класс SalesReport_Invoice4Paym_RU. prepareReportHeader():

protected void prepareReportHeader()
{
SalesPurchReportCounteragentData_RU counteragentData;
CustPaymModeTable custPaymMode;

super();
header.DueDate = header.DueDate ?
header.DueDate :
invoiceJour.DueDate; // Respite date

counteragentData = this.initContragentData(customer,
customerBankAccount,
invoiceJour.OrderAccount);
header.CustName = invoiceJour.DeliveryName;
header.CustBankAddress = invoiceJour.DeliveryAddresss;
header.CustINN = 'ИНН\\КПП ' + counteragentData.parmINN() + '\\' +counteragentData.parmKPP();
custPaymMode = CustPaymModeTable::find(Salestable::find(invoiceJour.SalesPurchId).PaymMode);


counteragentData = this.initCompanyData(custPaymMode.AccountType == LedgerJournalACType::Bank ?
custPaymMode.PaymAccount :
"");


header.VendINN = 'ИНН\\КПП ' + counteragentData.parmINN() + '\\' +counteragentData.parmKPP();

header.VendName = counteragentData.parmName();// + ', ' + counteragentData.fullBankAccountName();
header.VendBank = counteragentData.BankAccountName();
header.VendBankAccount = counteragentData.BankAccountNum();
header.VendBIC = counteragentData.BankBIC_RU();
header.VendCorrAccount = counteragentData.BankCorrAccount_RU();
header.VendBankAddress = counteragentData.fullAddress(false, true)
//////////////////////
Нужно ли в выше указанный код что-то дописывать? подозреваю что нужно ?!
На данный момент то, что описал выше - дописал, но к сожалению тщетно- в теле письма error
Миниатюры
Нажмите на изображение для увеличения
Название: Er.GIF
Просмотров: 457
Размер:	61.2 Кб
ID:	7473  

Последний раз редактировалось AX3; 17.01.2012 в 10:19.
Старый 17.01.2012, 14:03   #4  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от AX3 Посмотреть сообщение
Нужно ли в выше указанный код что-то дописывать? подозреваю что нужно ?!
На данный момент то, что описал выше - дописал, но к сожалению тщетно- в теле письма error
CustVendInvoiceJour(_invoiceJour) - ЭТО МАР. Надо ему(мар-у) дать понять, что означает поле ConsigneeAccount_RU от таблицы CustInvoice4PaymJour_RU. Т.е. связать поле мар-а с полем таблицы. Найдите этот Мар через репозитарий и в разделе Mappings привяжите поле мар-а ConsigneeAccount_RU к такому же полю таблицы CustInvoice4PaymJour_RU.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.

Последний раз редактировалось Pustik; 17.01.2012 в 14:41.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка при печати счета на оплату LGray DAX: Функционал 14 28.12.2007 15:55
оплата на основании счета на оплату macklakov DAX: Программирование 7 20.03.2006 12:27
Налоги при печати накладной/счета на оплату/счета фактуры Андре DAX: Функционал 4 27.05.2004 15:32
разноска счета на оплату после разноски накладной OlegKocherga DAX: Функционал 14 12.03.2004 17:48
в печатной форме Счета на оплату вывести банковские реквизиты OlegKocherga DAX: Функционал 3 27.11.2003 11:29

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

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

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