Себестоимость и длинные производственные заказы

 

Существует следующая достаточно типовая жалоба на производственный модуль DAX: "Мы не можем посчитать себестоимость списания материалов в производство до завершения производственного заказа. У нас на внедрении, цикл производства одного ПЗ занимает 2-3 недели. Получается что материал давно списан из цеховой кладовой, его уже распилили, нарезали и смонтировали, а по бухгалтерии он до сих пор числится на 10ом счету. Даже если мы включим разноску физических складских операций, они не будут включены в закрытие склада, соответственно - истинную себестоимость списания в производство нам не сосчитать до завершения ПЗ. Получается - наш бухгалтерский баланс отстает от реальности на 2-3 недели. Если ПЗ начат и завершен в разных отчетных периодах - это фатально...".

Давайте попробуем разобраться почему подобная ситуация возникает и как можно исправить ситуацию.

После того как заказ запущен в производство, материалы списываться на производственный заказ через журнал отгрузочных накладных. При этом в складских проводках образуются ФИЗИЧЕСКИЕ проводки списания. При приемке готовой продукции по журналу приемки, у нас также образуются ФИЗИЧЕСКИЕ приходные складские проводки. Кроме того - если мы по ПЗ разносим журналы карты маршрута или карты заданий, у нас в затратах по производственному заказу (таблица ProdCalcTrans, которую можно посмотреть из формы ПЗ по кнопке Запросы->Рассчет цены) накапливается информация о нематериальных затратах на производство по данному ПЗ. При этом делается проводка на сумму нематериальных затрат по дебету счета "Счет НЗП" и кредиту счета "Расход НЗП". В зависимости от настроек ПЗ, эти счета беруться из настроек рабочего центра, категории затрат по маршруту или производственных групп. Наконец, при завершении производственного заказа, система переводит проводки списания и оприходования в статус финансовых списаний и приходов и проводит эти списания и приходы по счетам ГК. Кроме того, проводки по списанию нематериальных затрат реверсируются, затем вместо них делаются проводки по ГК на те же суммы по счетам прихода и расхода из настроек калькуляции себестоимости.

Почему так сделано ? С приходными проводками - все понятно. Пока заказ не завершен, на него могут быть отнесены новые затраты, соответственно - посчитать окончательную себестоимость прихода мы не можем и делать финансовые приходы по складу рановато. С проводками списания, как мне кажется,такая ситуация вызвана скорее техническими проблемами. При закрытии склада, в случае корректировки себестоимости по финансовой складской проводке списания в производство, необходимо также скорректировать и приходную финансовую складскую проводку по производству. А у нас этой проводки до завершения ПЗ просто нету. Мне кажется - в принципе можно было бы попытаться изменить процедуру закрытия склада таким образом, чтобы эта ситуация обрабатывалась (Например - накапливать сумму коррекций где-нибудь в шапке ПЗ, чтобы потом использовать при создании финансовой складской проводки по приходу из производства). Тем не менее - разработчики процедуры закрытия склада нашли более простое решение этой проблемы, о котором мы и поговорим ниже. Ну и наконец - я совершенно не понимаю, почему реверсируются и заново проводятся проводки списания нематериальных затрат. Судя по коду - предварительные (это те которых потом реверсируют) и окончательные проводки в принципе не могут различаться по суммам. Так что это - либо какое-то требование западного учета, либо идея из серии "reserved for future use"  и разработчики планируют в дальнейшем сделать какой-то механизм который позволит пересчитывать окончательные нематериальные затраты и они будут отличаться от предварительных (которые мы по журналу карт маршрута или карт заданий разносим).

Возникает вопрос - что же делать ? То что у нас себестоимость прихода из ПЗ не рассчитывается до завершения ПЗ - полбеды. В общем-то можно как-то объяснить почему мы ее не считаем до накопления всех затрат по ПЗ. Но вот что с себестоимостями списаний делать ? В закрытие склада они не попадают, коррекции на них не проводяться и к концу периода мы можем получить неадекватное сальдо на 10ом счете...

Дело в том, что распространенное мнение, что закрытие и пересчет склада работают только с финансовыми складскими проводками, начиная с версии 3.0sp2 не соответствует истине. Дело в том, что начиная с этой версии, рассчет себестоимости обрабатывает ФИЗИЧЕСКИЕ складские проводки по той номенклатуре, у которой в группе складских моделей стоит галочка "Включать физическую себестоимость".

Система позволяет сопоставить друг с другом физическую и финансовую проводку (например - приход по отборочной накладной и списание по накладной, или, как в нашем случае, приход по накладной и списание в производство по отгрузочной накладной). Кардинальное отличие от обычного сопоставления финансовых проводок состоит в том, что если одна из сопоставляемых проводок - физическая, то данные о сопоставлении не записываются в таблицу сопоставлений, сопоставление делается только в памяти, как при выполнении процедуры пересчета склада. Кроме того, если в результате сопоставления произошла коррекция по физической расходной складской проводке, то коррекция не протягивается по цепочке себестомости. Тем не менее, коррекции себестоимости списания записываются в таблицу складских сопоставлений и если по данному списанию у нас выполнялась разноска в ГК по физической складской проводке, то в результате разноски в ГК закрытия или пересчета в главную книгу попадет и сумма коррекции. Надо отметить, что коррекции физических проводок списания записываются в таблицу складских сопоставлений с специальной моделью (поле settleModel) -"Физическое значение". Соответственно - эти коррекции можно легко вычленить при анализе результатов закрытия/пересчета склада.

