23.04.2007, 19:10 | #1 |
Участник
|
Denis Fedotenko: Себестоимость и длинные производственные заказы
Источник: http://blogs.technet.com/denisfed/ar...23/808703.aspx
============== Существует следующая достаточно типовая жалоба на производственный модуль 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, которая привязана к проводке по приходу готовой продукции по ПЗ. Источник: http://blogs.technet.com/denisfed/ar...23/808703.aspx
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
|
За это сообщение автора поблагодарили: zemlyn (2), raniel (1), kALVINS (4), Logger (15), alex55 (1). |
23.04.2007, 23:47 | #2 |
Участник
|
Цитата:
Счета ведь могут быть разные. Цитата:
Цитата:
Сообщение от Blog bot
предварительные проводки не сторнируются, а реверсируются.
Но эту особенность можно достаточно легко вылечить. Для того чтобы реверс складских операций выполнялся как сторно, достаточно в методах updateFinancialIssue и updateFinancialReceipt класса inventUpd_financial найти кусок кода, который вызывывает метод разноски физических складских операций по ГК: movement.updateLedgerPhysical(ledgerVoucher,inventTrans,this,inventOnhand); До и после этого метода надо вставить следующий кусочек кода, который переключает режим сторнирования: ledgerVoucher.findLedgerVoucherObject().parmCorrection(!ledgerVoucher.findLedgerVoucherObject().parmCorrection()); Наконец – для того чтобы заменить реверс начисления нематериальных затрат а сторно, достаточно вставить аналогичные куски кода в метод UpdateCalcLedger класса ProdJobType. В его начале есть следующий кусок: if (prodRouteTrans.PostingWIPValuation && prodRouteTrans.Amount) { ………… } Если в начале и конце кода, выполняемого по условию If () вставить знакомый нам кусок кода для включения/выключения сторнировки – реверс замениться сторнированием. Огромный мегареспектище! |
|
24.04.2007, 09:25 | #3 |
Moderator
|
Попросту говоря - я не очень понял тему с начислением, а потом сторнированием затрат с точки зрения русского учета. Скорее всего - это какими-то западными заморочками в учете вызвано. Про настройки счетов я писал с точки зрения среднего российского бухгалтера.
А вообще - статья была задумана как рассказ про возможность включать в закрытие склада физические проводки и как с помощью этой фичи бороться некорректным отображением в учете списанных в НЗП материалов. То что я там про разноску нематериальных затраты пишу - это только пример |
|
|
За это сообщение автора поблагодарили: mazzy (25), Logger (25), gl00mie (5). |
24.04.2007, 10:32 | #4 |
Участник
|
Fed, поправь сам термин. Дело в том, что нематериальные затраты (не путать с нематериальными активами) в финансовом учете имеют совершенно определенный смысл и то, что можно списать потреблением на маршруте не обязазательно относится к ним.
Например, потреблением на маршруте можно списывать затраты на время работы оборудования, электроэнергию и т.п., а в российском бухучете эти затраты относятся как раз к материальным. |
|
24.04.2007, 10:44 | #5 |
Moderator
|
А на какой термин подправить-то ? Я более правильного не смог подобрать...
|
|
20.11.2013, 08:34 | #6 |
Участник
|
У нас возникла следующая проблема с длинными производственными заказами: при завершении производственного заказа себестоимость материалов рассчитывается на момент завершения.
В случае, если в период между запуском производственного заказа, разноски отгрузочной накладной и завершением производственного заказа был приход материала по другой цене, себестоимость материала изменяется. Каким образом обойти данный момент, необходимо, чтобы себестоимость считалась не по текущем ценам материалов, а по тем ценам которые были в момент разноски отгрузочной накладной? |
|
20.11.2013, 11:33 | #7 |
Moderator
|
Хотя в 2009CU5 (или Cu6 - не помню), появилась поддержка незавершенки, вам она не поможет. Дело в том, что в аксапте по определению единицей стоимости является лот и внутри лота все проводки обязаны иметь одну себестоимость. Поскольку выпуск из одного производственного заказа происходит по одному лоту - каждое последующее завершенение заказа и закрытие склада расситывают новую стоимость ВСЕГО выпуска по производственному заказу независимо от периода и корректируют себестоимость старых складских проводок. Правда - коррекция происходит в текущем периоде, так что если вы посчитаете себестоимость выпуска не прымолинейным суммированием inventTrans.costAmountPosted+inventTrans.CostAmountAdjustment, а посчитаете сумму корректировок на дату отчетности по данным inventSettlement - то исходную себестоимость удастся получить.
|
|
20.11.2013, 19:26 | #8 |
Участник
|
Можно физической стоимостью воспользоваться(с разноской в ГК отгрузочной накладной), но осторожно что-бы закупки и продажи не поплыли. А так пользуемся для давальческого сырья физическим списание(знаю что лучше персонами делать давальческое, но по бизнес процессу у нас очень сложное сборочно разборочное производство которое не позваляет переносами пользоваться без серьезных модификаций), а так все на стандарте с малюсенькими доработкам . Пересчет в конце месяца выстраивает по ФИФО физические стоимости списания и при калькуляции(завершении заказа) стоимость списания финансовая приравнивается к физической сформированной в предыдущих периодах(пересчетами). Все работает как часы и сторно в том числе.
Последний раз редактировалось TDV; 20.11.2013 в 19:31. |
|
21.11.2013, 11:56 | #9 |
Участник
|
Цитата:
Сообщение от fed
Правда - коррекция происходит в текущем периоде, так что если вы посчитаете себестоимость выпуска не прымолинейным суммированием inventTrans.costAmountPosted+inventTrans.CostAmountAdjustment, а посчитаете сумму корректировок на дату отчетности по данным inventSettlement - то исходную себестоимость удастся получить.
|
|
21.11.2013, 12:01 | #10 |
Moderator
|
Закрытие склада скорректирует себестоимость списания материалов в незавершенку. А дальше эта коррекция зависнет на счете НЗП, потому что мы ее на готовую продукцию не перекидываем (если берем стоимость из строк отгрузочной накладной). В целом - можно, наверное, потом тупо в конце периода зависшее сальдо руками с 20ки списывать на прибыли и убытки какие-нибудь. Ну то есть - вариант не идеальный - но при определенных допущениях жизнеспособный...
|
|
21.11.2013, 12:16 | #11 |
Участник
|
Вариант с пересчетом, к сожалению, не устраивает. Надо чтоб себестоимость отпущенного материала не изменялась, не пересчитывалась, после разноски накладной.
|
|
21.11.2013, 12:40 | #12 |
Участник
|
Дело в том что отпуск материала(в момент разноски накладной) всегда делается по средней мгновенной стоимости, а потом делается пересчет по выбранной методике учета. Как сделать так что бы без пересчета вообще, это как мне кажется вообще нельзя сделать(кроме партионного учета). Скорее всего на счет последнего я ошибаюсь, но пересчет всегда будет корректировать себестоимость, так как полную себестоимость купленных компонентов как правило корректируют(доп. расходы) задним числом во многих ситуациях в рамках отчетного периода, но это от требований бизнеса зависит.
Последний раз редактировалось TDV; 21.11.2013 в 12:43. |
|
21.11.2013, 16:23 | #13 |
Banned
|
...и была удалена из AX2012 (вместе с русскими побочными материалами). По слухам, она делала какие-то страшные вещи, похуже двухвалютного склада.
Поправляюсь: не удалена. Живет. Последний раз редактировалось EVGL; 21.11.2013 в 16:27. |
|
21.11.2013, 16:57 | #14 |
Moderator
|
Просто фича была разработана неким партнером при некотором моем участии (как постановщика, не как кодера). На определенной стадии - разработку заморозили. А потом спустя год (я уже кажется в Турции был) внезапно разморозили и без серьезного тестирования включили в локализацию...
|
|
Теги |
производство, себестоимость |
|
|