|
|
|
|
#1 |
|
Участник
|
А что за таблица такая LedgerVoucher?
Вообще, сочетание фразы "две недели как начал изучать Ахapta" и написание модуля, выполняюещего самостоятельные разноски в ГК смело, но к добру редко приводит. Может есть смысл на этом этапе просто формировать журнал ГК, который уже пользователи будут разность со всеми стандартными проверками? |
|
|
|
|
#2 |
|
Постигающий
|
сорри ошибся - LedgerTrans. В ней не появляются записи после разноски...
Возможно...но с меня требуют |
|
|
|
|
#3 |
|
Участник
|
Тогда приведите ваш код формирования проводок (естественно, опустив несущественные детали).
|
|
|
|
|
#4 |
|
Постигающий
|
Код: protected void postLedgerTrans(kasRRepRepairLine _repairLine)
{
LedgerVoucher ledgerVoucher;
LedgerVoucherObject ledgerVoucherObject;
LedgerVoucherTransObject ledgerVoucherTransObject;
TransactionTxt transactionTxt;
LedgerBondClient_RU ledgerBondClient;
NumberSeq numberSeq;
Voucher voucherId;
kasRRepEquipmentTable equipmentTable;
kasRRepEquipmentGroup equipmentGroup;
TransDate transDate = _repairLine.FinishDate;
AmountMST amount = _repairLine.Rate * _repairLine.duration();
;
numberSeq = NumberSeq::newGetNum(ProdParameters::numRefProdJournalVoucherId());
voucherId = numberSeq.num();
transactionTxt = new TransactionTxt();
transactionTxt.setType(LedgerTransTxt::None);
transactionTxt.setDate(transDate);
transactionTxt.setVoucher(voucherId);
transactionTxt.txt(_repairLine.Note);
ledgerVoucherObject = LedgerVoucherObject::newVoucher(voucherId,
transDate,
SysModule::System,
LedgerTransType::None,
NoYes::No);
ledgerVoucher = LedgerVoucher::newLedgerPost(DetailSummary::Summary, SysModule::System, voucherId);
ledgerVoucher.parmVoucherSeriesCode(numberSeq.parmNumberSequenceCode());
ledgerVoucher.AddVoucher(ledgerVoucherObject);
ledgerBondClient = ledgerVoucher.findLedgerVoucherObject().ledgerBondClient_RU();
select firstonly equipmentTable
index hint EquipmentIdx
join equipmentGroup
index hint EquipmentGroupIDX
where equipmentTable.EquipmentID == _repairLine.EquipmentID &&
equipmentGroup.EquipmentGroupID == equipmentTable.EquipmentGroupID;
if (ledgerBondClient)
{
ledgerBondClient.addNewLogObject();
}
ledgerVoucherTransObject =
LedgerVoucherTransObject::newCreateTrans(ledgerVoucher.findLedgerVoucherObject(),
LedgerPostingType::Allocation,
equipmentGroup.AccountNum,
Dimensions::emptyDimension(),
CompanyInfo::standardCurrency(),
amount,
_repairLine.RecId);
ledgerVoucherTransObject.parmTransTxt(transactionTxt.txt());
ledgerVoucher.addTrans(ledgerVoucherTransObject);
ledgerVoucherTransObject =
LedgerVoucherTransObject::newCreateTrans(ledgerVoucher.findLedgerVoucherObject(),
LedgerPostingType::Allocation,
kasRRepRepairType::find(_repairLine.RepairTypeID).AccountNum,
Dimensions::emptyDimension(),
CompanyInfo::standardCurrency(),
-(amount),
_repairLine.RecId);
ledgerVoucherTransObject.parmTransTxt(transactionTxt.txt());
ledgerVoucher.addTrans(ledgerVoucherTransObject);
if (ledgerBondClient)
{
if (ledgerBondClient.currentLogLength() == 2)
ledgerBondClient.bondLastVRef2CurrentLog();
ledgerBondClient.removeCurrentLogObject();
}
ledgerVoucher.end();
} |
|
|
|
|
#5 |
|
Участник
|
На первый взгляд - код рабочий (если отвлечься от некоторых недочетов - например, отсутствие записи в лог). А сумма у вас случайно не нулевая? Или может в вышестоящем коде есть отмена транзакции?
Последний раз редактировалось Raven Melancholic; 17.04.2007 в 12:30. |
|
|
|
|
#6 |
|
Постигающий
|
О какой сумме речь? (amount конечно не нулевая)
транзакции вообще не начинал в своем модуле Последний раз редактировалось Андрей К.; 17.04.2007 в 12:37. |
|
|
|
|
#7 |
|
Постигающий
|
Стоило указать у одного из TransObject'a
LedgerPostingType::Bank и все стало разноситься
|
|
|
|
|
|