Публикация
При смене валюты в счете изменять эту валюту и пересчитывать суммы во всех подчиненных продуктах
12 июня 2009 17:33
Предлагаю один из вариантов решения поставленной задачи.
1. В ds_InvoiceScript добавить функцию:
function ChangeCurrencyID(InvoiceID, CurrencyID) {
if (IsEmptyValue(InvoiceID) || IsEmptyValue(CurrencyID)) {
return;
}
if (!Assigned(InvoiceScript.OffDataset)) {
InvoiceScript.OffDataset =
Services.GetNewItemByUSI('ds_OfferingInInvoice');
}
var Dataset = InvoiceScript.OffDataset;
Dataset.DisableEvents();
ApplyDatasetFilter(Dataset, 'InvoiceID', InvoiceID, true);
Dataset.Open();
while (!Dataset.IsEOF) {
Dataset.Edit();
Dataset.Values('CurrencyID') = CurrencyID;
Dataset.Post();
Dataset.GotoNext();
}
ApplyDatasetFilter(Dataset, 'InvoiceID', InvoiceID, false);
Dataset.Close();
}
if (IsEmptyValue(InvoiceID) || IsEmptyValue(CurrencyID)) {
return;
}
if (!Assigned(InvoiceScript.OffDataset)) {
InvoiceScript.OffDataset =
Services.GetNewItemByUSI('ds_OfferingInInvoice');
}
var Dataset = InvoiceScript.OffDataset;
Dataset.DisableEvents();
ApplyDatasetFilter(Dataset, 'InvoiceID', InvoiceID, true);
Dataset.Open();
while (!Dataset.IsEOF) {
Dataset.Edit();
Dataset.Values('CurrencyID') = CurrencyID;
Dataset.Post();
Dataset.GotoNext();
}
ApplyDatasetFilter(Dataset, 'InvoiceID', InvoiceID, false);
Dataset.Close();
}
2. В обработчике события OnDatasetAfterPost счета вставить вызов функции:
ChangeCurrencyID(Dataset.Values('ID'), Dataset.Values('CurrencyID'));
3. Сохранить все внесенные изменения. Перезапустить приложение и протестировать работоспособность системы.
Желаю удачи!
С уважением,
Мельникова Екатерина
16 июня 2009 10:00
Судя по функции, она делает только замену валюты в продуктах счета. А пересчет где делается?
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать