Показать сообщение отдельно
Старый 08.08.2019, 18:32   #5  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
362 / 542 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
А чего это условие то не корректное ? Жаль что полностью код, не вставили из метода с комментарием, а выглядит он вот так :
X++:
    // There is at least one summary invoice so need to process each invoice separately.
    // [B]Select all non-summmary invoices[/B].  If no other record exists in CustInvoiceSalesLink
    // with a different origSalesId then there is only one sales order on the invoice and
    // therefore it is a non-summary invoice.
    select sum(EndDisc), sum(InvoiceAmount), sum(SalesBalance), sum(SumMarkup), sum(SumTax) from custInvoiceJour
        where custInvoiceJour.RefNum == RefNum::SalesOrder
        notexists join custInvoiceSalesLink
            where custInvoiceJour.SalesId          == custInvoiceSalesLink.SalesId
               && custInvoiceJour.InvoiceDate      == custInvoiceSalesLink.InvoiceDate
               && custInvoiceJour.InvoiceId        == custInvoiceSalesLink.InvoiceId
               && custInvoiceSalesLink.OrigSalesId != _salesTable.SalesId;
Т.е. этот запрос должен считать сумму по всем накладным текущего заказа, в которых нет других заказов - т.е. одиночные накладные.
Поэтому как мне кажется надо в три запроса добавить условие custInvoiceJour.SalesId = _salesTable.SalesId, которые содержат notexists join в этом методе.
Насчет равенства это да, но навскидку пока, быстро не придумал, как выбрать такие накладные без not exists join,
Сам метод считает сумму которая в накладных из данного заказа и считает ее так = сумма всех накладных только по этому заказу + доля из накладных где наш заказ включен как один из нескольких.

А вообще если не используете ключ отключите его, проблемы уйдут не только в этом методе.
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: sukhanchik (4).