Всем привет. Подскажите как пересчитать себестоимость каждой продажи при удалении накладной на поступление товара.
Было:
(покупка) +10кг по 10р каждый (на складе теперь 10 кг по 10 р каждый)
(покупка) +10кг по 15р каждый (на складе теперь 20 кг по 12,5р каждый)
(продажа) -5кг (себестоимость 62,5Р, на складе 15кг по 12,5р каждый)
(продажа) -3кг (себестоимость 37,5Р, на складе 12 кг по 12,5р каждый)
(покупка) +8кг по 20р каждый (на складе 20кг по 15,5 рублей каждый)
(продажа) -5кг (себестоимость 77,5Р, на складе 15 кг по 15,5 руб каждый)
Мы убираем поставку 10 кг по 10р.
Стало:
(покупка) +10кг по 15р каждый (на складе теперь 10 кг по 15р каждый)
(продажа) -5кг (себестоимость 75Р, на складе 5кг по 15р каждый)
(продажа) -3кг (себестоимость 45Р, на складе 2 кг по 15р каждый)
(покупка) +8кг по 20р каждый (на складе 10кг по 19 рублей каждый)
(продажа) -5кг (себестоимость 95Р, на складе 5 кг по 19 руб каждый)
Как все это можно безболезненно пересчитать. Может какая структура есть базы данных для удобного калькулирования всего этого? Запутался что-то с этим. Заранее спасибо за ответ. БД - mysql
я так понимаю, есть две таблицы - таблица движений и таблица итогов
три подхода - запретить заднее число (вводить поступления корректировку текущим числом с соответствующим пересчетом итога)
"восстанавливать последовательность", пересчитывая всю "себестоимость" начиная от удаленного документа, возможно неоперативно (не в момент удаления документа, а регламентной операцией)
убрать сумму (или писать некоторую плановую цифру) в итоговой таблице и из списаний вообще и рассчитывать факт её регламентной операцией при закрытии месяца.
ну и правильный вариант вообще отказаться от самописки и взять типовую 1с... потому что потом захочется вешать допзатраты, налоги, незавершенное производство и далее по нарастающей
dailysse: ответ очень сильно зависит от выбраной СУБД и структуры данных. Исходя из имеющихся данных, я бы сделал таблицу номенклатуры, остатков и приходов. На операции с приходами повесил бы триггер, который для объёма текущих остатков элемента номенклатуры выгребал бы записи о приходах, пересчитывал значение себестоимости и вписывал в соответствующее поле таблицы номенклатуры.
я так понимаю набежали 1с-ники и начали про регламентные операции, номенклатуру.. и прочее..
у человека на самом деле другая задача, просто он ее обрисовал чтобы было понятно..
что касается темы. Тут вопрос не в себестоимости, потому что ее тут нет. Вам по сути надо пересчитать остатки до и остатки после нужного вхождения. Если записи нумеруются по порядку, то считается просто. Можно одним запросом, а можно двумя или тремя, если будет удобней.
В случае одного запроса, нужно таблицу два раза сджоинить саму на себя по условиям выборки, сгруппировать, суммировать и разделить.
У вас должна быть таблица движений. По структуре что-то такое:
дата
приход/расход
товар
количество
цена или сумма
Когда удаляете накладную, удаляете запись о ее движении.
А себестоимость считаете запросом. Сумма(сумма)/Сумма(количество)