Значит для того, чтобы у нас корректно списывалась себестоимость по складским проводкам списания по ПЗ нам нужно сделать следующее:

· Надо для всех материалов включить в настройках складской модели режим "Включать физическую себестоимость"

· Для того чтобы у нас делались проводки по ГК при выполнении физических списаний нужно не только включить разноску физических запасов в параметрах складских моделей но и включить галку "Разнести отгрузочную накладную в главную книгу" в параметрах модуля производство.

· Хотя, строго говоря, к проблеме списания номенклатуры в производство это не имеет отношения, но было бы полезно если бы при приемке ГП у нас тоже делались проводки по ГК. Для этого надо у ГП включить режим разноски физических операций в параметрах складской модели и галку "Отчет о разноске принятого в ГК" в параметрах складского модуля. Кроме того, для того чтобы система порождала правдоподобную себестоимость при физическом оприходовании ГП по операции приемки, надо поставить в параметрах модуля производства галку "Использовать оцененную себестоимость". Если эта галка включена – система будет рассчитывать себестоимость прихода на основании списка накопленных по ПЗ затрат в таблице ProdCalcTrans.

· Наконец – надо в настройке разноски по складу, прописать в качестве счета и корсчета отгрузочной накладной те же счета что и для расхода и корсчета расхода. (20.xx и 10.xx). Для счета и корсчета приемки, надо поставить те же счета что и прихода и корсчета прихода (43.xx и 20.xx)

· Для счетов нематериальных затрат, надо прописать одинаковые счета и корсчета и для НЗП и для счетов по калькуляции себестоимости. (скажем – 20.xx и 70.xx)

В таком случае – мы получаем следующую картину:

1. При списании номенклатуры по журналу отборочных накладных, получаем проводки Д 20.xx К 10.xx с правдоподобной суммой. (Фактически – мгновенной себестоимостью)

2. При приходовании номенклатуры по журналу приемки также получаем разумные проводки Д 43.xx К 20.xx с разумной себестоимостью.

3. При списании нематериальных затрат – проводки Д 20.xx К 70.xx

4. В случае если производственный заказ длиться долго и закрытие склада произошло раньше чем заказ был завершен – то при закрытии склада получаем проводки коррекции Д20.xx К 10.xx, которые доводят остаток на 10 счете до правильного значения.

5. При завершении заказа – получаем сначала реверсивные проводки по складу (реверс физической операции) Д 10.xx К 20.xx для расхода и Д20.xx К 43.xx для прихода. При этом в качестве суммы реверсивной проводки берется сумма С УЧЕТОМ накопленной при закрытии склада коррекции. Кроме того – реверсируются нематериальные затраты (Д 70 К 20). После этого – делаются обычные финансовые складские проводки прихода и списания с разноской в ГК (Д 20.xx К 10.xx и Д 43.xx К 20.xx) и проводки на нематериальные затраты (Д 20.xx К 70.xx).

6. При следующем закрытии склада у нас делаются обычные коррекции Д 20.xx К 10.xx и Д 43.xx К 20.xx как при обычном закрытии склада. При этом – прошлые проводки коррекции по закрытию склада уже не играют, поскольку при выполнении финансовой разноски складских проводок, они были отреверсированы.

В общем – получается чуток странноватая с точки зрения русского бухгалтера, но в целом вполне жизненная схема. Единственное что выглядит странным – это то что при завершении ПЗ, предварительные проводки не сторнируются, а реверсируются.

Но эту особенность можно достаточно легко вылечить. Для того чтобы реверс складских операций выполнялся как сторно, достаточно в методах updateFinancialIssue и updateFinancialReceipt класса inventUpd_financial найти кусок кода, который вызывывает метод разноски физических складских операций по ГК: movement.updateLedgerPhysical(ledgerVoucher,inventTrans,this,inventOnhand);

 До и после этого метода надо вставить следующий кусочек кода, который переключает режим сторнирования:

ledgerVoucher.findLedgerVoucherObject().parmCorrection(!ledgerVoucher.findLedgerVoucherObject().parmCorrection());

Наконец – для того чтобы заменить реверс начисления нематериальных затрат а сторно, достаточно вставить аналогичные куски кода в метод UpdateCalcLedger класса ProdJobType. В его начале есть следующий кусок:

if (prodRouteTrans.PostingWIPValuation && prodRouteTrans.Amount)

{

…………

}

Если в начале и конце кода, выполняемого по условию If () вставить знакомый нам кусок кода для включения/выключения сторнировки – реверс замениться сторнированием.

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

Наконец, чтобы завершить тему себестоимости по производству, надо упомянуть о галке "Обновить производство" в параметрах закрытия/пересчета склада. Если эта галка установлена, то данные о коррекции проводок списания в производство попадают не только в ГК и таблицу складских сопоставлений, но и в поле realCostAdjustment (Корректировка) той записи таблицы ProdCalcTrans (Рассчет), которая привязана к корректируемой складской проводке списания, а также в поле Adjustment (корректировка) журнала отгрузочных накладных. Кроме того – при этом обновляется сумма корректировки в той записи таблицы ProdCalcTrans, которая привязана к проводке по приходу готовой продукции по ПЗ.