Как учитывать в Navision закупку ресурсов

Статья — вольный перевод заметки Карен Хиггинс, оригинал статьи находится по адресу: http://mibuso.com/howtoinfo.asp?FileID=20

Запрос на возможность проводить закупки ресурсов — один из частых запросов на доработки Navision. В этой заметке полностью пошагово описана данная доработка. В результате работы, записи с типом Ресурс будут записаны в таблицах G/L Entry, Resource Ledger Entry и, если потребуется, в Job Ledger Entry.

1. Добавьте «Ресурс» в список option’ов для поля Тип.

2. Измените ссылки в этом поле на таблицу ресурсов, если тип = ресурс. Сделайте это для следующих таблиц:

  • a. 39 — Purchase Line;
  • b. 121 — Purch. Rcpt. Line;
  • c. 123 — Purch. Inv. Line;
  • d. 125 — Purch. Cr. Memo Line;
  • e. 6651 — Return Shipment Line.

3. Измените триггер OnValidate для поля Но. в таблице 39 Purchase Line: добавьте локальную переменную Res, тип — Record Resource, и добавьте следующий код:

//  ERROR(Text003);
BEGIN
  RES.GET("No.");
  RES.TESTFIELD(Blocked,FALSE);
  RES.TESTFIELD("Gen. Prod. Posting Group");
  Description := RES.Name;
  VALIDATE("Unit Cost",RES."Unit Cost");
  VALIDATE("Direct Unit Cost",RES."Direct Unit Cost");
  "Gen. Prod. Posting Group" := RES."Gen. Prod. Posting Group";
  "VAT Prod. Posting Group" := RES."VAT Prod. Posting Group";
  "Tax Group Code" := RES."Tax Group Code";
  "Allow Item Charge Assignment" := FALSE;
  "Unit Price (LCY)" := RES."Unit Price";
  "Unit of Measure Code" := RES."Base Unit of Measure";
 END;

4. Если вы пользуетесь функционалом Работы, измените триггер OnValidate по полю Job No. в таблице 39 Purchase Line:

//IF NOT (Type IN [Type::Item,Type::"G/L Account"]) THEN
IF NOT (Type IN [Type::Item,Type::"G/L Account",Type::Resource]) THEN

5. Таблицы 203 и 207.

  • a. Добавьте Поставщика (Vendor) в список Option’ов после Customer для поля Source Type.
  • b. Добавьте option Purchase в поле Entry Type.
  • c. Измените свойства этих полей, так чтобы при выборе Source Type = Vendor ссылка вела на таблицу Vendor.

6. Кодеюнит 90.

  • a. Добавьте локальную переменную ResJnlLine, тип — Record, Res. Journal Line.
  • b. Добавьте локальную переменную ResJnlPostLine, тип — Codeunit, Res. Jnl.-Post Line. Затем измените код (см.ниже):
//3: ERROR(Text015);
PurchLine.Type::Resource:

  IF PurchLine."Qty. to Invoice" <> 0 THEN BEGIN
    ResJnlLine.INIT;
    ResJnlLine."Posting Date" := "Posting Date";
    ResJnlLine."Document Date" := "Document Date";
    ResJnlLine."Reason Code" := "Reason Code";
    ResJnlLine."RESource No." := PurchLine."No.";
    ResJnlLine.Description := PurchLine.Description;
    ResJnlLine."Source Type" := ResJnlLine."Source Type"::Vendor;
    ResJnlLine."Source No." := PurchLine."Buy-from Vendor No.";
    ResJnlLine."Job No." := PurchLine."Job No.";
    ResJnlLine."Unit of Measure Code" := PurchLine."Unit of Measure Code";
    ResJnlLine."Shortcut Dimension 1 Code" := PurchLine."Shortcut Dimension 1 Code";
    ResJnlLine."Shortcut Dimension 2 Code" := PurchLine."Shortcut Dimension 2 Code";
    ResJnlLine."Gen. Bus. Posting Group" := PurchLine."Gen. Bus. Posting Group";
    ResJnlLine."Gen. Prod. Posting Group" := PurchLine."Gen. Prod. Posting Group";
    ResJnlLine."Entry Type" := ResJnlLine."Entry Type"::Purchase;
    ResJnlLine."Document No." := GenJnlLineDocNo;
    ResJnlLine."External Document No." := GenJnlLineExtDocNo;
    ResJnlLine.Quantity := PurchLine."Qty. to Invoice";
    ResJnlLine."Unit Cost" := PurchLine."Unit Cost (LCY)";
    ResJnlLine."Total Cost" := PurchLine."Unit Cost (LCY)" * ResJnlLine.Quantity;
    ResJnlLine."Unit Price" := PurchLine.Amount/PurchLine.Quantity;
    ResJnlLine."Total Price" := PurchLine.Amount;
    ResJnlLine."Source Code" := SrcCode;
    ResJnlLine.Chargeable := TRUE;
    ResJnlLine."Posting No. Series" := "Posting No. Series";
    ResJnlLine."Qty. per Unit of Measure" := PurchLine."Qty. per Unit of Measure";
    TempJnlLineDim.DELETEALL;
    TempDocDim.RESET;
    TempDocDim.SETRANGE("Table ID",DATABASE::"Purchase Line");
    TempDocDim.SETRANGE("Line No.",PurchLine."Line No.");
    DimMgt.CopyDocDimToJnlLineDim(TempDocDim,TempJnlLineDim);
    ResJnlPostLine.RunWithCheck(RESJnlLine,TempJnlLineDim);
  END;

Проверьте, как работает ваша доработка :)

Автор:

В области Navision - с 2003 года. Профессиональные интересы: NAV, MS SQL, .NET, BPMN, IT-менеджмент. Предметная область: логистика, финансы, склады, 3PL.

Количество статей, опубликованных автором: 86.

Комментарии (3 комментария)

  1. как получить пропуск на грузовой автомобиль в москве,пропуск на центр москвы грузовой автомобиль,пропуск грузового автомобиля в центр москвы,сделать пропуск на грузовой автомобиль,сделать пропуск на грузовой автомобиль в москву,как сделать пропуск на грузовой автомобиль,получить пропуск на грузовой автомобиль на мкад,оформить пропуск на грузовой автомобиль,глонасс мониторинг транспорта,gps трекер для автомобиля купить,оборудование системы мониторинга транспорта,оборудование системы мониторинга транспорта и спецтехники,оборудование системы мониторинга транспорта и туризма

  2. как наказать обидчика без вреда для себя,как наказать обидчика на работе,как можно наказать обидчика,как сильно наказать обидчика,как наказать обидчика на расстоянии,как наказать обидчика за подлость,как можно наказать начальника,как можно наказать судью,как можно наказать банк,как можно наказать банк за самоуправство,как можно наказать судебного пристава,как наказать судебных приставов,как можно наказать судебного пристава,как наказать судебных приставов за излишне взысканные,как наказать судебного пристава за незаконные действия

  3. доска бесплатных объявлений от частных лиц,где можно разместить бесплатные объявления,где разместить объявление о работе бесплатно,где можно разместить бесплатные объявления о работе,где можно разместить объявление об услугах,где лучше разместить объявление о продаже,где лучше разместить объявление об услугах,где лучше размещать бесплатные объявления,где можно разместить объявление о продаже,где можно разместить бесплатные объявления о продаже

Добавить комментарий