Browse Source

简易流程:入库单结清

wushaodong 3 years ago
parent
commit
c2e8857e86

+ 11 - 1
apps/purchase/serializers.py

@@ -9,7 +9,7 @@ from apps.exceptions import CustomError
 from apps.foundation.models import BizLog
 from apps.serializer_errors import dump_serializer_errors
 from models import PurchasePlan, PurchaseUser, PurchasePlanDetail, PurchasePrice, PurchaseOrder, PurchaseOrderDetail, \
-    GodownEntry, PurchaseInvoiceImage, \
+    PurchaseInvoiceImage, \
     PurchasePayment, PurchasePaymentDetail, GodownEntry, GodownEntryDetail, GodownEntryReturn, GodownEntryReturnDetail, \
     PurchasePay
 from libs.booleancharfield import BooleanCharField, PriceShowCharField, AmountShowCharField, CountShowCharField, \
@@ -430,6 +430,15 @@ class GodownEntrySerializer(serializers.ModelSerializer):
     create_time = serializers.DateTimeField(format=base.DATETIME_FORMAT, read_only=True)
     warehouse_text = serializers.CharField(source='warehouse.name', read_only=True)
     purchase_order_no = serializers.CharField(source='purchase_order.no', read_only=True)
+    is_clear_text = serializers.SerializerMethodField()
+
+    def get_is_clear_text(self, obj):
+        payment = PurchasePayment.objects.filter(order=obj.purchase_order).first()
+        if payment and payment.is_clear:
+            return '是'
+        else:
+            return '否'
+
     class Meta:
         model = GodownEntry
         fields = '__all__'
@@ -639,6 +648,7 @@ class PurchasePaymentSerializer(serializers.ModelSerializer):
     supplier_bank = serializers.CharField(source='order.supplier.opening_bank', read_only=True)
     order_no = serializers.CharField(source='order.no', read_only=True)
     payment = BooleanCharField(source='is_pay', read_only=True)
+    is_clear_text = BooleanCharField(source='is_clear', read_only=True)
     amount = AmountShowCharFieldWithTwoDecimalPlaces()
     actual_amount = AmountShowCharFieldWithTwoDecimalPlaces()
     apply_amount = AmountShowCharFieldWithTwoDecimalPlaces()

+ 1 - 0
apps/purchase/urls.py

@@ -44,6 +44,7 @@ urlpatterns = (
     url(r'^purchase_payment/pay/$', purchase_payment_pay),
     url(r'^purchase_payment/pay/detail/$', purchase_payment_pay_detail),
     url(r'^purchase_payment/export_detail/$', purchase_payment_export_detail),
+    url(r'^purchase_payment/clear/$', purchase_payment_clear),
 
     url(r'^purchase_invoice/data/$', purchase_invoice_list),
     url(r'^purchase_invoice/export/$', purchase_invoice_export),

+ 15 - 0
apps/purchase/views.py

@@ -1086,6 +1086,7 @@ def purchase_order_payment(request):
                 }
                 income = FinanceIncomeSerializer.factory(request.user, income_data)
                 income.validSave()
+            BizLog.objects.addnew(request.user, BizLog.INSERT, u"入库单[{}]付款".format(godownEntry.no), request.POST)
     except CustomError, e:
         return JSONError(e.get_error_msg())
     except Exception, e:
@@ -1284,6 +1285,20 @@ def purchase_payment_export_detail(request):
     BizLog.objects.addnew(request.user, BizLog.EXPORT, u"导出付款管理明细")
     return JSONResponse({'filename': filename})
 
+@csrf_exempt
+@token_required
+def purchase_payment_clear(request):
+    id = request.GET.get('id') # 合同id
+    try:
+        with transaction.atomic():
+            order = PurchaseOrder.getById(id)
+            PurchasePayment.objects.filter(order=order).update(is_clear=True)
+            BizLog.objects.addnew(request.user, BizLog.INSERT, u"结清合同{}".format(order.no))
+    except Exception, e:
+        traceback.print_exc()
+        return JSONError(u'保存失败')
+    return JSONResponse({})
+
 
 @csrf_exempt
 @permission_required('purchase.pay_purchase_payment')

+ 1 - 1
scj/app_settings.py

@@ -8,7 +8,7 @@ DATABASES = {
         'NAME': 'scj',
         'USER': 'carwin',  # Not used with sqlite3.
         'PASSWORD': 'carwin!@#',  # Not used with sqlite3.
-        'HOST': '127.0.0.1',
+        'HOST': '39.106.109.89',
     },
 }
 # DATABASES = {

+ 1 - 1
scj/local_settings.py

