Esempio n. 1
0
    def status(cls, acceptance, status):
        from applications.point_sale.service import PointSaleService
        from applications.price.service import PriceService, DataToUpdatePrice
        debug(u"Смена статуса `прихода` id = '%s' с %s на %s." % (
            acceptance.id, acceptance.status, StatusType[status]))

        if status == DRAFT:
            if acceptance.type == NEW:
                debug(u"Переход `прихода` id = '%s' в статус 'Черновик' и "
                      u"типом 'Новая' сопровождается удалением накладной."
                      % acceptance.id)
                acceptance.items.delete()
                acceptance.invoice.items.delete()
                db.session.delete(acceptance.invoice)

        if status == IN_PROG:
            if acceptance.type == MAIL:
                cls.initial_acceptance_from_mail(acceptance)
            elif acceptance.type == NEW:
                cls.initial_acceptance_from_custom(acceptance)

        if status == VALIDATED:
            if acceptance.type == MAIL:
                for item in acceptance.items:
                    if item.fact_count:
                        PointSaleService.sync_good_increment(
                            acceptance.pointsale_id, item.good_id,
                            item.fact_count)
            elif acceptance.type == NEW:
                invoice = acceptance.invoices[0]
                for item in invoice.items:
                    good = item.good

                    PriceService.create_or_update(good, DataToUpdatePrice(
                        id_commodity=good.commodity_id,
                        price_retail=item.price_retail,
                        price_gross=item.price_gross,
                        price_prev=None,
                        price_post=item.price_with_NDS,
                        NDS=None,
                        number_local=good.number_local,
                        number_global=good.number_global,
                        invoice=invoice))
                    if item.fact_count:
                        PointSaleService.sync_good_increment(
                            acceptance.pointsale_id, item.good_id,
                            item.fact_count)
        old_status = acceptance.status
        acceptance.status = status
        debug(u"Смена статуса `прихода` id = '%s' с %s на %s завершено." % (
            acceptance.id, old_status, StatusType[status]))
Esempio n. 2
0
    def status(cls, waybill, status):
        from applications.point_sale.service import PointSaleService
        debug(u"Смена статуса `накладной` id = '%s' с %s на %s." % (
            waybill.id, waybill.status, StatusType[status]))

        if status == FINISH:
            debug(u"Финальный статус `накладной`.")

            from_point = waybill.pointsale_from

            if waybill.receiver:
                debug(u"Пересчет кол-ва товаром на точке "
                      u"отправителе id = '%s'" % from_point.id)
                for item in waybill.items:
                    PointSaleService.sync_good_increment(
                        from_point.id, item.good_id, item.count * -1 if item.count else 0)
            else:
                to_point = waybill.pointsale
                debug(u"Пересчет кол-ва товаров на точке отправителе id = '%s' "
                      u"и точке получаете id = '%s'." % (
                        from_point.id, to_point.id))
                for item in waybill.items:
                    PointSaleService.sync_good_increment(
                        from_point.id, item.good_id, item.count * -1
                        if item.count else 0)
                    PointSaleService.sync_good_increment(
                        to_point.id, item.good_id, item.count if item.count
                        else 0)
            debug(u"Пересчет кол-ва товаров завершен.")
        old_status = waybill.status
        waybill.status = status
        debug(u"Смена статуса `накладной` id = '%s' с %s на %s завершено." % (
            waybill.id, old_status, StatusType[status]))
Esempio n. 3
0
    def status(cls, waybillreturn, status):
        from applications.point_sale.service import PointSaleService
        from applications.return_app.service import ReturnService
        debug(u"Смена статуса `накладной возврата` %s с %s на %s." % (
            waybillreturn.id, waybillreturn.status, StatusType[status]))

        if status == DRAFT:
            waybillreturn.items.delete()

        if status == IN_PROG:
            waybillreturn.items.delete()
            return_inst = ReturnService.get_by_id(waybillreturn.returninst_id)
            point = waybillreturn.pointsale

            for item in return_inst.items:
                good_id = item.good_id
                res = PointSaleService.item_to_pointsale_good(
                    point.id, good_id)
                if res:
                    itemreturn = WayBillReturnItems()
                    itemreturn.waybill = waybillreturn
                    itemreturn.good_id = good_id
                    itemreturn.count_plan = res.count
                    db.session.add(itemreturn)

        if status == FINISH:
            from_point = waybillreturn.pointsale
            to_point = PointSaleService.get_central()
            for item in waybillreturn.items:
                PointSaleService.sync_good_increment(
                    from_point.id, item.good_id, item.count * -1 if item.count
                    else 0)
                PointSaleService.sync_good_increment(
                    to_point.id, item.good_id, item.count if item.count else 0)

        waybillreturn.status = status
        debug(u"Смена статуса `накладной возврата` %s с %s на %s завершено." % (
            waybillreturn.id, waybillreturn.status, StatusType[status]))