|
01.10.2012, 11:05 | #1 |
Участник
|
Создание проводки и ее сопоставление
Axapta 3.0
Создание проводки и ее сопоставление должно быть по поставщику. Обязательно ли создавать проводку в ГК или нет? И есть ли какие-нибудь особеннности если проводка оплатная(оплата поставщику)? |
|
01.10.2012, 12:25 | #2 |
Программатор
|
мало инфы. Вы там руками чтоли создание проводок программируете?
|
|
01.10.2012, 12:30 | #3 |
Участник
|
|
|
01.10.2012, 12:33 | #4 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: BeLFO (1), perestoronin (1), Fanygrom (1). |
01.10.2012, 12:58 | #5 |
Участник
|
Вообщем для создания проводки написал JOB
X++: ledgerVoucher = ledgerVoucher::newledgerPost(DetailSummary::Summary, SysModule::Vend, numberSeq.parmNumberSequenceCode()); ledgerVoucherObject = LedgerVoucherObject::newVoucher(numberSeq.num(), transDate,SysModule::Vend ,LedgerTransType::Payment); ledgerVoucherObject.newTaxReference(DetailSummary::Summary); ledgerVoucher.AddVoucher(ledgerVoucherObject); ledgerBondClient = ledgerVoucherObject.ledgerBondClient_RU(); ledgerVoucherObject.AddTrans(LedgerVoucherTransObject::newCreateTrans( ledgerVoucherObject, LedgerPostingType::ConsolidateDiff, "60.01.00", dimension, "Руб", amountCur, 8465876)); ledgerVoucherObject.AddTrans(LedgerVoucherTransObject::newCreateTrans( ledgerVoucherObject, LedgerPostingType::ConsolidateDiff, "60.01.00", dimension, "Руб", -amountCur, 8465876)); Info(numberSeq.num()); ledgerBondClient.bondVRef2Log(1); ledgerBondClient.bondLastVRef2CurrentLog(); ledgerVoucher.end(); vendVoucher = CustVendVoucher::construct(SysModule::Vend, ledgerVoucher, vendTable.accountNum, 100000, Companyinfo::find().currencyCode, transTxt, vendTable.dimension, '', LedgerPostingType::VendBalance); vendVoucher = CustVendVoucher::construct(SysModule::Vend, ledgerVoucher, vendTable.accountNum, -100000, Companyinfo::find().currencyCode, transTxt, vendTable.dimension, '', LedgerPostingType::VendBalance); vendVoucher.setPaymMode(vendTable.paymMode); vendVoucher.setPaymSpec(vendTable.paymSpec); vendVoucher.post(vendTrans); |
|
02.10.2012, 06:48 | #6 |
Участник
|
Вся логика формы спрятана в класс CustVendOpneTransEngine_Ru
проводки для сопоставление складываются в него. Для сопоставления вызывается функция VendTrans::settleTransact(custVendOpenTransEngine.custVendTable()) Кто-нибудь имел с этим дело? Помогите разобраться. |
|
02.10.2012, 10:36 | #7 |
Участник
|
Этот джоб не сопоставляет проводки по поставщику, а только делает проводки ГК.
Как Вам уже говорили, смотрите автоматическое сопоставление и делайте по аналогии. В классе Specification_OffsetVoucher метод run. Для Ax3.0, да и DAX4 вся работа заключается в использовании классов Specification_OffsetVoucher, OffsetVoucher и таблицы SpecTrans и затем вызова CustVendSettle. В DAX2009 набор классов изменен. Просто в отличии от того, что есть в этом методе run, Вам нужно выбирать проводки не так как это сделано в этом классе, а по своей логике. |
|
|
За это сообщение автора поблагодарили: Fanygrom (1). |
02.10.2012, 07:07 | #8 |
северный Будда
|
Честно говоря - хотелось бы сначала понять логику ручного создания проводки по поставщику. Почему вы не задействуете штатные механизмы? Что такого в постановке есть, что этому мешает? Ибо если дело не в этом, а в неграмотной постановке - надо её менять, а не конструировать обходные траншеи
__________________
С уважением, Вячеслав |
|
02.10.2012, 08:51 | #9 |
Участник
|
Штатные механизмы не задействовал, потому что все надо сделать программно.
В общем глобальная постановка: - Существуют заявки на оплату поставщикам. - Каждая заявка содержит список документов, которые нужно оплатить. - Есть одобренная сумма по каждой заявке. - Надо сопоставить неоплаченные документы на одобренную сумму. вот так вкратце. |
|
02.10.2012, 09:29 | #10 |
Программатор
|
Штатный механизм - это программно 'нажать' нужную кнопку или класс вызвать, который нажатие вызывает и передать туда нужные параметры. все отработает стандартно, и программирования минимум
|
|
02.10.2012, 09:34 | #11 |
Программатор
|
X++: vendVoucher = CustVendVoucher::construct(SysModule::Vend, ledgerVoucher, vendTable.accountNum, 100000, Companyinfo::find().currencyCode, transTxt, vendTable.dimension, '', LedgerPostingType::VendBalance); vendVoucher = CustVendVoucher::construct(SysModule::Vend, ledgerVoucher, vendTable.accountNum, -100000, Companyinfo::find().currencyCode, transTxt, vendTable.dimension, '', LedgerPostingType::VendBalance); |
|