@@ -1,2 +1,2 @@
-LICENSE_KEY = 'dev-luyuhang'
+LICENSE_KEY = 'dev-wushaodong'
 # LICENSE_KEY = 'jsyc'

+ 20 - 0
uis/views/purchase/consumable_godownentry.html

@@ -78,6 +78,9 @@
                     <button class="layui-btn layui-btn-sm layui-hide" id="btn_pay"><i
                             class="layui-icon layui-icon-form"></i>付款
                     </button>
+                    <button class="layui-btn layui-btn-sm" id="btn_clear"><i
+                            class="layui-icon layui-icon-form"></i>结清
+                    </button>
                     <button class="layui-btn layui-btn-sm" id="btn_query"><i class="layui-icon layui-icon-search"></i>查询
                     </button>
                 </div>
@@ -185,6 +188,7 @@
         }
         cols.push({field: 'warehouse_text', align: 'right', title: '仓别', width: 100});
         cols.push({field: 'purchase_order_no', align: 'right', title: '合同号', width: 150});
+        cols.push({field: 'is_clear_text', title: '是否结清', width: 90});
         cols.push({field: 'create_time', title: '创建时间', width: 150});
         cols.push({field: 'create_user_text', title: '创建人', width: 150});
         cols.push({field: 'status_text', title: '审核状态', width: 100});
@@ -394,6 +398,22 @@
                 content: 'material_pay.html?id=' + data.id
             });
         });
+        $('#btn_clear').on('click', function () {
+            var data = utils.getSelectedRow('datagrid');
+            if (!data.purchase_order) {
+                layer.msg('该入库单没有合同,不能结清!', {icon: 5});
+                return false;
+            }
+            layer.confirm('确定要结清吗?', function (index) {
+                layer.close(index);
+                layui.admin.req({
+                    url: '/purchase/purchase_payment/clear/?id=' + data.purchase_order
+                    , done: function (res) {
+                        table.reload('datagrid', {});
+                    }
+                });
+            });
+        });
         $('#btn_query').on('click', function () {
             layer.open({
                 type: 1,

+ 20 - 0
uis/views/purchase/material_godownentry.html

@@ -77,6 +77,9 @@
                     <button class="layui-btn layui-btn-sm layui-hide" id="btn_pay"><i
                             class="layui-icon layui-icon-form"></i>付款
                     </button>
+                    <button class="layui-btn layui-btn-sm" id="btn_clear"><i
+                            class="layui-icon layui-icon-form"></i>结清
+                    </button>
                     <button class="layui-btn layui-btn-sm" id="btn_query"><i class="layui-icon layui-icon-search"></i>查询
                     </button>
                 </div>
@@ -195,6 +198,7 @@
         }
         cols.push({field: 'warehouse_text', align: 'right', title: '仓别', width: 100});
         cols.push({field: 'purchase_order_no', align: 'right', title: '合同号', width: 150});
+        cols.push({field: 'is_clear_text', title: '是否结清', width: 90});
         cols.push({field: 'create_time', title: '创建时间', width: 150});
         cols.push({field: 'create_user_text', title: '创建人', width: 100});
         cols.push({field: 'status_text', title: '审核状态', width: 100});
@@ -406,6 +410,22 @@
                 content: 'material_pay.html?id=' + data.id
             });
         });
+        $('#btn_clear').on('click', function () {
+            var data = utils.getSelectedRow('datagrid');
+            if (!data.purchase_order) {
+                layer.msg('该入库单没有合同,不能结清!', {icon: 5});
+                return false;
+            }
+            layer.confirm('确定要结清吗?', function (index) {
+                layer.close(index);
+                layui.admin.req({
+                    url: '/purchase/purchase_payment/clear/?id=' + data.purchase_order
+                    , done: function (res) {
+                        table.reload('datagrid', {});
+                    }
+                });
+            });
+        });
         $('#btn_query').on('click', function () {
             layer.open({
                 type: 1,

+ 2 - 1
uis/views/purchase/purchase_payment.html

@@ -141,6 +141,7 @@
                 ,{field:'amount', align:'right', title:'合同总金额', width:100}
                 ,{field:'apply_amount', align:'right', title:'申请金额', width:100}
                 ,{field:'actual_amount', align:'right', title:'实付金额', width:120}
+                ,{field:'is_clear_text', title:'是否结清', width:90}
                 ,{field:'create_time', title:'创建时间', width:150}
                 ,{field:'create_user_text', title:'创建人', width:100}
                 ,{field:'status_text', title:'审核状态', width: 100}
@@ -397,4 +398,4 @@
         })
     </script>
 </body>
-</html>
+</html>