예제 #1
0
    def save(record_type, record_value, track_no, express_code):
        """
        保存快递单号信息
        :param record_type: 记录类型 0 订单发货单 1 退款发货单
        :param record_value:记录值 对应的各单的单号
        :param track_no: 快递单号
        :param express_code: 快递公司代号
        :return:
        """
        with db.master.transaction():
            express_id = db.master.insert(tablename="express",
                                          created_time=datetime.datetime.now(),
                                          record_type=record_type,
                                          record_value=record_value,
                                          track_number=track_no,
                                          express_code=express_code,
                                          status=0)

            if record_type == 0:
                orders.update(order_no=record_value,
                              status=OrderStatus.Shipped.value)
            elif record_type == 1:
                refund.update(
                    refund_no=record_value,
                    status=RefundStatus.BuyerReturnWaitSellerConfirm.value)

            return express_id
예제 #2
0
 def treasurer(refund_id):
     """
     财务审核
     :param refund_id:
     :return:
     """
     result = refund.update(_id=refund_id,
                            status=RefundStatus.RefundInProcess.value)
     return result
예제 #3
0
 def custom_audit_fail(refund_id):
     """
     客服审核不通过
     :param refund_id:
     :return:
     """
     result = refund.update(
         _id=refund_id,
         status=RefundStatus.CustomerServiceRefuseWaitBuyerEdit.value)
     return result
예제 #4
0
 def custom_audit_pass(refund_id):
     """
     客服审核通过
     :param refund_id:
     :return:
     """
     result = refund.update(
         _id=refund_id,
         status=RefundStatus.RefundAgreeWaitBuyerReturn.value)
     return result
예제 #5
0
    def refund_close_view(self):
        """
        关闭退款
        :return:
        """
        refund_id = request.args.get("id")
        current_status = refund.get_detail(
            _id=refund_id, whats=u"refund_status").refund_status

        if current_status >= 10:
            return self.make_write(result_code=6001)
        result = refund.update(_id=refund_id,
                               wheres={"refund_status": current_status},
                               status=RefundStatus.RefundClose.value)
        return self.make_write(result_code=0,
                               result_data=self.reverse_url(".list_view"))
예제 #6
0
    def refund_express_sign(self):
        """
        退货运单签收,即确认收货
        :return:
        """
        if request.method == "GET":
            refund_id = request.args.get("id")
            refund_info = refund.get_detail(
                _id=refund_id,
                whats=
                u"id, refund_no, order_id, order_no, order_goods_id, refund_reason_code, remark"
            )
            refund_express = express.show_express_detail(
                record_value=refund_info.refund_no,
                record_type=ExpressNumberRecordType.REFUND.value)
            order_invoice = orders.query_order_invoices(
                order_id=refund_info.order_id, whats=u"id")
            refund_goods = orders.view_order_goods_by_id(
                order_goods_id=refund_info.order_goods_id)

            data = {
                "refund_info": refund_info,
                "refund_express": refund_express,
                "order_invoice": order_invoice,
                "refund_goods": refund_goods,
                "return_url": request.args.get("return_url", "")
            }
            return self.render(template="refund/sign.html", data=data)
        else:
            req_data = self.gen_arguments
            _id = req_data.get("id")
            sign_invoice = req_data.get("sign_invoice", "0")
            return_url = req_data.get("return_url", "")
            sign_goods = req_data.get("sign_goods", None)
            if not sign_goods:
                return self.make_write(result_code=6003)

            result = refund.update(
                _id=_id,
                return_invoice=sign_invoice,
                status=RefundStatus.WaitFinancialAudit.value)
            _url = self.decode_return_url(
                return_url) if return_url else self.reverse_url(".list_view")
            return self.make_write(result_code=0, result_data=_url)
예제 #7
0
    def refund_append_info(self):
        """
        追加退款信息
        :return:
        """
        if request.method == "GET":
            refund_id = request.args.get("id")
            refund_info = refund.get_detail(_id=refund_id)
            return_url = request.args.get("return_url", "")
            refund_evidences = refund.query_refund_evidences(
                refund_id=refund_id)
            order_details = orders.show_order_goods_detail(
                order_id=refund_info.order_id)
            data = {
                "refund_info": refund_info,
                "order_details": order_details,
                "refund_evidences": refund_evidences
            }
            return self.render(template="refund/append_refund_info.html",
                               data=data,
                               return_url=return_url)
        else:
            req_data = self.gen_arguments
            refund_id = req_data.get("id")
            refund_reason = req_data.get("refund_reason")
            remark = req_data.get("remark", "")
            picture_urls = req_data.getlist("picture_url", [])
            order_price = int(req_data.get("order_price"))
            refund_fee = float(req_data.get("refund_fee", 0)) * 100
            return_url = req_data.get("return_url", "")
            if refund_fee > order_price:
                return self.make_write(result_code=6002)

            refund_data = dict(refund_reason_code=refund_reason,
                               remark=remark,
                               refund_fee=refund_fee)
            result = refund.update(_id=refund_id,
                                   picture_urls=picture_urls,
                                   **refund_data)
            return_url = self.decode_return_url(
                return_url) if return_url else self.reverse_url("order")
            return self.make_write(result_code=0, result_data=return_url)