瀏覽代碼

代码结束

任翠亮 5 年之前
父節點
當前提交
538e6a3899
共有 76 個文件被更改,包括 7485 次插入4215 次删除
  1. 14 0
      .idea/deployment.xml
  2. 7 0
      .idea/inspectionProfiles/profiles_settings.xml
  3. 4 0
      .idea/misc.xml
  4. 8 0
      .idea/modules.xml
  5. 6 0
      .idea/vcs.xml
  6. 13 0
      .idea/wanjia.iml
  7. 14 0
      .idea/webResources.xml
  8. 1355 0
      .idea/workspace.xml
  9. 4 0
      RED.txt
  10. 二進制
      awj/awj/__pycache__/__init__.cpython-36.pyc
  11. 二進制
      awj/awj/__pycache__/urls.cpython-36.pyc
  12. 二進制
      awj/awj/__pycache__/wsgi.cpython-36.pyc
  13. 二進制
      awj/awj/apps/PaymentOperation/__pycache__/__init__.cpython-36.pyc
  14. 二進制
      awj/awj/apps/PaymentOperation/__pycache__/admin.cpython-36.pyc
  15. 二進制
      awj/awj/apps/PaymentOperation/__pycache__/apps.cpython-36.pyc
  16. 二進制
      awj/awj/apps/PaymentOperation/__pycache__/models.cpython-36.pyc
  17. 二進制
      awj/awj/apps/PaymentOperation/__pycache__/urls.cpython-36.pyc
  18. 二進制
      awj/awj/apps/PaymentOperation/__pycache__/views.cpython-36.pyc
  19. 3 3
      awj/awj/apps/PaymentOperation/admin.py
  20. 5 5
      awj/awj/apps/PaymentOperation/apps.py
  21. 二進制
      awj/awj/apps/PaymentOperation/migrations/__pycache__/__init__.cpython-36.pyc
  22. 3 3
      awj/awj/apps/PaymentOperation/models.py
  23. 3 3
      awj/awj/apps/PaymentOperation/tests.py
  24. 7 7
      awj/awj/apps/PaymentOperation/urls.py
  25. 1123 914
      awj/awj/apps/PaymentOperation/views.py
  26. 二進制
      awj/awj/apps/salesinvoice/__pycache__/__init__.cpython-36.pyc
  27. 二進制
      awj/awj/apps/salesinvoice/__pycache__/admin.cpython-36.pyc
  28. 二進制
      awj/awj/apps/salesinvoice/__pycache__/apps.cpython-36.pyc
  29. 二進制
      awj/awj/apps/salesinvoice/__pycache__/models.cpython-36.pyc
  30. 二進制
      awj/awj/apps/salesinvoice/__pycache__/urls.cpython-36.pyc
  31. 二進制
      awj/awj/apps/salesinvoice/__pycache__/views.cpython-36.pyc
  32. 3 3
      awj/awj/apps/salesinvoice/admin.py
  33. 5 5
      awj/awj/apps/salesinvoice/apps.py
  34. 二進制
      awj/awj/apps/salesinvoice/migrations/__pycache__/__init__.cpython-36.pyc
  35. 3 3
      awj/awj/apps/salesinvoice/models.py
  36. 3 3
      awj/awj/apps/salesinvoice/tests.py
  37. 8 7
      awj/awj/apps/salesinvoice/urls.py
  38. 1145 1061
      awj/awj/apps/salesinvoice/views.py
  39. 二進制
      awj/awj/apps/stockinvoice/__pycache__/__init__.cpython-36.pyc
  40. 二進制
      awj/awj/apps/stockinvoice/__pycache__/admin.cpython-36.pyc
  41. 二進制
      awj/awj/apps/stockinvoice/__pycache__/apps.cpython-36.pyc
  42. 二進制
      awj/awj/apps/stockinvoice/__pycache__/models.cpython-36.pyc
  43. 二進制
      awj/awj/apps/stockinvoice/__pycache__/urls.cpython-36.pyc
  44. 二進制
      awj/awj/apps/stockinvoice/__pycache__/views.cpython-36.pyc
  45. 3 3
      awj/awj/apps/stockinvoice/admin.py
  46. 5 5
      awj/awj/apps/stockinvoice/apps.py
  47. 二進制
      awj/awj/apps/stockinvoice/migrations/__pycache__/__init__.cpython-36.pyc
  48. 3 3
      awj/awj/apps/stockinvoice/models.py
  49. 3 3
      awj/awj/apps/stockinvoice/tests.py
  50. 5 5
      awj/awj/apps/stockinvoice/urls.py
  51. 445 402
      awj/awj/apps/stockinvoice/views.py
  52. 1 4
      awj/awj/apps/stockinvoice/xixi.py
  53. 二進制
      awj/awj/setting/__pycache__/__init__.cpython-36.pyc
  54. 二進制
      awj/awj/setting/__pycache__/dev.cpython-36.pyc
  55. 204 204
      awj/awj/setting/dev.py
  56. 5 5
      awj/awj/setting/lianxi.py
  57. 25 25
      awj/awj/urls.py
  58. 二進制
      awj/awj/utils/__pycache__/__init__.cpython-36.pyc
  59. 二進制
      awj/awj/utils/__pycache__/cust_data.cpython-36.pyc
  60. 二進制
      awj/awj/utils/__pycache__/et_CACC_NO.cpython-36.pyc
  61. 二進制
      awj/awj/utils/__pycache__/examine_ood.cpython-36.pyc
  62. 二進制
      awj/awj/utils/__pycache__/if_account.cpython-36.pyc
  63. 二進制
      awj/awj/utils/__pycache__/invoice_dh.cpython-36.pyc
  64. 二進制
      awj/awj/utils/__pycache__/middleware.cpython-36.pyc
  65. 二進制
      awj/awj/utils/__pycache__/usr_data.cpython-36.pyc
  66. 19 14
      awj/awj/utils/cust_data.py
  67. 19 0
      awj/awj/utils/et_CACC_NO.py
  68. 18 18
      awj/awj/utils/examine_ood.py
  69. 23 0
      awj/awj/utils/if_account.py
  70. 22 22
      awj/awj/utils/invoice_dh.py
  71. 33 23
      awj/awj/utils/middleware.py
  72. 13 13
      awj/awj/utils/usr_data.py
  73. 25 16
      awj/awj/wsgi.py
  74. 2851 1411
      awj/logs/hwj.log
  75. 22 22
      awj/manage.py
  76. 5 0
      qqq.txt

+ 14 - 0
.idea/deployment.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="PublishConfigData">
+    <serverData>
+      <paths name="toutiao">
+        <serverdata>
+          <mappings>
+            <mapping local="$PROJECT_DIR$" web="/" />
+          </mappings>
+        </serverdata>
+      </paths>
+    </serverData>
+  </component>
+</project>

+ 7 - 0
.idea/inspectionProfiles/profiles_settings.xml

@@ -0,0 +1,7 @@
+<component name="InspectionProjectProfileManager">
+  <settings>
+    <option name="useProjectProfile" value="false" />
+    <option name="USE_PROJECT_PROFILE" value="false" />
+    <version value="1.0" />
+  </settings>
+</component>

+ 4 - 0
.idea/misc.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.6.3 virtualenv at C:\Users\12446\Envs\ceshi" project-jdk-type="Python SDK" />
+</project>

+ 8 - 0
.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/wanjia.iml" filepath="$PROJECT_DIR$/.idea/wanjia.iml" />
+    </modules>
+  </component>
+</project>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>

+ 13 - 0
.idea/wanjia.iml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="PYTHON_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/awj/awj" isTestSource="false" />
+    </content>
+    <orderEntry type="jdk" jdkName="Python 3.6.3 virtualenv at C:\Users\12446\Envs\ceshi" jdkType="Python SDK" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+  <component name="TestRunnerService">
+    <option name="PROJECT_TEST_RUNNER" value="Unittests" />
+  </component>
+</module>

+ 14 - 0
.idea/webResources.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="WebResourcesPaths">
+    <contentEntries>
+      <entry url="file://$PROJECT_DIR$">
+        <entryData>
+          <resourceRoots>
+            <path value="file://$PROJECT_DIR$/awj/awj/apps" />
+          </resourceRoots>
+        </entryData>
+      </entry>
+    </contentEntries>
+  </component>
+</project>

+ 1355 - 0
.idea/workspace.xml

@@ -0,0 +1,1355 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ChangeListManager">
+    <list default="true" id="dfd12a5c-7c33-415d-9f50-070ce9f4f8ce" name="Default" comment="代码结束">
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/webResources.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/awj/awj/utils/et_CACC_NO.py" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/awj/awj/utils/if_account.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/apps/PaymentOperation/admin.py" afterPath="$PROJECT_DIR$/awj/awj/apps/PaymentOperation/admin.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/apps/PaymentOperation/apps.py" afterPath="$PROJECT_DIR$/awj/awj/apps/PaymentOperation/apps.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/apps/PaymentOperation/models.py" afterPath="$PROJECT_DIR$/awj/awj/apps/PaymentOperation/models.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/apps/PaymentOperation/tests.py" afterPath="$PROJECT_DIR$/awj/awj/apps/PaymentOperation/tests.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/apps/PaymentOperation/urls.py" afterPath="$PROJECT_DIR$/awj/awj/apps/PaymentOperation/urls.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/apps/PaymentOperation/views.py" afterPath="$PROJECT_DIR$/awj/awj/apps/PaymentOperation/views.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/apps/salesinvoice/admin.py" afterPath="$PROJECT_DIR$/awj/awj/apps/salesinvoice/admin.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/apps/salesinvoice/apps.py" afterPath="$PROJECT_DIR$/awj/awj/apps/salesinvoice/apps.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/apps/salesinvoice/models.py" afterPath="$PROJECT_DIR$/awj/awj/apps/salesinvoice/models.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/apps/salesinvoice/tests.py" afterPath="$PROJECT_DIR$/awj/awj/apps/salesinvoice/tests.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/apps/salesinvoice/urls.py" afterPath="$PROJECT_DIR$/awj/awj/apps/salesinvoice/urls.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/apps/salesinvoice/views.py" afterPath="$PROJECT_DIR$/awj/awj/apps/salesinvoice/views.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/apps/stockinvoice/admin.py" afterPath="$PROJECT_DIR$/awj/awj/apps/stockinvoice/admin.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/apps/stockinvoice/apps.py" afterPath="$PROJECT_DIR$/awj/awj/apps/stockinvoice/apps.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/apps/stockinvoice/models.py" afterPath="$PROJECT_DIR$/awj/awj/apps/stockinvoice/models.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/apps/stockinvoice/tests.py" afterPath="$PROJECT_DIR$/awj/awj/apps/stockinvoice/tests.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/apps/stockinvoice/urls.py" afterPath="$PROJECT_DIR$/awj/awj/apps/stockinvoice/urls.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/apps/stockinvoice/views.py" afterPath="$PROJECT_DIR$/awj/awj/apps/stockinvoice/views.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/apps/stockinvoice/xixi.py" afterPath="$PROJECT_DIR$/awj/awj/apps/stockinvoice/xixi.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/setting/dev.py" afterPath="$PROJECT_DIR$/awj/awj/setting/dev.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/setting/lianxi.py" afterPath="$PROJECT_DIR$/awj/awj/setting/lianxi.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/urls.py" afterPath="$PROJECT_DIR$/awj/awj/urls.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/utils/cust_data.py" afterPath="$PROJECT_DIR$/awj/awj/utils/cust_data.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/utils/examine_ood.py" afterPath="$PROJECT_DIR$/awj/awj/utils/examine_ood.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/utils/invoice_dh.py" afterPath="$PROJECT_DIR$/awj/awj/utils/invoice_dh.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/utils/middleware.py" afterPath="$PROJECT_DIR$/awj/awj/utils/middleware.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/utils/usr_data.py" afterPath="$PROJECT_DIR$/awj/awj/utils/usr_data.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/awj/wsgi.py" afterPath="$PROJECT_DIR$/awj/awj/wsgi.py" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/logs/hwj.log" afterPath="$PROJECT_DIR$/awj/logs/hwj.log" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/awj/manage.py" afterPath="$PROJECT_DIR$/awj/manage.py" />
+    </list>
+    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
+    <option name="TRACKING_ENABLED" value="true" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="CoverageDataManager">
+    <SUITE FILE_PATH="coverage/wanjia$payment_order.coverage" NAME="payment_order Coverage Results" MODIFIED="1571621880643" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/awj/awj/utils" />
+    <SUITE FILE_PATH="coverage/wanjia$lianxi.coverage" NAME="lianxi Coverage Results" MODIFIED="1571323191887" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/awj/awj/setting" />
+    <SUITE FILE_PATH="coverage/wanjia$xixi__1_.coverage" NAME="xixi (1) Coverage Results" MODIFIED="1572786070217" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/awj/awj/apps/stockinvoice" />
+    <SUITE FILE_PATH="coverage/wanjia$a.coverage" NAME="a Coverage Results" MODIFIED="1571234756857" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
+    <SUITE FILE_PATH="coverage/wanjia$manage.coverage" NAME="manage Coverage Results" MODIFIED="1573644329658" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/awj" />
+    <SUITE FILE_PATH="coverage/wanjia$xixi.coverage" NAME="xixi Coverage Results" MODIFIED="1571566034339" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/awj/awj/apps" />
+  </component>
+  <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
+  <component name="FileEditorManager">
+    <leaf>
+      <file leaf-file-name="views.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/awj/awj/apps/stockinvoice/views.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="-378">
+              <caret line="18" column="27" lean-forward="false" selection-start-line="18" selection-start-column="16" selection-end-line="18" selection-end-column="27" />
+              <folding>
+                <element signature="e#10081#19332#0" expanded="false" />
+                <element signature="e#19398#23319#0" expanded="false" />
+                <marker date="1573644329326" expanded="true" signature="4690:4900" ph="INSERT INTO MF_PSS... " />
+                <marker date="1573644329326" expanded="true" signature="5164:5337" ph="INSERT INTO TF_PSS... " />
+                <marker date="1573644329326" expanded="true" signature="5487:5732" ph="INSERT INTO INV_NO... " />
+                <marker date="1573644329326" expanded="true" signature="6014:6213" ph="INSERT INTO MF_ARP... " />
+                <marker date="1573644329326" expanded="true" signature="6522:6823" ph="INSERT INTO MF_LZ1... " />
+                <marker date="1573644329326" expanded="true" signature="7173:7389" ph="INSERT INTO TF_LZ1... " />
+                <marker date="1573644329326" expanded="true" signature="7552:7609" ph="UPDATE TF_PS... " />
+                <marker date="1573644329326" expanded="true" signature="8122:8350" ph="INSERT INTO MF_PSS... " />
+                <marker date="1573644329326" expanded="true" signature="8733:8910" ph="INSERT INTO TF_PSS... " />
+                <marker date="1573644329326" expanded="true" signature="9141:9356" ph="INSERT INTO MF_ARP... " />
+                <marker date="1573644329326" expanded="true" signature="13825:13938" ph="UPDATE MF_PS... " />
+                <marker date="1573644329326" expanded="true" signature="14262:14380" ph="UPDATE TF_PS... " />
+                <marker date="1573644329326" expanded="true" signature="14544:14729" ph="UPDATE INV_N... " />
+                <marker date="1573644329326" expanded="true" signature="15547:15665" ph="UPDATE MF_AR... " />
+                <marker date="1573644329326" expanded="true" signature="16325:16458" ph="UPDATE MF_LZ... " />
+                <marker date="1573644329326" expanded="true" signature="17065:17141" ph="UPDATE TF_LZ... " />
+                <marker date="1573644329326" expanded="true" signature="17409:17481" ph="UPDATE TF_PS... " />
+                <marker date="1573644329326" expanded="true" signature="17943:18056" ph="UPDATE MF_PS... " />
+                <marker date="1573644329326" expanded="true" signature="18411:18504" ph="UPDATE TF_PS... " />
+                <marker date="1573644329326" expanded="true" signature="18724:18832" ph="UPDATE MF_AR... " />
+                <marker date="1573644329326" expanded="true" signature="20823:20860" ph="SELECT COUNT... missing_value" />
+                <marker date="1573644329326" expanded="true" signature="21160:21209" ph="DELETE FROM " />
+                <marker date="1573644329326" expanded="true" signature="21294:21343" ph="DELETE FROM " />
+                <marker date="1573644329326" expanded="true" signature="21425:21475" ph="DELETE FROM " />
+                <marker date="1573644329326" expanded="true" signature="21555:21606" ph="DELETE FROM " />
+                <marker date="1573644329326" expanded="true" signature="21690:21738" ph="DELETE FROM " />
+                <marker date="1573644329326" expanded="true" signature="21834:21882" ph="DELETE FROM " />
+                <marker date="1573644329326" expanded="true" signature="22315:22352" ph="SELECT COUNT... missing_value" />
+                <marker date="1573644329326" expanded="true" signature="22619:22667" ph="DELETE FROM " />
+                <marker date="1573644329326" expanded="true" signature="22763:22811" ph="DELETE FROM " />
+                <marker date="1573644329326" expanded="true" signature="22907:22957" ph="DELETE FROM " />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="cust_data.py" pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/awj/awj/utils/cust_data.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="513">
+              <caret line="19" column="0" lean-forward="true" selection-start-line="19" selection-start-column="0" selection-end-line="19" selection-end-column="0" />
+              <folding>
+                <marker date="1573644366090" expanded="true" signature="287:328" ph="SELECT COUNT... CUST" />
+                <marker date="1573644366090" expanded="true" signature="429:866" ph="INSERT INTO CUST... " />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="urls.py" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/awj/awj/apps/stockinvoice/urls.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="81">
+              <caret line="4" column="50" lean-forward="true" selection-start-line="4" selection-start-column="50" selection-end-line="4" selection-end-column="50" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+    </leaf>
+  </component>
+  <component name="FileTemplateManagerImpl">
+    <option name="RECENT_TEMPLATES">
+      <list>
+        <option value="Python Script" />
+      </list>
+    </option>
+  </component>
+  <component name="FindInProjectRecents">
+    <findStrings>
+      <find>LOGGING</find>
+      <find>TITLE_BUY</find>
+      <find>UNI_NO_PAY</find>
+      <find>SAL_ADR</find>
+      <find>SAL_KH_BANK</find>
+      <find>SAL_ID_CODE</find>
+      <find>MF_PSS</find>
+      <find>CartView</find>
+      <find>BookInfoDetailGenericAPIView</find>
+      <find>REM</find>
+      <find>CUR_ID</find>
+      <find>LP</find>
+      <find>TAX_ID</find>
+      <find>rem</find>
+      <find>服務費用</find>
+      <find>BIL_DD</find>
+      <find>AMTN_CLS</find>
+      <find>PT</find>
+      <find>AP</find>
+      <find>PC</find>
+      <find>ALLOWED_HOSTS</find>
+      <find>DEBUG</find>
+      <find>JsonResponse</find>
+      <find>CACC_NO</find>
+      <find>TF_MON</find>
+    </findStrings>
+    <replaceStrings>
+      <replace>安装费用</replace>
+    </replaceStrings>
+  </component>
+  <component name="Git.Settings">
+    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+  </component>
+  <component name="IdeDocumentHistory">
+    <option name="CHANGED_PATHS">
+      <list>
+        <option value="$PROJECT_DIR$/a.py" />
+        <option value="$PROJECT_DIR$/awj/awj/apps/stockinvoice/migrations/urls.py" />
+        <option value="$PROJECT_DIR$/awj/awj/setting/lianxi.py" />
+        <option value="$PROJECT_DIR$/awj/awj/utils.py" />
+        <option value="$PROJECT_DIR$/awj/awj/utils/initial_value.py" />
+        <option value="$PROJECT_DIR$/awj/awj/utils/customer_data.py" />
+        <option value="$PROJECT_DIR$/awj/awj/utils/judge_bills.py" />
+        <option value="$PROJECT_DIR$/awj/awj/utils/Payment order.py" />
+        <option value="$PROJECT_DIR$/awj/awj/apps/xixi.py" />
+        <option value="$PROJECT_DIR$/awj/awj/utils/payment_order.py" />
+        <option value="$PROJECT_DIR$/awj/awj/utils/invoice_order.py" />
+        <option value="$PROJECT_DIR$/awj/awj/apps/PaymentOperation/urls.py" />
+        <option value="$PROJECT_DIR$/awj/awj/utils/invoice_dh.py" />
+        <option value="$PROJECT_DIR$/awj/awj/utils/examine_ood.py" />
+        <option value="$PROJECT_DIR$/awj/logs/hwj.log" />
+        <option value="$PROJECT_DIR$/awj/awj/urls.py" />
+        <option value="$PROJECT_DIR$/awj/awj/apps/salesinvoice/urls.py" />
+        <option value="$PROJECT_DIR$/awj/awj/apps/stockinvoice/xixi.py" />
+        <option value="$PROJECT_DIR$/Apache24/conf/extra/httpd-ssl.conf" />
+        <option value="$PROJECT_DIR$/awj/awj/wsgi.py" />
+        <option value="$PROJECT_DIR$/Apache24/conf/httpd.conf" />
+        <option value="$PROJECT_DIR$/awj/manage.py" />
+        <option value="$PROJECT_DIR$/awj/awj/apps/stockinvoice/urls.py" />
+        <option value="$PROJECT_DIR$/qqq.txt" />
+        <option value="$PROJECT_DIR$/awj/awj/utils/middleware.py" />
+        <option value="$PROJECT_DIR$/awj/awj/setting/dev.py" />
+        <option value="$PROJECT_DIR$/awj/awj/utils/usr_data.py" />
+        <option value="$PROJECT_DIR$/awj/awj/utils/et_CACC_NO.py" />
+        <option value="$PROJECT_DIR$/awj/awj/utils/if_account.py" />
+        <option value="$PROJECT_DIR$/awj/awj/apps/salesinvoice/views.py" />
+        <option value="$PROJECT_DIR$/awj/awj/apps/PaymentOperation/views.py" />
+        <option value="$PROJECT_DIR$/awj/awj/apps/stockinvoice/views.py" />
+        <option value="$PROJECT_DIR$/awj/awj/utils/cust_data.py" />
+      </list>
+    </option>
+  </component>
+  <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
+  <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
+  <component name="JsGulpfileManager">
+    <detection-done>true</detection-done>
+    <sorting>DEFINITION_ORDER</sorting>
+  </component>
+  <component name="ProjectFrameBounds">
+    <option name="x" value="-8" />
+    <option name="y" value="-8" />
+    <option name="width" value="1936" />
+    <option name="height" value="1056" />
+  </component>
+  <component name="ProjectView">
+    <navigator currentView="ProjectPane" proportions="" version="1">
+      <flattenPackages />
+      <showMembers />
+      <showModules />
+      <showLibraryContents />
+      <hideEmptyPackages />
+      <abbreviatePackageNames />
+      <autoscrollToSource />
+      <autoscrollFromSource />
+      <sortByType />
+      <manualOrder />
+      <foldersAlwaysOnTop value="true" />
+    </navigator>
+    <panes>
+      <pane id="Scratches" />
+      <pane id="Scope" />
+      <pane id="ProjectPane">
+        <subPane>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="wanjia" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="wanjia" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="wanjia" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="wanjia" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="awj" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+        </subPane>
+      </pane>
+    </panes>
+  </component>
+  <component name="PropertiesComponent">
+    <property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" />
+    <property name="last_opened_file_path" value="$USER_HOME$/Envs/ceshi/Scripts/python.exe" />
+    <property name="WebServerToolWindowFactoryState" value="true" />
+  </component>
+  <component name="RecentsManager">
+    <key name="MoveFile.RECENT_KEYS">
+      <recent name="E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice" />
+      <recent name="E:\12446\PycharmProjects\wangli\wanjia\awj\awj\setting" />
+    </key>
+    <key name="CopyFile.RECENT_KEYS">
+      <recent name="E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice" />
+      <recent name="E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils" />
+      <recent name="E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice" />
+      <recent name="E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation" />
+    </key>
+  </component>
+  <component name="RunDashboard">
+    <option name="ruleStates">
+      <list>
+        <RuleState>
+          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
+        </RuleState>
+        <RuleState>
+          <option name="name" value="StatusDashboardGroupingRule" />
+        </RuleState>
+      </list>
+    </option>
+  </component>
+  <component name="RunManager" selected="Python.manage">
+    <configuration default="false" name="lianxi" type="PythonConfigurationType" factoryName="Python" temporary="true">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/awj/awj/setting" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="wanjia" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/awj/awj/setting/lianxi.py" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <option name="EMULATE_TERMINAL" value="false" />
+      <method />
+    </configuration>
+    <configuration default="false" name="xixi" type="PythonConfigurationType" factoryName="Python" temporary="true">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/awj/awj/apps" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="wanjia" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/awj/awj/apps/xixi.py" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <option name="EMULATE_TERMINAL" value="false" />
+      <method />
+    </configuration>
+    <configuration default="false" name="xixi (1)" type="PythonConfigurationType" factoryName="Python" temporary="true">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/awj/awj/apps/stockinvoice" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="wanjia" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/awj/awj/apps/stockinvoice/xixi.py" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <option name="EMULATE_TERMINAL" value="false" />
+      <method />
+    </configuration>
+    <configuration default="false" name="payment_order" type="PythonConfigurationType" factoryName="Python" temporary="true">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/awj/awj/utils" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="wanjia" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/awj/awj/utils/payment_order.py" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <option name="EMULATE_TERMINAL" value="false" />
+      <method />
+    </configuration>
+    <configuration default="false" name="manage" type="PythonConfigurationType" factoryName="Python" temporary="true">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/awj" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="wanjia" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/awj/manage.py" />
+      <option name="PARAMETERS" value="runserver 0.0.0.0:8000" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <option name="EMULATE_TERMINAL" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="DjangoTestsConfigurationType" factoryName="Django tests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="wanjia" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="TARGET" value="" />
+      <option name="SETTINGS_FILE" value="" />
+      <option name="CUSTOM_SETTINGS" value="false" />
+      <option name="USE_OPTIONS" value="false" />
+      <option name="OPTIONS" value="" />
+      <method />
+    </configuration>
+    <configuration default="true" type="JavaScriptTestRunnerJest" factoryName="Jest">
+      <node-interpreter value="project" />
+      <working-dir value="" />
+      <envs />
+      <scope-kind value="ALL" />
+      <method />
+    </configuration>
+    <configuration default="true" type="JavaScriptTestRunnerProtractor" factoryName="Protractor">
+      <config-file value="" />
+      <node-interpreter value="project" />
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
+      <method />
+    </configuration>
+    <configuration default="true" type="PyBehaveRunConfigurationType" factoryName="Behave">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="wanjia" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="ADDITIONAL_ARGS" value="" />
+      <method />
+    </configuration>
+    <configuration default="true" type="PyLettuceRunConfigurationType" factoryName="Lettuce">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="wanjia" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="ADDITIONAL_ARGS" value="" />
+      <method />
+    </configuration>
+    <configuration default="true" type="PythonConfigurationType" factoryName="Python">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="wanjia" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <option name="EMULATE_TERMINAL" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="Tox" factoryName="Tox">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <module name="wanjia" />
+      <method />
+    </configuration>
+    <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
+      <node-interpreter>project</node-interpreter>
+      <node-options />
+      <gulpfile />
+      <tasks />
+      <arguments />
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="js.build_tools.npm" factoryName="npm">
+      <command value="run" />
+      <scripts />
+      <node-interpreter value="project" />
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Doctests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="wanjia" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Unittests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="wanjia" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="_new_additionalArguments" value="&quot;&quot;" />
+      <option name="_new_target" value="&quot;.&quot;" />
+      <option name="_new_targetType" value="&quot;PATH&quot;" />
+      <method />
+    </configuration>
+    <list size="5">
+      <item index="0" class="java.lang.String" itemvalue="Python.lianxi" />
+      <item index="1" class="java.lang.String" itemvalue="Python.xixi" />
+      <item index="2" class="java.lang.String" itemvalue="Python.xixi (1)" />
+      <item index="3" class="java.lang.String" itemvalue="Python.payment_order" />
+      <item index="4" class="java.lang.String" itemvalue="Python.manage" />
+    </list>
+    <recent_temporary>
+      <list size="5">
+        <item index="0" class="java.lang.String" itemvalue="Python.manage" />
+        <item index="1" class="java.lang.String" itemvalue="Python.xixi (1)" />
+        <item index="2" class="java.lang.String" itemvalue="Python.payment_order" />
+        <item index="3" class="java.lang.String" itemvalue="Python.xixi" />
+        <item index="4" class="java.lang.String" itemvalue="Python.lianxi" />
+      </list>
+    </recent_temporary>
+  </component>
+  <component name="ShelveChangesManager" show_recycled="false">
+    <option name="remove_strategy" value="false" />
+  </component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="dfd12a5c-7c33-415d-9f50-070ce9f4f8ce" name="Default" comment="" />
+      <created>1571229283327</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1571229283327</updated>
+    </task>
+    <task id="LOCAL-00001" summary="设置配置文件">
+      <created>1571275292774</created>
+      <option name="number" value="00001" />
+      <option name="presentableId" value="LOCAL-00001" />
+      <option name="project" value="LOCAL" />
+      <updated>1571275292774</updated>
+    </task>
+    <task id="LOCAL-00002" summary="设置配置文件">
+      <created>1571275339622</created>
+      <option name="number" value="00002" />
+      <option name="presentableId" value="LOCAL-00002" />
+      <option name="project" value="LOCAL" />
+      <updated>1571275339622</updated>
+    </task>
+    <task id="LOCAL-00003" summary="项目配置完成">
+      <created>1571299481315</created>
+      <option name="number" value="00003" />
+      <option name="presentableId" value="LOCAL-00003" />
+      <option name="project" value="LOCAL" />
+      <updated>1571299481315</updated>
+    </task>
+    <task id="LOCAL-00004" summary="进货开票子应用">
+      <created>1571325996117</created>
+      <option name="number" value="00004" />
+      <option name="presentableId" value="LOCAL-00004" />
+      <option name="project" value="LOCAL" />
+      <updated>1571325996117</updated>
+    </task>
+    <task id="LOCAL-00005" summary="进货开票子应用">
+      <created>1571326062135</created>
+      <option name="number" value="00005" />
+      <option name="presentableId" value="LOCAL-00005" />
+      <option name="project" value="LOCAL" />
+      <updated>1571326062135</updated>
+    </task>
+    <task id="LOCAL-00006" summary="今天代码结束">
+      <created>1571326165812</created>
+      <option name="number" value="00006" />
+      <option name="presentableId" value="LOCAL-00006" />
+      <option name="project" value="LOCAL" />
+      <updated>1571326165812</updated>
+    </task>
+    <task id="LOCAL-00007" summary="今天代码结束">
+      <created>1571400469240</created>
+      <option name="number" value="00007" />
+      <option name="presentableId" value="LOCAL-00007" />
+      <option name="project" value="LOCAL" />
+      <updated>1571400469240</updated>
+    </task>
+    <task id="LOCAL-00008" summary="今天代码结束">
+      <created>1571494458494</created>
+      <option name="number" value="00008" />
+      <option name="presentableId" value="LOCAL-00008" />
+      <option name="project" value="LOCAL" />
+      <updated>1571494458494</updated>
+    </task>
+    <task id="LOCAL-00009" summary="今天代码结束">
+      <created>1571570056980</created>
+      <option name="number" value="00009" />
+      <option name="presentableId" value="LOCAL-00009" />
+      <option name="project" value="LOCAL" />
+      <updated>1571570056980</updated>
+    </task>
+    <task id="LOCAL-00010" summary="今天代7点的码结束">
+      <created>1571654919057</created>
+      <option name="number" value="00010" />
+      <option name="presentableId" value="LOCAL-00010" />
+      <option name="project" value="LOCAL" />
+      <updated>1571654919057</updated>
+    </task>
+    <task id="LOCAL-00011" summary="今天代7点的码结束">
+      <created>1571829596638</created>
+      <option name="number" value="00011" />
+      <option name="presentableId" value="LOCAL-00011" />
+      <option name="project" value="LOCAL" />
+      <updated>1571829596638</updated>
+    </task>
+    <task id="LOCAL-00012" summary="今天代7点的码结束">
+      <created>1572005236968</created>
+      <option name="number" value="00012" />
+      <option name="presentableId" value="LOCAL-00012" />
+      <option name="project" value="LOCAL" />
+      <updated>1572005236968</updated>
+    </task>
+    <task id="LOCAL-00013" summary="今天代7点的码结束">
+      <created>1572086255593</created>
+      <option name="number" value="00013" />
+      <option name="presentableId" value="LOCAL-00013" />
+      <option name="project" value="LOCAL" />
+      <updated>1572086255593</updated>
+    </task>
+    <task id="LOCAL-00014" summary="今天代7点的码结束">
+      <created>1572357463991</created>
+      <option name="number" value="00014" />
+      <option name="presentableId" value="LOCAL-00014" />
+      <option name="project" value="LOCAL" />
+      <updated>1572357463991</updated>
+    </task>
+    <task id="LOCAL-00015" summary="今天代7点的码结束">
+      <created>1572433609319</created>
+      <option name="number" value="00015" />
+      <option name="presentableId" value="LOCAL-00015" />
+      <option name="project" value="LOCAL" />
+      <updated>1572433609319</updated>
+    </task>
+    <task id="LOCAL-00016" summary="今天代7点的码结束">
+      <created>1572602570119</created>
+      <option name="number" value="00016" />
+      <option name="presentableId" value="LOCAL-00016" />
+      <option name="project" value="LOCAL" />
+      <updated>1572602570119</updated>
+    </task>
+    <option name="localTasksCounter" value="17" />
+    <servers />
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="-8" y="-8" width="1936" height="1056" extended-state="6" />
+    <layout>
+      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
+      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.329718" sideWeight="0.5021322" order="7" side_tool="true" content_ui="tabs" />
+      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
+      <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.30802602" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Terminal" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.26898047" sideWeight="0.4978678" order="9" side_tool="false" content_ui="tabs" />
+      <window_info id="Remote Host" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.15458423" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
+      <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
+      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.45770064" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Data View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+    </layout>
+  </component>
+  <component name="TypeScriptGeneratedFilesManager">
+    <option name="processedProjectFiles" value="true" />
+  </component>
+  <component name="VcsContentAnnotationSettings">
+    <option name="myLimit" value="2678400000" />
+  </component>
+  <component name="VcsManagerConfiguration">
+    <MESSAGE value="设置配置文件" />
+    <MESSAGE value="项目配置完成" />
+    <MESSAGE value="进货开票子应用" />
+    <MESSAGE value="今天代码结束" />
+    <MESSAGE value="今天代7点的码结束" />
+    <MESSAGE value="调整银行编码判断" />
+    <MESSAGE value="代码结束" />
+    <option name="LAST_COMMIT_MESSAGE" value="代码结束" />
+  </component>
+  <component name="XDebuggerManager">
+    <breakpoint-manager>
+      <option name="time" value="22" />
+    </breakpoint-manager>
+    <watches-manager>
+      <configuration name="PythonConfigurationType">
+        <watch expression="request.body" language="Python" />
+      </configuration>
+    </watches-manager>
+  </component>
+  <component name="editorHistoryManager">
+    <entry file="file://F:/python/03Django/02Django_上上项目/0610_day14/2_code/meiduo12/meiduo_mall/meiduo_mall/apps/oauth/views.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-2651">
+          <caret line="15" column="3" lean-forward="true" selection-start-line="15" selection-start-column="3" selection-end-line="15" selection-end-column="3" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://F:/python/03Django/02Django_上上项目/0610_day14/2_code/meiduo12/meiduo_mall/meiduo_mall/apps/orders/views.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-5702">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://F:/python/03Django/02Django_上上项目/0610_day14/2_code/meiduo12/meiduo_mall/meiduo_mall/apps/payment/views.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://F:/python/03Django/02Django_上上项目/0618_day17_drf/2_code/day17/booktest/views.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="243">
+          <caret line="162" column="34" lean-forward="false" selection-start-line="162" selection-start-column="6" selection-end-line="162" selection-end-column="34" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://F:/python/03Django/02Django_上上项目/0618_day17_drf/2_code/day17/booktest/urls.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="240">
+          <caret line="12" column="74" lean-forward="false" selection-start-line="12" selection-start-column="46" selection-end-line="12" selection-end-column="74" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/utils.py" />
+    <entry file="file://$PROJECT_DIR$/awj/awj/apps/PaymentOperation/apps.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="81">
+          <caret line="3" column="15" lean-forward="false" selection-start-line="3" selection-start-column="15" selection-end-line="3" selection-end-column="15" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/apps/stockinvoice/apps.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="81">
+          <caret line="3" column="19" lean-forward="false" selection-start-line="3" selection-start-column="19" selection-end-line="3" selection-end-column="19" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/apps/stockinvoice/tests.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/apps/xixi.py" />
+    <entry file="file://$PROJECT_DIR$/awj/awj/utils/payment_order.py" />
+    <entry file="file://$USER_HOME$/Envs/awj/Lib/site-packages/django/utils/deprecation.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="255">
+          <caret line="90" column="0" lean-forward="false" selection-start-line="90" selection-start-column="0" selection-end-line="90" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/../../../AppData/Lib/_strptime.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="358">
+          <caret line="564" column="0" lean-forward="false" selection-start-line="564" selection-start-column="0" selection-end-line="564" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$USER_HOME$/Envs/awj/Lib/site-packages/django/core/handlers/exception.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="513">
+          <caret line="33" column="0" lean-forward="false" selection-start-line="33" selection-start-column="0" selection-end-line="33" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$USER_HOME$/Envs/awj/Lib/site-packages/django/core/handlers/base.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="175">
+          <caret line="123" column="0" lean-forward="false" selection-start-line="123" selection-start-column="0" selection-end-line="123" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$USER_HOME$/Envs/awj/Lib/site-packages/django/views/generic/base.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="145">
+          <caret line="67" column="0" lean-forward="false" selection-start-line="67" selection-start-column="0" selection-end-line="67" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$USER_HOME$/Envs/awj/Lib/site-packages/django/db/transaction.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="157">
+          <caret line="56" column="0" lean-forward="false" selection-start-line="56" selection-start-column="0" selection-end-line="56" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://F:/python/03Django/02Django_上上项目/0608_day12/2_code/meiduo12/meiduo_mall/meiduo_mall/apps/goods/views.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="456">
+          <caret line="163" column="52" lean-forward="false" selection-start-line="163" selection-start-column="52" selection-end-line="163" selection-end-column="52" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/utils/response_code.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/apps/salesinvoice/apps.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="135">
+          <caret line="5" column="0" lean-forward="true" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/urls.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="454">
+          <caret line="22" column="44" lean-forward="true" selection-start-line="22" selection-start-column="44" selection-end-line="22" selection-end-column="44" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$USER_HOME$/Envs/awj/Lib/site-packages/django/http/response.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="157">
+          <caret line="288" column="0" lean-forward="false" selection-start-line="288" selection-start-column="0" selection-end-line="288" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/apps/stockinvoice/xixi.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://F:/python/03Django/02Django_上上项目/0628_day25/2_code/day25/meiduo12/meiduo_mall/meiduo_mall/settings/dev.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="729">
+          <caret line="27" column="46" lean-forward="false" selection-start-line="27" selection-start-column="35" selection-end-line="27" selection-end-column="46" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/logs/hwj.log">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="634">
+          <caret line="1392" column="25" lean-forward="false" selection-start-line="1392" selection-start-column="25" selection-end-line="1392" selection-end-column="25" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://F:/python/03Django/02Django_上上项目/0608_day12/2_code/meiduo12/meiduo_mall/meiduo_mall/wsgi.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="405">
+          <caret line="15" column="24" lean-forward="true" selection-start-line="15" selection-start-column="24" selection-end-line="15" selection-end-column="24" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://F:/python/03Django/02Django_上上项目/0625_day23/2_code/day23/meiduo12/meiduo_mall/meiduo_mall/wsgi.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="378">
+          <caret line="14" column="0" lean-forward="true" selection-start-line="14" selection-start-column="0" selection-end-line="14" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/Apache24/conf/extra/httpd-ssl.conf" />
+    <entry file="file://$PROJECT_DIR$/Apache24/conf/httpd.conf" />
+    <entry file="file://$PROJECT_DIR$/awj/awj/wsgi.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="270">
+          <caret line="10" column="0" lean-forward="false" selection-start-line="10" selection-start-column="0" selection-end-line="10" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$USER_HOME$/Envs/ceshi/Lib/site-packages/django/db/backends/base/base.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="170">
+          <caret line="216" column="0" lean-forward="false" selection-start-line="216" selection-start-column="0" selection-end-line="216" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/qqq.txt" />
+    <entry file="file://$USER_HOME$/Envs/ceshi/Lib/site-packages/django/http/response.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="296">
+          <caret line="550" column="28" lean-forward="true" selection-start-line="550" selection-start-column="28" selection-end-line="550" selection-end-column="28" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://F:/python/03Django/02Django_上上项目/0609_day13/2_code/meiduo12/meiduo_mall/meiduo_mall/apps/users/views.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="418">
+          <caret line="458" column="32" lean-forward="false" selection-start-line="458" selection-start-column="20" selection-end-line="458" selection-end-column="32" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://F:/python/03Django/02Django_上上项目/0609_day13/2_code/meiduo12/meiduo_mall/meiduo_mall/apps/orders/views.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="193">
+          <caret line="189" column="32" lean-forward="false" selection-start-line="189" selection-start-column="20" selection-end-line="189" selection-end-column="32" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/RED.txt" />
+    <entry file="file://$PROJECT_DIR$/awj/manage.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="108">
+          <caret line="4" column="26" lean-forward="false" selection-start-line="4" selection-start-column="26" selection-end-line="4" selection-end-column="26" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/utils/examine_ood.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="18" selection-end-column="24" />
+          <folding>
+            <marker date="1572003251822" expanded="true" signature="247:296" ph="SELECT COUNT... missing_value" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/utils/invoice_dh.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="270">
+          <caret line="12" column="32" lean-forward="true" selection-start-line="12" selection-start-column="32" selection-end-line="12" selection-end-column="32" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/apps/PaymentOperation/urls.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="108">
+          <caret line="5" column="29" lean-forward="false" selection-start-line="5" selection-start-column="11" selection-end-line="5" selection-end-column="29" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/setting/dev.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1377">
+          <caret line="51" column="45" lean-forward="false" selection-start-line="51" selection-start-column="45" selection-end-line="51" selection-end-column="45" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/utils/et_CACC_NO.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="17" selection-end-column="19" />
+          <folding>
+            <marker date="1573609237112" expanded="true" signature="184:224" ph="SELECT COUNT... BACC" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/utils/middleware.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="135">
+          <caret line="10" column="20" lean-forward="false" selection-start-line="10" selection-start-column="12" selection-end-line="10" selection-end-column="20" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/apps/salesinvoice/urls.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="135">
+          <caret line="6" column="26" lean-forward="false" selection-start-line="6" selection-start-column="11" selection-end-line="6" selection-end-column="26" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/apps/PaymentOperation/views.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="432">
+          <caret line="389" column="34" lean-forward="false" selection-start-line="389" selection-start-column="34" selection-end-line="389" selection-end-column="34" />
+          <folding>
+            <element signature="e#517#1269#0" expanded="false" />
+            <element signature="e#1333#9411#0" expanded="false" />
+            <element signature="e#5224#5245#0" expanded="false" />
+            <element signature="e#9473#15841#0" expanded="false" />
+            <element signature="e#15906#19667#0" expanded="false" />
+            <element signature="e#19715#34316#0" expanded="false" />
+            <element signature="e#19901#26636#0" expanded="false" />
+            <element signature="e#34365#54961#0" expanded="false" />
+            <element signature="e#34421#35233#0" expanded="false" />
+            <element signature="e#35297#43851#0" expanded="false" />
+            <element signature="e#43913#51332#0" expanded="false" />
+            <element signature="e#51397#54961#0" expanded="false" />
+            <marker date="1573640113963" expanded="true" signature="999:1047" ph="SELECT AMTN MF_MON" />
+            <marker date="1573640113963" expanded="true" signature="3307:3350" ph="SELECT COUNT... MF_ARP" />
+            <marker date="1573640113963" expanded="true" signature="3553:3604" ph="SELECT ISNUL... BACC" />
+            <marker date="1573640113963" expanded="true" signature="4061:4323" ph="INSERT INTO TF_MON... " />
+            <marker date="1573640113963" expanded="true" signature="4702:4968" ph="INSERT INTO TF_MON... " />
+            <marker date="1573640113963" expanded="true" signature="5917:6054" ph="INSERT INTO TC_MON... " />
+            <marker date="1573640113963" expanded="true" signature="6470:6592" ph="INSERT INTO MF_MON... " />
+            <marker date="1573640113963" expanded="true" signature="6862:7073" ph="INSERT INTO MF_BAC... " />
+            <marker date="1573640113963" expanded="true" signature="7902:8040" ph="INSERT INTO TF_BAC... " />
+            <marker date="1573640113963" expanded="true" signature="8398:8503" ph="UPDATE MF_AR... " />
+            <marker date="1573640113963" expanded="true" signature="8760:8808" ph="SELECT ISNUL... MF_ARP" />
+            <marker date="1573640113963" expanded="true" signature="8938:8984" ph="UPDATE MF_AR... " />
+            <marker date="1573640113963" expanded="true" signature="9036:9092" ph="UPDATE MF_PS... " />
+            <marker date="1573640113963" expanded="true" signature="11446:11489" ph="SELECT COUNT... TC_MON" />
+            <marker date="1573640113963" expanded="true" signature="11692:11732" ph="SELECT Acc_N... BACC" />
+            <marker date="1573640113963" expanded="true" signature="11936:11991" ph="SELECT AMTN_... TF_MON" />
+            <marker date="1573640113963" expanded="true" signature="12221:12338" ph="UPDATE TF_MO... " />
+            <marker date="1573640113963" expanded="true" signature="12741:12858" ph="UPDATE TF_MO... " />
+            <marker date="1573640113963" expanded="true" signature="12997:13064" ph="UPDATE TC_MO... " />
+            <marker date="1573640113963" expanded="true" signature="13380:13463" ph="UPDATE MF_MO... " />
+            <marker date="1573640113963" expanded="true" signature="13725:13810" ph="UPDATE MF_BA... " />
+            <marker date="1573640113963" expanded="true" signature="14319:14383" ph="UPDATE TF_BA... " />
+            <marker date="1573640113963" expanded="true" signature="14716:14823" ph="UPDATE MF_AR... " />
+            <marker date="1573640113963" expanded="true" signature="15114:15192" ph="SELECT CAST(... MF_ARP" />
+            <marker date="1573640113963" expanded="true" signature="15333:15395" ph="UPDATE MF_AR... " />
+            <marker date="1573640113963" expanded="true" signature="15448:15519" ph="UPDATE MF_PS... " />
+            <marker date="1573640113963" expanded="true" signature="16699:16765" ph="SELECT ISNUL... TF_MON" />
+            <marker date="1573640113963" expanded="true" signature="16856:16910" ph="SELECT ARP_N... TC_MON" />
+            <marker date="1573640113963" expanded="true" signature="17052:17107" ph="SELECT AMTN_... TF_MON" />
+            <marker date="1573640113963" expanded="true" signature="17357:17405" ph="DELETE FROM " />
+            <marker date="1573640113963" expanded="true" signature="17475:17523" ph="DELETE FROM " />
+            <marker date="1573640113963" expanded="true" signature="17895:17942" ph="DELETE FROM " />
+            <marker date="1573640113963" expanded="true" signature="18250:18299" ph="DELETE FROM " />
+            <marker date="1573640113963" expanded="true" signature="18385:18434" ph="DELETE FROM " />
+            <marker date="1573640113963" expanded="true" signature="18555:18594" ph="SELECT AMTN MF_ARP" />
+            <marker date="1573640113963" expanded="true" signature="18794:18844" ph="UPDATE MF_AR... " />
+            <marker date="1573640113963" expanded="true" signature="18995:19097" ph="UPDATE MF_AR... " />
+            <marker date="1573640113963" expanded="true" signature="19192:19238" ph="UPDATE MF_AR... " />
+            <marker date="1573640113963" expanded="true" signature="19287:19343" ph="UPDATE MF_PS... " />
+            <marker date="1573640113963" expanded="true" signature="22365:22416" ph="SELECT ISNUL... BACC" />
+            <marker date="1573640113963" expanded="true" signature="22712:22975" ph="INSERT INTO TF_MON... " />
+            <marker date="1573640113963" expanded="true" signature="23298:23562" ph="INSERT INTO TF_MON... " />
+            <marker date="1573640113963" expanded="true" signature="24501:24631" ph="INSERT INTO MF_MON... " />
+            <marker date="1573640113963" expanded="true" signature="24911:25122" ph="INSERT INTO MF_BAC... " />
+            <marker date="1573640113963" expanded="true" signature="25920:26056" ph="INSERT INTO TF_BAC... " />
+            <marker date="1573640113963" expanded="true" signature="29266:29306" ph="SELECT Acc_N... BACC" />
+            <marker date="1573640113963" expanded="true" signature="29752:29862" ph="UPDATE TF_MO... " />
+            <marker date="1573640113963" expanded="true" signature="30278:30388" ph="UPDATE TF_MO... " />
+            <marker date="1573640113963" expanded="true" signature="30888:30937" ph="UPDATE MF_MO... " />
+            <marker date="1573640113963" expanded="true" signature="31216:31296" ph="UPDATE MF_BA... " />
+            <marker date="1573640113963" expanded="true" signature="31811:31870" ph="UPDATE TF_BA... " />
+            <marker date="1573640113963" expanded="true" signature="33594:33641" ph="DELETE FROM " />
+            <marker date="1573640113963" expanded="true" signature="33715:33763" ph="DELETE FROM " />
+            <marker date="1573640113963" expanded="true" signature="33838:33871" ph="DELETE FROM " />
+            <marker date="1573640113963" expanded="true" signature="33956:33989" ph="DELETE FROM " />
+            <marker date="1573640113963" expanded="true" signature="34792:34842" ph="update cust " />
+            <marker date="1573640113963" expanded="true" signature="34881:34937" ph="insert into cust... " />
+            <marker date="1573640113963" expanded="true" signature="38078:38117" ph="SELECT AMTN MF_ARP" />
+            <marker date="1573640113963" expanded="true" signature="38505:38622" ph="INSERT INTO TF_MON1... " />
+            <marker date="1573640113963" expanded="true" signature="38832:39073" ph="INSERT INTO TF_MON... " />
+            <marker date="1573640113963" expanded="true" signature="40005:40148" ph="INSERT INTO TC_MON... " />
+            <marker date="1573640113963" expanded="true" signature="40928:41033" ph="UPDATE MF_AR... " />
+            <marker date="1573640113963" expanded="true" signature="41570:41639" ph="SELECT CAST(... MF_ARP" />
+            <marker date="1573640113963" expanded="true" signature="41794:41840" ph="UPDATE MF_AR... " />
+            <marker date="1573640113963" expanded="true" signature="41898:41969" ph="UPDATE MF_PS... " />
+            <marker date="1573640113963" expanded="true" signature="42089:42193" ph="INSERT INTO MF_MON... " />
+            <marker date="1573640113963" expanded="true" signature="42575:42652" ph="UPDATE TF_MO... " />
+            <marker date="1573640113963" expanded="true" signature="42828:42937" ph="SELECT ISNUL... TF_MON" />
+            <marker date="1573640113963" expanded="true" signature="43081:43139" ph="UPDATE TF_MO... " />
+            <marker date="1573640113963" expanded="true" signature="46204:46243" ph="SELECT AMTN MF_ARP" />
+            <marker date="1573640113963" expanded="true" signature="46545:46605" ph="UPDATE TF_MO... " />
+            <marker date="1573640113963" expanded="true" signature="46809:46916" ph="UPDATE TF_MO... " />
+            <marker date="1573640113963" expanded="true" signature="47538:47591" ph="SELECT ISNUL... TC_MON" />
+            <marker date="1573640113963" expanded="true" signature="47768:47827" ph="UPDATE TC_MO... " />
+            <marker date="1573640113963" expanded="true" signature="48484:48552" ph="SELECT ISNUL... MF_ARP" />
+            <marker date="1573640113963" expanded="true" signature="48752:48863" ph="UPDATE MF_AR... " />
+            <marker date="1573640113963" expanded="true" signature="49184:49253" ph="SELECT CAST(... MF_ARP" />
+            <marker date="1573640113963" expanded="true" signature="49408:49454" ph="UPDATE MF_AR... " />
+            <marker date="1573640113963" expanded="true" signature="49512:49583" ph="UPDATE MF_PS... " />
+            <marker date="1573640113963" expanded="true" signature="49714:49773" ph="UPDATE MF_MO... " />
+            <marker date="1573640113963" expanded="true" signature="50080:50160" ph="UPDATE TF_MO... " />
+            <marker date="1573640113963" expanded="true" signature="50343:50452" ph="SELECT ISNUL... TF_MON" />
+            <marker date="1573640113963" expanded="true" signature="50618:50676" ph="UPDATE TF_MO... " />
+            <marker date="1573640113963" expanded="true" signature="52203:52269" ph="SELECT ISNUL... TF_MON" />
+            <marker date="1573640113963" expanded="true" signature="52371:52426" ph="SELECT IRP_N... TF_MON1" />
+            <marker date="1573640113963" expanded="true" signature="52519:52596" ph="UPDATE TF_MO... " />
+            <marker date="1573640113963" expanded="true" signature="52709:52763" ph="SELECT ARP_N... TC_MON" />
+            <marker date="1573640113963" expanded="true" signature="53150:53218" ph="SELECT ISNUL... MF_ARP" />
+            <marker date="1573640113963" expanded="true" signature="53416:53521" ph="UPDATE MF_AR... " />
+            <marker date="1573640113963" expanded="true" signature="53819:53888" ph="SELECT CAST(... MF_ARP" />
+            <marker date="1573640113963" expanded="true" signature="53994:54040" ph="UPDATE MF_AR... " />
+            <marker date="1573640113963" expanded="true" signature="54095:54151" ph="UPDATE MF_PS... " />
+            <marker date="1573640113963" expanded="true" signature="54233:54281" ph="DELETE FROM " />
+            <marker date="1573640113963" expanded="true" signature="54354:54401" ph="DELETE FROM " />
+            <marker date="1573640113963" expanded="true" signature="54474:54521" ph="DELETE FROM " />
+            <marker date="1573640113963" expanded="true" signature="54593:54640" ph="DELETE FROM " />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/utils/if_account.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="189">
+          <caret line="8" column="7" lean-forward="true" selection-start-line="8" selection-start-column="7" selection-end-line="8" selection-end-column="7" />
+          <folding>
+            <marker date="1573637717721" expanded="true" signature="184:225" ph="SELECT Bacc_... BACC" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/apps/salesinvoice/views.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="408">
+          <caret line="307" column="25" lean-forward="false" selection-start-line="307" selection-start-column="25" selection-end-line="307" selection-end-column="25" />
+          <folding>
+            <element signature="e#0#11#0" expanded="true" />
+            <element signature="e#439#16357#0" expanded="false" />
+            <element signature="e#495#659#0" expanded="false" />
+            <element signature="e#722#7189#0" expanded="false" />
+            <element signature="e#7252#13451#0" expanded="false" />
+            <element signature="e#13516#16355#0" expanded="false" />
+            <element signature="e#16395#30930#0" expanded="false" />
+            <element signature="e#16451#16543#0" expanded="false" />
+            <element signature="e#16606#22803#0" expanded="false" />
+            <element signature="e#22866#28054#0" expanded="false" />
+            <element signature="e#28119#30928#0" expanded="false" />
+            <element signature="e#30973#43447#0" expanded="false" />
+            <element signature="e#31029#31143#0" expanded="false" />
+            <element signature="e#31206#36966#0" expanded="false" />
+            <element signature="e#37029#41718#0" expanded="false" />
+            <element signature="e#41783#43445#0" expanded="false" />
+            <element signature="e#43490#59957#0" expanded="false" />
+            <element signature="e#43546#43904#0" expanded="false" />
+            <element signature="e#43967#50259#0" expanded="false" />
+            <element signature="e#44020#44037#0" expanded="false" />
+            <element signature="e#44415#44418#0" expanded="false" />
+            <element signature="e#50321#56498#0" expanded="false" />
+            <element signature="e#56563#59957#0" expanded="false" />
+            <marker date="1573639239358" expanded="true" signature="3866:4065" ph="INSERT INTO MF_PSS... " />
+            <marker date="1573639239358" expanded="true" signature="4359:4551" ph="INSERT INTO TF_PSS... " />
+            <marker date="1573639239358" expanded="true" signature="4700:4945" ph="INSERT INTO INV_NO... " />
+            <marker date="1573639239358" expanded="true" signature="5197:5396" ph="INSERT INTO MF_ARP... " />
+            <marker date="1573639239358" expanded="true" signature="5681:5951" ph="INSERT INTO MF_LZ... " />
+            <marker date="1573639239358" expanded="true" signature="6315:6534" ph="INSERT INTO TF_LZ... " />
+            <marker date="1573639239358" expanded="true" signature="6698:6809" ph="UPDATE TF_PS... " />
+            <marker date="1573639239358" expanded="true" signature="11053:11166" ph="UPDATE MF_PS... " />
+            <marker date="1573639239358" expanded="true" signature="11350:11468" ph="UPDATE TF_PS... " />
+            <marker date="1573639239358" expanded="true" signature="11683:11868" ph="UPDATE INV_N... " />
+            <marker date="1573639239358" expanded="true" signature="12092:12210" ph="UPDATE MF_AR... " />
+            <marker date="1573639239358" expanded="true" signature="12453:12585" ph="UPDATE MF_LZ... " />
+            <marker date="1573639239358" expanded="true" signature="12818:12893" ph="UPDATE TF_LZ... " />
+            <marker date="1573639239358" expanded="true" signature="13002:13074" ph="UPDATE TF_PS... " />
+            <marker date="1573639239358" expanded="true" signature="14860:14897" ph="SELECT COUNT... missing_value" />
+            <marker date="1573639239358" expanded="true" signature="15260:15308" ph="DELETE FROM " />
+            <marker date="1573639239358" expanded="true" signature="15393:15441" ph="DELETE FROM " />
+            <marker date="1573639239358" expanded="true" signature="15524:15574" ph="DELETE FROM " />
+            <marker date="1573639239358" expanded="true" signature="15655:15706" ph="DELETE FROM " />
+            <marker date="1573639239358" expanded="true" signature="15790:15838" ph="DELETE FROM " />
+            <marker date="1573639239358" expanded="true" signature="15934:15982" ph="DELETE FROM " />
+            <marker date="1573639239358" expanded="true" signature="18616:18659" ph="SELECT COUNT... MF_ARP" />
+            <marker date="1573639239358" expanded="true" signature="18861:18912" ph="SELECT ISNUL... BACC" />
+            <marker date="1573639239358" expanded="true" signature="19239:19503" ph="INSERT INTO TF_MON... " />
+            <marker date="1573639239358" expanded="true" signature="19871:20136" ph="INSERT INTO TF_MON... " />
+            <marker date="1573639239358" expanded="true" signature="20432:20569" ph="INSERT INTO TC_MON... " />
+            <marker date="1573639239358" expanded="true" signature="20729:20851" ph="INSERT INTO MF_MON... " />
+            <marker date="1573639239358" expanded="true" signature="21000:21211" ph="INSERT INTO MF_BAC... " />
+            <marker date="1573639239358" expanded="true" signature="21523:21661" ph="INSERT INTO TF_BAC... " />
+            <marker date="1573639239358" expanded="true" signature="21812:21917" ph="UPDATE MF_AR... " />
+            <marker date="1573639239358" expanded="true" signature="22176:22224" ph="SELECT ISNUL... MF_ARP" />
+            <marker date="1573639239358" expanded="true" signature="22324:22370" ph="UPDATE MF_AR... " />
+            <marker date="1573639239358" expanded="true" signature="22423:22479" ph="UPDATE MF_PS... " />
+            <marker date="1573639239358" expanded="true" signature="24710:24753" ph="SELECT COUNT... TC_MON" />
+            <marker date="1573639239358" expanded="true" signature="24958:24998" ph="SELECT Acc_N... BACC" />
+            <marker date="1573639239358" expanded="true" signature="25202:25257" ph="SELECT AMTN_... TF_MON" />
+            <marker date="1573639239358" expanded="true" signature="25512:25629" ph="UPDATE TF_MO... " />
+            <marker date="1573639239358" expanded="true" signature="25864:25981" ph="UPDATE TF_MO... " />
+            <marker date="1573639239358" expanded="true" signature="26120:26187" ph="UPDATE TC_MO... " />
+            <marker date="1573639239358" expanded="true" signature="26277:26360" ph="UPDATE MF_MO... " />
+            <marker date="1573639239358" expanded="true" signature="26520:26605" ph="UPDATE MF_BA... " />
+            <marker date="1573639239358" expanded="true" signature="26808:26872" ph="UPDATE TF_BA... " />
+            <marker date="1573639239358" expanded="true" signature="27068:27175" ph="UPDATE MF_AR... " />
+            <marker date="1573639239358" expanded="true" signature="27330:27415" ph="SELECT CAST(... MF_ARP" />
+            <marker date="1573639239358" expanded="true" signature="27546:27608" ph="UPDATE MF_AR... " />
+            <marker date="1573639239358" expanded="true" signature="27661:27732" ph="UPDATE MF_PS... " />
+            <marker date="1573639239358" expanded="true" signature="28618:28684" ph="SELECT ISNUL... TF_MON" />
+            <marker date="1573639239358" expanded="true" signature="28775:28829" ph="SELECT ARP_N... TC_MON" />
+            <marker date="1573639239358" expanded="true" signature="28971:29026" ph="SELECT AMTN_... TF_MON" />
+            <marker date="1573639239358" expanded="true" signature="29184:29232" ph="DELETE FROM " />
+            <marker date="1573639239358" expanded="true" signature="29306:29354" ph="DELETE FROM " />
+            <marker date="1573639239358" expanded="true" signature="29428:29475" ph="DELETE FROM " />
+            <marker date="1573639239358" expanded="true" signature="29551:29600" ph="DELETE FROM " />
+            <marker date="1573639239358" expanded="true" signature="29688:29737" ph="DELETE FROM " />
+            <marker date="1573639239358" expanded="true" signature="29857:29896" ph="SELECT AMTN MF_ARP" />
+            <marker date="1573639239358" expanded="true" signature="30052:30102" ph="UPDATE MF_AR... " />
+            <marker date="1573639239358" expanded="true" signature="30254:30356" ph="UPDATE MF_AR... " />
+            <marker date="1573639239358" expanded="true" signature="30451:30497" ph="UPDATE MF_AR... " />
+            <marker date="1573639239358" expanded="true" signature="30546:30602" ph="UPDATE MF_PS... " />
+            <marker date="1573639239358" expanded="true" signature="33651:33702" ph="SELECT ISNUL... BACC" />
+            <marker date="1573639239358" expanded="true" signature="34055:34332" ph="INSERT INTO TF_MON... " />
+            <marker date="1573639239358" expanded="true" signature="34779:35058" ph="INSERT INTO TF_MON... " />
+            <marker date="1573639239358" expanded="true" signature="35436:35582" ph="INSERT INTO MF_MON... " />
+            <marker date="1573639239358" expanded="true" signature="35745:35972" ph="INSERT INTO MF_BAC... " />
+            <marker date="1573639239358" expanded="true" signature="36393:36545" ph="INSERT INTO TF_BAC... " />
+            <marker date="1573639239358" expanded="true" signature="39685:39725" ph="SELECT Acc_N... BACC" />
+            <marker date="1573639239358" expanded="true" signature="40048:40158" ph="UPDATE TF_MO... " />
+            <marker date="1573639239358" expanded="true" signature="40447:40557" ph="UPDATE TF_MO... " />
+            <marker date="1573639239358" expanded="true" signature="40779:40828" ph="UPDATE MF_MO... " />
+            <marker date="1573639239358" expanded="true" signature="40960:41040" ph="UPDATE MF_BA... " />
+            <marker date="1573639239358" expanded="true" signature="41239:41298" ph="UPDATE TF_BA... " />
+            <marker date="1573639239358" expanded="true" signature="42718:42765" ph="DELETE FROM " />
+            <marker date="1573639239358" expanded="true" signature="42839:42887" ph="DELETE FROM " />
+            <marker date="1573639239358" expanded="true" signature="42963:42996" ph="DELETE FROM " />
+            <marker date="1573639239358" expanded="true" signature="43084:43117" ph="DELETE FROM " />
+            <marker date="1573639239358" expanded="true" signature="46578:46617" ph="SELECT AMTN MF_ARP" />
+            <marker date="1573639239358" expanded="true" signature="47003:47136" ph="INSERT INTO TF_MON1... " />
+            <marker date="1573639239358" expanded="true" signature="47227:47468" ph="INSERT INTO TF_MON... " />
+            <marker date="1573639239358" expanded="true" signature="47940:48083" ph="INSERT INTO TC_MON... " />
+            <marker date="1573639239358" expanded="true" signature="48292:48397" ph="UPDATE MF_AR... " />
+            <marker date="1573639239358" expanded="true" signature="48553:48622" ph="SELECT CAST(... MF_ARP" />
+            <marker date="1573639239358" expanded="true" signature="48777:48823" ph="UPDATE MF_AR... " />
+            <marker date="1573639239358" expanded="true" signature="48881:48952" ph="UPDATE MF_PS... " />
+            <marker date="1573639239358" expanded="true" signature="49096:49200" ph="INSERT INTO MF_MON... " />
+            <marker date="1573639239358" expanded="true" signature="49382:49459" ph="UPDATE TF_MO... " />
+            <marker date="1573639239358" expanded="true" signature="49631:49740" ph="SELECT ISNUL... TF_MON" />
+            <marker date="1573639239358" expanded="true" signature="49884:49942" ph="UPDATE TF_MO... " />
+            <marker date="1573639239358" expanded="true" signature="52800:52839" ph="SELECT AMTN MF_ARP" />
+            <marker date="1573639239358" expanded="true" signature="53159:53219" ph="UPDATE TF_MO... " />
+            <marker date="1573639239358" expanded="true" signature="53323:53430" ph="UPDATE TF_MO... " />
+            <marker date="1573639239358" expanded="true" signature="53772:53825" ph="SELECT ISNUL... TC_MON" />
+            <marker date="1573639239358" expanded="true" signature="54053:54112" ph="UPDATE TC_MO... " />
+            <marker date="1573639239358" expanded="true" signature="54466:54534" ph="SELECT ISNUL... MF_ARP" />
+            <marker date="1573639239358" expanded="true" signature="54735:54846" ph="UPDATE MF_AR... " />
+            <marker date="1573639239358" expanded="true" signature="55017:55086" ph="SELECT CAST(... MF_ARP" />
+            <marker date="1573639239358" expanded="true" signature="55195:55241" ph="UPDATE MF_AR... " />
+            <marker date="1573639239358" expanded="true" signature="55299:55370" ph="UPDATE MF_PS... " />
+            <marker date="1573639239358" expanded="true" signature="55460:55519" ph="UPDATE MF_MO... " />
+            <marker date="1573639239358" expanded="true" signature="55626:55706" ph="UPDATE TF_MO... " />
+            <marker date="1573639239358" expanded="true" signature="55869:55978" ph="SELECT ISNUL... TF_MON" />
+            <marker date="1573639239358" expanded="true" signature="56123:56181" ph="UPDATE TF_MO... " />
+            <marker date="1573639239358" expanded="true" signature="57371:57437" ph="SELECT ISNUL... TF_MON" />
+            <marker date="1573639239358" expanded="true" signature="57540:57595" ph="SELECT IRP_N... TF_MON1" />
+            <marker date="1573639239358" expanded="true" signature="57688:57765" ph="UPDATE TF_MO... " />
+            <marker date="1573639239358" expanded="true" signature="57878:57932" ph="SELECT ARP_N... TC_MON" />
+            <marker date="1573639239358" expanded="true" signature="58319:58387" ph="SELECT ISNUL... MF_ARP" />
+            <marker date="1573639239358" expanded="true" signature="58585:58690" ph="UPDATE MF_AR... " />
+            <marker date="1573639239358" expanded="true" signature="58813:58882" ph="SELECT CAST(... MF_ARP" />
+            <marker date="1573639239358" expanded="true" signature="58988:59034" ph="UPDATE MF_AR... " />
+            <marker date="1573639239358" expanded="true" signature="59089:59145" ph="UPDATE MF_PS... " />
+            <marker date="1573639239358" expanded="true" signature="59228:59276" ph="DELETE FROM " />
+            <marker date="1573639239358" expanded="true" signature="59350:59397" ph="DELETE FROM " />
+            <marker date="1573639239358" expanded="true" signature="59471:59519" ph="DELETE FROM " />
+            <marker date="1573639239358" expanded="true" signature="59592:59639" ph="DELETE FROM " />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/apps/stockinvoice/urls.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="81">
+          <caret line="4" column="50" lean-forward="true" selection-start-line="4" selection-start-column="50" selection-end-line="4" selection-end-column="50" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/utils/usr_data.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="351">
+          <caret line="13" column="15" lean-forward="true" selection-start-line="13" selection-start-column="15" selection-end-line="13" selection-end-column="15" />
+          <folding>
+            <marker date="1573548547689" expanded="true" signature="217:258" ph="SELECT COUNT... SALM" />
+            <marker date="1573548547689" expanded="true" signature="338:402" ph="INSERT INTO SALM... " />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/apps/stockinvoice/views.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-378">
+          <caret line="18" column="27" lean-forward="false" selection-start-line="18" selection-start-column="16" selection-end-line="18" selection-end-column="27" />
+          <folding>
+            <element signature="e#10081#19332#0" expanded="false" />
+            <element signature="e#19398#23319#0" expanded="false" />
+            <marker date="1573644329326" expanded="true" signature="4690:4900" ph="INSERT INTO MF_PSS... " />
+            <marker date="1573644329326" expanded="true" signature="5164:5337" ph="INSERT INTO TF_PSS... " />
+            <marker date="1573644329326" expanded="true" signature="5487:5732" ph="INSERT INTO INV_NO... " />
+            <marker date="1573644329326" expanded="true" signature="6014:6213" ph="INSERT INTO MF_ARP... " />
+            <marker date="1573644329326" expanded="true" signature="6522:6823" ph="INSERT INTO MF_LZ1... " />
+            <marker date="1573644329326" expanded="true" signature="7173:7389" ph="INSERT INTO TF_LZ1... " />
+            <marker date="1573644329326" expanded="true" signature="7552:7609" ph="UPDATE TF_PS... " />
+            <marker date="1573644329326" expanded="true" signature="8122:8350" ph="INSERT INTO MF_PSS... " />
+            <marker date="1573644329326" expanded="true" signature="8733:8910" ph="INSERT INTO TF_PSS... " />
+            <marker date="1573644329326" expanded="true" signature="9141:9356" ph="INSERT INTO MF_ARP... " />
+            <marker date="1573644329326" expanded="true" signature="13825:13938" ph="UPDATE MF_PS... " />
+            <marker date="1573644329326" expanded="true" signature="14262:14380" ph="UPDATE TF_PS... " />
+            <marker date="1573644329326" expanded="true" signature="14544:14729" ph="UPDATE INV_N... " />
+            <marker date="1573644329326" expanded="true" signature="15547:15665" ph="UPDATE MF_AR... " />
+            <marker date="1573644329326" expanded="true" signature="16325:16458" ph="UPDATE MF_LZ... " />
+            <marker date="1573644329326" expanded="true" signature="17065:17141" ph="UPDATE TF_LZ... " />
+            <marker date="1573644329326" expanded="true" signature="17409:17481" ph="UPDATE TF_PS... " />
+            <marker date="1573644329326" expanded="true" signature="17943:18056" ph="UPDATE MF_PS... " />
+            <marker date="1573644329326" expanded="true" signature="18411:18504" ph="UPDATE TF_PS... " />
+            <marker date="1573644329326" expanded="true" signature="18724:18832" ph="UPDATE MF_AR... " />
+            <marker date="1573644329326" expanded="true" signature="20823:20860" ph="SELECT COUNT... missing_value" />
+            <marker date="1573644329326" expanded="true" signature="21160:21209" ph="DELETE FROM " />
+            <marker date="1573644329326" expanded="true" signature="21294:21343" ph="DELETE FROM " />
+            <marker date="1573644329326" expanded="true" signature="21425:21475" ph="DELETE FROM " />
+            <marker date="1573644329326" expanded="true" signature="21555:21606" ph="DELETE FROM " />
+            <marker date="1573644329326" expanded="true" signature="21690:21738" ph="DELETE FROM " />
+            <marker date="1573644329326" expanded="true" signature="21834:21882" ph="DELETE FROM " />
+            <marker date="1573644329326" expanded="true" signature="22315:22352" ph="SELECT COUNT... missing_value" />
+            <marker date="1573644329326" expanded="true" signature="22619:22667" ph="DELETE FROM " />
+            <marker date="1573644329326" expanded="true" signature="22763:22811" ph="DELETE FROM " />
+            <marker date="1573644329326" expanded="true" signature="22907:22957" ph="DELETE FROM " />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/awj/awj/utils/cust_data.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="513">
+          <caret line="19" column="0" lean-forward="true" selection-start-line="19" selection-start-column="0" selection-end-line="19" selection-end-column="0" />
+          <folding>
+            <marker date="1573644366090" expanded="true" signature="287:328" ph="SELECT COUNT... CUST" />
+            <marker date="1573644366090" expanded="true" signature="429:866" ph="INSERT INTO CUST... " />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+  </component>
+</project>

+ 4 - 0
RED.txt

@@ -0,0 +1,4 @@
+Django==2.1.13
+django-pyodbc-azure==2.1.0.0
+pyodbc==4.0.27
+pytz==2019.3

二進制
awj/awj/__pycache__/__init__.cpython-36.pyc


二進制
awj/awj/__pycache__/urls.cpython-36.pyc


二進制
awj/awj/__pycache__/wsgi.cpython-36.pyc


二進制
awj/awj/apps/PaymentOperation/__pycache__/__init__.cpython-36.pyc


二進制
awj/awj/apps/PaymentOperation/__pycache__/admin.cpython-36.pyc


二進制
awj/awj/apps/PaymentOperation/__pycache__/apps.cpython-36.pyc


二進制
awj/awj/apps/PaymentOperation/__pycache__/models.cpython-36.pyc


二進制
awj/awj/apps/PaymentOperation/__pycache__/urls.cpython-36.pyc


二進制
awj/awj/apps/PaymentOperation/__pycache__/views.cpython-36.pyc


+ 3 - 3
awj/awj/apps/PaymentOperation/admin.py

@@ -1,3 +1,3 @@
-from django.contrib import admin
-
-# Register your models here.
+from django.contrib import admin
+
+# Register your models here.

+ 5 - 5
awj/awj/apps/PaymentOperation/apps.py

@@ -1,5 +1,5 @@
-from django.apps import AppConfig
-
-
-class PaymentoperationConfig(AppConfig):
-    name = 'PaymentOperation'
+from django.apps import AppConfig
+
+
+class PaymentoperationConfig(AppConfig):
+    name = 'PaymentOperation'

二進制
awj/awj/apps/PaymentOperation/migrations/__pycache__/__init__.cpython-36.pyc


+ 3 - 3
awj/awj/apps/PaymentOperation/models.py

@@ -1,3 +1,3 @@
-from django.db import models
-
-# Create your models here.
+from django.db import models
+
+# Create your models here.

+ 3 - 3
awj/awj/apps/PaymentOperation/tests.py

@@ -1,3 +1,3 @@
-from django.test import TestCase
-
-# Create your tests here.
+from django.test import TestCase
+
+# Create your tests here.

+ 7 - 7
awj/awj/apps/PaymentOperation/urls.py

@@ -1,8 +1,8 @@
-from django.conf.urls import url
-from . import views
-
-urlpatterns = [
-    url(r'^paymentoperation/$',views.PaymentOperationView.as_view()),   #单厂商付款作业
-    url(r'^expectedpoperation/$',views.ExpectedOperationView.as_view())  ,    #预付款单
-    url(r'^expectedptoperation/$',views.ExpectedPtOperationView.as_view())      #预付冲应付
+from django.conf.urls import url
+from . import views
+
+urlpatterns = [
+    url(r'^paymentoperation/$',views.PaymentOperationView.as_view()),   #单厂商付款作业
+    url(r'^expectedpoperation/$',views.ExpectedOperationView.as_view())  ,    #预付款单
+    url(r'^expectedptoperation/$',views.ExpectedPtOperationView.as_view())      #预付冲应付
 ]

+ 1123 - 914
awj/awj/apps/PaymentOperation/views.py

@@ -1,914 +1,1123 @@
-import json
-import traceback
-
-from django import http
-from django.shortcuts import render
-from django.db import transaction
-# Create your views here.
-from django.views import View
-from django.db import connection
-
-from utils.cust_data import customer_data
-from utils.examine_ood import examine_ood
-from utils.usr_data import usr_data
-import datetime
-
-# 付款作业
-class PaymentOperationView(View):
-    def get(self,request):
-        a='TF_MON'
-        b='RP_NO'
-        c='PT20191015' #为0.000
-        # sql="SELECT COUNT(*) FROM %s WHERE %s='%s' "%(a,b,c)
-        # print(sql)
-        with connection.cursor() as cursor:
-            # cursor.execute("INSERT INTO CUST(CUS_NO,[NAME])VALUES ('QQ12345',%s)",[a])
-            # cursor.execute("UPDATE PRDT SET NAME='呜呜呜呜' where prd_no = %s", [a])
-            # cursor.execute("select * from prdt where prd_no = %s", [a])
-            row_AMTN_MF_MON = cursor.execute("""SELECT AMTN FROM MF_MON WHERE RP_NO='PT9A210001'""").fetchall()[0][0]
-            # row_ZL_NO = cursor.execute(sql).fetchall()[0][0]
-            print(float(row_AMTN_MF_MON))
-        context={
-            'a':'get付款作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def post(self, request):
-
-        # 获取参数
-        RP_NO = request.POST.get("RP_NO")  #付款单号         字符类型
-        RP_DD = request.POST.get("RP_DD")  #付款日期            字符类型
-        CUS_NO = request.POST.get("CUS_NO")  #付款客户编码        字符类型
-        AMTN_BC = request.POST.get("AMTN_BC")  #付款金额            数字类型
-        CACC_NO = request.POST.get("CACC_NO")  #付款银行编码          字符类型
-        USR = request.POST.get("USR")  #制单人编码                   字符类型
-        USR_NAME = request.POST.get("USR_NAME")  #制单人姓名         字符类型
-        MF_LZ1 = request.POST.get("MF_LZ1")  #进货开票单号         字符类型
-
-
-        # 判断单号是否存在
-        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO,'RP_ID','2')
-        if row_ZL_NO > 0:
-            return http.HttpResponseForbidden('付款单号已存在')
-
-        # 判断用户是否存在,不存在则创建
-        row_usr = usr_data(USR, USR_NAME,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
-        with connection.cursor() as cursor:
-
-            MF_LZ1_NO = cursor.execute("""SELECT COUNT(*) FROM MF_ARP WHERE ARP_NO=%s""", ['AP' + MF_LZ1[2::]]).fetchall()[0][0]
-            if MF_LZ1_NO<=0:
-                return http.HttpResponseForbidden('开票单号不存在')
-
-            # 获取银行账号的会计科目
-            Acc_No_km = cursor.execute("""SELECT ISNULL(Acc_No,'') FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
-            if Acc_No_km == '':
-                return http.HttpResponseForbidden('银行会计科目不存在')
-            sid = transaction.savepoint()  #开启事物
-            try:
-
-                # cursor.execute("""UPDATE TF_PSS SET AMT_FP=%s,AMTN_NET_FP=%s WHERE PS_NO=%s""",[AMT, AMT, 'PC' + ZL_NO[2::]])
-                #插入付款单表头
-                cursor.execute("""INSERT INTO TF_MON(IRP_ID,RP_NO,ITM,RP_ID,CLS_ID,RP_DD,CUS_NO,INCLUDESON,AMTN_BC,AMTN_CLS,BC_NO,CACC_NO,EXC_RTO,DEP,USR,CHK_MAN,CLS_DATE,SYS_DATE,IEA_ID,IOR_ID,SK_TYPE)
-              VALUES('F',%s,1,2,'T',%s,%s,'F',%s,%s,%s,%s,1,'0000',%s,%s,%s,%s,'F','F',1)""",
-              [RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO ,AMTN_BC,AMTN_BC,'BT'+RP_NO[2::],CACC_NO,USR,USR,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),
-              datetime.datetime.strptime(RP_DD, '%Y-%m-%d')])
-                # RP_NO   付款单号  RP_NO
-                #RP_DD    付款日期   datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                #CUS_NO   付款客户编码    CUS_NO
-                #AMTN_BC    付款金额     AMTN_BC
-                #AMTN_CLS    冲款金额      AMTN_CLS
-                #BC_NO      账户收支单号
-                #CACC_NO    'BT'+RP_NO[2::]
-                #CACC_NO        付款银行编码
-                #USR   制单人      USR
-                #CHK_MAN   审核人      USR
-                #CLS_DATE    制单时间       datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                #CLS_DATE       审核时间        datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-
-                # 插入付款单表身-------------改CUR_ID  RMB
-                cursor.execute("""INSERT INTO TC_MON(RP_ID,RP_NO,ITM,ITM2,ARP_NO,AMTN_CLS,ARP_OPN_ID,RP_DD,CUS_NO,PRE_ITM)values
-                (2,%s,1,1,%s,%s,2,%s,%s,1)""",
-                [RP_NO, 'AP'+MF_LZ1[2::], AMTN_BC,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),CUS_NO])
-                # RP_NO   付款单号  RP_NO
-                #ARP_NO   立账单号      MF_LZ1
-                #AMTN_CLS  冲款金额  AMTN_BC
-                #RP_DD  冲款时间    datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                #CUS_NO   冲款客户      CUS_NO
-
-                # 插入回写冲款金额表
-                cursor.execute("""INSERT INTO MF_MON(RP_ID,RP_NO,RP_DD,DEP,AMTN,AMTN_ARP,AMTN_REST,FJ_NUM)VALUES
-                (2,%s,%s,'0000',%s,%s,%s,0)""",[RP_NO,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC,AMTN_BC,AMTN_BC])
-                #RP_NO  付款单号  RP_NO
-                #AMTN   冲款金额
-                #AMTN_ARP  总金额
-                #AMTN_REST
-
-                # 插入账户收支单表头
-                cursor.execute("""INSERT INTO MF_BAC(BB_ID,BB_NO,BB_DD,BACC_NO,ACC_NO,DEP,BIL_NO,EXC_RTO,AMTN,USR,CHK_MAN,OPN_ID,CLS_DATE,SYS_DATE,BIL_ID_N,BIL_NO_N)VALUES
-                ('BT',%s,%s,%s,%s,'0000',%s,1,%s,%s,%s,'F',%s,%s,'PT',%s)""",
-                ['BT'+RP_NO[2::], datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CACC_NO,Acc_No_km,'PT'+RP_NO,-float(AMTN_BC),USR,USR,datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                ,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),RP_NO])
-                #BB_NO  账户收支单单号  'BT'+RP_NO[2::]
-                #BB_DD   账户收支单日期  RP_NO[2::], datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                # BACC_NO  银行账户代号
-                #ACC_NO  会计科目      待定,需要会计确定自动取银行账号里面的会计科目
-                #BIL_NO  来源单号   'PT'+RP_NO
-                #AMTN 金额   付款是负数,收款是正数      -float(AMTN_BC)
-                #USR  制单人       USR
-                #  CHK_MAN  审核人     USR
-                #CLS_DATE  审核日期
-                # SYS_DATE  录入日期
-                #BIL_NO_N  来源单号
-
-                # 插入账户收支单表身
-                cursor.execute("""INSERT INTO TF_BAC(BB_ID,BB_NO,ITM,BB_DD,EXC_RTO,AMTN,DEP,CUS_NO,ADD_ID,PRE_ITM)values
-                ('BT',%s,1,%s,1,%s,'0000',%s,'-',1)""",['BT'+RP_NO[2::], datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC, CUS_NO])
-                # BB_NO  账户收支单号  'BT'+RP_NO[2::]
-                # BB_DD  账户收支单日期    datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                #AMTN   金额      AMTN_BC
-                #CUS_NO  客户编码   CUS_NO
-
-                #回写立账单的数据
-                cursor.execute("""UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0)-%s WHERE BIL_NO=%s""",[AMTN_BC, AMTN_BC,MF_LZ1])
-                # AMTN_RCV   已冲金额     ISNULL(AMTN_RCV,0)+%s
-                # AMT   未冲金额  ISNULL(AMT,0)-%s
-                # BIL_NO  开票单号
-
-                #如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
-                row_AMT = cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s", [MF_LZ1]).fetchall()[0][0]
-                if row_AMT<=0:
-                    cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='T' WHERE BIL_NO=%s""",[MF_LZ1])
-                    cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='T',CLSLZ='T' WHERE PS_NO=%s""",['PC'+MF_LZ1[2::]])
-            except Exception:
-                transaction.savepoint_rollback(sid)
-                return http.HttpResponseForbidden("新增付款单sql语句执行异常")
-            transaction.savepoint_commit(sid)
-        context = {
-            'a': 'post付款作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def put(self, request):
-        req_data = json.loads(request.body.decode())
-        # 获取参数
-        RP_NO = req_data.get("RP_NO")  #付款单号         字符类型
-        RP_DD = req_data.get("RP_DD")  #付款日期            字符类型
-        AMTN_BC = req_data.get("AMTN_BC")  #付款金额            数字类型
-        CACC_NO = req_data.get("CACC_NO")  #付款银行编码          字符类型
-        MF_LZ1 = req_data.get("MF_LZ1")  #进货开票单号         字符类型
-        UP_DD = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')  #修改时间
-        print(RP_NO)
-        print(RP_DD)
-        print(AMTN_BC)
-        print(CACC_NO)
-        print(MF_LZ1)
-        # {
-        #     "RP_NO":"PT9A200001",
-        #     "RP_DD":"2019-10-20",
-        #     "AMTN_BC":199,
-        #     "CACC_NO":"01",
-        #     "MF_LZ1":"LP9A170002"
-        # }
-        # 判断单号是否存在
-        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO,'RP_ID','2')
-        if row_ZL_NO <= 0:
-            return http.HttpResponseForbidden('付款单号不存在')
-
-        # 付款单不能修改客户
-        # # 判断用户是否存在,不存在则创建
-        # row_usr = usr_data(USR, USR_NAME, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
-        with connection.cursor() as cursor:
-
-            # 判断开票单号是否存在
-            MF_LZ1_NO = cursor.execute("""SELECT COUNT(*) FROM TC_MON WHERE ARP_NO=%s""", ['AP' + MF_LZ1[2::]]).fetchall()[0][0]
-
-            if MF_LZ1_NO<=0:
-                return http.HttpResponseForbidden('开票单号不存在')
-            # 获取银行账号的会计科目
-            Acc_No_km = cursor.execute("""SELECT Acc_No FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
-            if Acc_No_km == '':
-                return http.HttpResponseForbidden('银行会计科目不存在')
-
-            # 缓存之前冲款的金额用于回写立账冲款数据
-            row_AMTN = cursor.execute("""SELECT AMTN_BC FROM TF_MON WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO]).fetchall()[0][0]
-
-            sid = transaction.savepoint()  # 开启事物
-            try:
-                #修改付款单表头
-                cursor.execute("""UPDATE TF_MON SET RP_DD=%s,AMTN_BC=%s,CACC_NO=%s,MODIFY_DD=%s,MODIFY_MAN=USR,AMTN_CLS=%s WHERE RP_NO=%s AND RP_ID='2'""",[RP_DD, AMTN_BC, CACC_NO,UP_DD,AMTN_BC,RP_NO])
-                # RP_NO   付款单号  RP_NO
-                # RP_DD    付款日期   datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                # AMTN_BC    付款金额     AMTN_BC
-                # CACC_NO        付款银行编码
-                # 修改付款单表身
-                cursor.execute("""UPDATE TC_MON SET RP_DD=%s,AMTN_CLS=%s WHERE RP_NO=%s AND RP_ID='2'""",[RP_DD, AMTN_BC, RP_NO])
-                # RP_NO   付款单号  RP_NO
-                # ARP_NO   立账单号      MF_LZ1==================不用此字段
-                # AMTN_CLS  冲款金额  AMTN_BC
-                # RP_DD  冲款时间    datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-
-                # 修改回冲金额表
-                cursor.execute("""UPDATE MF_MON SET AMTN=AMTN+%s-%s,AMTN_REST=AMTN+%s-%s WHERE RP_NO=%s AND RP_ID='2'""", [AMTN_BC,float(row_AMTN),AMTN_BC,float(row_AMTN), RP_NO])
-                # RP_NO  付款单号  RP_NO
-                # AMTN   冲款金额
-                # AMTN_ARP  总金额  此栏位不需要改
-                # AMTN_REST
-
-                # 修改账户收支单表头
-                cursor.execute("""UPDATE MF_BAC SET BB_DD=%s,BACC_NO=%s,ACC_NO=%s,AMTN=%s WHERE BB_NO=%s AND BB_ID='BT'""",
-                [ datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CACC_NO, Acc_No_km, -float(AMTN_BC),'BT'+RP_NO[2::]])
-                # BB_NO  账户收支单单号  'BT'+RP_NO[2::]
-                # BB_DD   账户收支单日期  RP_NO[2::], datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                # BACC_NO  银行账户代号       CACC_NO
-                # ACC_NO  会计科目      待定,需要会计确定自动取银行账号里面的会计科目     100903
-                # AMTN 金额   付款是负数,收款是正数      -float(AMTN_BC)
-
-                #修改账户收支单表身
-                cursor.execute("""UPDATE TF_BAC SET BB_DD=%s,AMTN=%s WHERE BB_NO=%s AND BB_ID='BT'""",[datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC,'BT'+RP_NO[2::]])
-                # BB_NO  账户收支单号  'BT'+RP_NO[2::]
-                # BB_DD  账户收支单日期    datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                # AMTN   金额      AMTN_BC
-
-                # 回写立账单的数据需要减去之前冲款的金额  row_AMTN
-                cursor.execute("""UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s-%s,AMT=ISNULL(AMT,0)-%s+%s WHERE BIL_NO=%s AND BIL_ID='LP'""",[AMTN_BC,float(row_AMTN), AMTN_BC, float(row_AMTN),MF_LZ1])
-                # AMTN_RCV   已冲金额     ISNULL(AMTN_RCV,0)+%s
-                # AMT   未冲金额  ISNULL(AMT,0)-%s
-                # BIL_NO  开票单号
-
-                # 如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
-                row_AMT = cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ) FROM MF_ARP WHERE BIL_NO=%s AND BIL_ID='LP'",
-                                         [MF_LZ1]).fetchall()[0][0]
-                if row_AMT > 0:
-                    cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='F' WHERE BIL_NO=%s AND BIL_ID='LP'""", [MF_LZ1])
-                    cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='F',CLSLZ='T' WHERE PS_NO=%s AND PS_ID='PC'""", ['PC' + MF_LZ1[2::]])
-            except Exception:
-                transaction.savepoint_rollback(sid)
-                return http.HttpResponseForbidden("修改付款单sql语句执行异常")
-            transaction.savepoint_commit(sid)
-
-        context = {
-            'a': 'put付款作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def delete(self, request):
-        # 获取参数
-        req_data = json.loads(request.body.decode())
-        # 获取参数
-        RP_NO = req_data.get("RP_NO")  # 付款单号         字符类型
-        # # 获取开票作业单号
-        # MF_LZ1 = req_data.get("MF_LZ1")  # 开票作业单号         字符类型
-        # # 获取原付款单金额
-        # AMTN_BC = req_data.get("AMTN_BC")  # 原单付款金额        字符类型
-        # print(MF_LZ1)
-        # print(AMTN_BC)
-        # {
-        #     "RP_NO":"PT9A200001",
-        #     "AMTN_BC":199,
-        #     "MF_LZ1":"LP9A170002"
-        # }
-
-        # 判断单号是否存在
-        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO,'RP_ID','2')
-        if row_ZL_NO <= 0:
-            return http.HttpResponseForbidden('单号不存在')
-
-        with connection.cursor() as cursor:
-
-            # 获取原单付款单总金额用于扣减预付款单总金额
-            AMTN_BC = cursor.execute("""SELECT ISNULL(AMTN_CLS,0) FROM TF_MON WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO]).fetchall()[0][0]
-            # 获取开票单号
-            MF_LZ1 = cursor.execute("""SELECT ARP_NO FROM TC_MON WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO]).fetchall()[0][0]
-            MF_LZ1 = 'LP' + MF_LZ1[2::]
-        # 缓存之前冲款的金额用于回写立账冲款数据
-            row_AMTN = cursor.execute("""SELECT AMTN_BC FROM TF_MON WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO]).fetchall()[0][0]
-            # row_usr = usr_data(USR, USR_NAME, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
-
-            sid = transaction.savepoint()  # 开启事物
-            try:
-            # 删除付款单表头
-                cursor.execute("""DELETE FROM TC_MON WHERE  RP_NO=%s AND RP_ID='2'""", [RP_NO])
-            # 删除付款单表身
-                cursor.execute("""DELETE FROM TF_MON WHERE  RP_NO=%s AND RP_ID='2'""", [RP_NO])
-
-            #冲款付款金额表,如果是分多次付款的话那么就不能直接删除,是否是付一次款那么就可以直接删除
-            # 如果原来已经付款等于目前传过来的金额那么就可以直接删除
-            #     row_AMTN_MF_MON = cursor.execute("""SELECT AMTN FROM MF_MON WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO]).fetchall()[0][0]
-            #     if float(AMTN_BC)==float(row_AMTN_MF_MON):
-                #修改回冲金额表
-                cursor.execute("""DELETE FROM MF_MON WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO])
-                # else:
-                #     cursor.execute("""UPDATE MF_MON SET AMTN=AMTN+%s-%s,AMTN_REST=AMTN+%s-%s WHERE RP_NO=%s AND RP_ID='2'""",
-                #                [AMTN_BC, row_AMTN, AMTN_BC, row_AMTN, RP_NO])
-                # 删除账户收支单表头
-                cursor.execute("""DELETE FROM MF_BAC WHERE  BB_NO=%s AND BB_ID='BT'""", ['BT'+RP_NO[2::]])
-                # 删除账户收支单表身
-                cursor.execute("""DELETE FROM TF_BAC WHERE  BB_NO=%s AND BB_ID='BT'""", ['BT' + RP_NO[2::]])
-
-                # 如果金额立账金额等于传过来的金额那么就直接删除
-                row_AMTN_MF_ARP = cursor.execute("""SELECT AMTN FROM MF_ARP WHERE BIL_NO=%s""", [MF_LZ1]).fetchall()[0][0]
-                print(float(row_AMTN_MF_ARP))
-                if float(AMTN_BC)==float(row_AMTN_MF_ARP):
-                    cursor.execute(
-                        """UPDATE MF_ARP SET AMTN_RCV=0,AMT=0 WHERE BIL_NO=%s""",[MF_LZ1])
-                    # 回写立账单的数据需要减去之前冲款的金额  row_AMTN
-                else:
-                    cursor.execute(
-                        """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)-%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0) WHERE BIL_NO=%s""",[AMTN_BC, MF_LZ1])
-                # 结案掉立账单, 还有进货的立账结案标识
-                cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='F' WHERE BIL_NO=%s""", [MF_LZ1])
-                cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='F',CLSLZ='T' WHERE PS_NO=%s""", ['PC' + MF_LZ1[2::]])
-            except Exception:
-                transaction.savepoint_rollback(sid)
-                return http.HttpResponseForbidden("删除付款单sql语句执行异常")
-            transaction.savepoint_commit(sid)
-        context = {
-            'a': 'delete付款作业'
-        }
-        return http.JsonResponse(context)
-
-#预计付款单
-class ExpectedOperationView(View):
-    def get(self, request):
-        context = {
-            'a': 'get预付款作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def post(self, request):
-        # 获取参数
-        RP_NO = request.POST.get("RP_NO")  # 预付款单号         字符类型   ----------------1
-        RP_DD = request.POST.get("RP_DD")  # 预付款日期            字符类型  --------------------1
-        CUS_NO = request.POST.get("CUS_NO")  # 预付款客户编码        字符类型  -------------------------1
-        CUS_NO_NAME = request.POST.get("CUS_NO_NAME")  # 预付款客户名称       字符类型  ---------------------1
-        AMTN_BC = request.POST.get("AMTN_BC")  # 预付款金额            数字类型  ---------------------------1
-        CACC_NO = request.POST.get("CACC_NO")  # 预付款银行编码          字符类型    ------------1
-        USR = request.POST.get("USR")  # 制单人编码                   字符类型   ------------------1
-        USR_NAME = request.POST.get("USR_NAME")  # 制单人姓名         字符类型   -----------------------1
-        # 判断单号是否存在
-        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO,'RP_ID','2')
-        if row_ZL_NO > 0:
-            return http.HttpResponseForbidden('预付款单号已存在')
-
-        # 判断用户是否存在,不存在则创建
-        row_usr = usr_data(USR, USR_NAME, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
-
-        # 判断客户资料是否存在,不存在则创建
-        row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, '2', datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
-
-        with connection.cursor() as cursor:
-            # 获取银行账号的会计科目
-            Acc_No_km = cursor.execute("""SELECT ISNULL(Acc_No,'') FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
-            print(Acc_No_km)
-            if Acc_No_km=='':
-                return http.HttpResponseForbidden('银行会计科目不存在')
-
-            sid = transaction.savepoint()  # 开启事物
-            try:
-                cursor.execute("""INSERT INTO TF_MON(IRP_ID,RP_NO,ITM,RP_ID,CLS_ID,RP_DD,CUS_NO,INCLUDESON,AMTN_BC,AMTN_CLS,BC_NO,CACC_NO,EXC_RTO,DEP,USR,CHK_MAN,CLS_DATE,SYS_DATE,IEA_ID,IOR_ID,SK_TYPE)VALUES
-                ('T',%s,1,2,'F',%s,%s,'F',%s,0,%s,%s,1,'0000',%s,%s,%s,%s,'F','F',1)""",
-                [RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO,AMTN_BC,'BT'+RP_NO[2::],CACC_NO,USR,USR,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),datetime.datetime.strptime(RP_DD, '%Y-%m-%d')])
-                # RP_NO   预付款单号  RP_NO
-                # RP_DD   预付款日期   datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                #CUS_NO    客户编码     CUS_NO
-                #AMTN_BC    预付款金额  AMTN_BC
-                #BC_NO     账户收支单号   'BT'+RP_NO[2::]
-                # CACC_NO   付款银行编码  CACC_NO
-                #USR 制单人    USR
-                #CHK_MAN 审核人    USR
-                # CLS_DATE  审核时间    datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                # SYS_DATE    制单时间  datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-
-                # 插入立账金额
-                # cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s", [MF_LZ1])
-                cursor.execute("""INSERT INTO MF_MON(RP_ID,RP_NO,RP_DD,DEP,AMTN,AMTN_ARP,AMTN_REST,FJ_NUM)VALUES
-                          (2,%s,%s,'0000',%s,0,0,0)""" ,[RP_NO,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),AMTN_BC])
-                # RP_NO  单号  RP_NO
-                # RP_DD   时间  datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                # AMTN  金额    AMTN_BC
-
-                # 插入账户收支单表头
-                cursor.execute("""INSERT INTO MF_BAC(BB_ID,BB_NO,BB_DD,BACC_NO,ACC_NO,DEP,BIL_NO,EXC_RTO,AMTN,USR,CHK_MAN,OPN_ID,CLS_DATE,SYS_DATE,BIL_ID_N,BIL_NO_N)VALUES
-                ('BT',%s,%s,%s,%s,'0000',%s,1,%s,%s,%s,'F',%s,%s,'PT',%s)""",
-                ['BT'+RP_NO[2::],datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),CACC_NO,'BT'+RP_NO,-float(AMTN_BC),Acc_No_km,USR,USR,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),
-                RP_NO])
-                #BB_NO  收支单号    'BT'+RP_NO[2::]
-                #BB_DD   账户收支单时间  datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                #BACC_NO  银行账号编码  CACC_NO
-                #ACC_NO  会计科目先固定  100903
-                #BIL_NO  来源单号  'BT'+RP_NO
-                #AMTN   收支单金额  -float(AMTN_BC)
-                #USR  制单人   USR
-                #审核人  CHK_MAN
-                #CLS_DATE  审核人
-                #SYS_DATE   制单人
-
-                #插入收支单表身
-                cursor.execute("""INSERT INTO TF_BAC(BB_ID,BB_NO,ITM,BB_DD,EXC_RTO,AMTN,DEP,CUS_NO,ADD_ID,PRE_ITM)values
-                ('BT',%s,1,%s,1,%s,%s,'51','-',1)""", ['BT'+RP_NO[2::],datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),AMTN_BC,CUS_NO])
-                # BB_NO  单号  'BT'+RP_NO[2::]
-                #BB_DD  时间      datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                #AMTN  金额  AMTN_BC
-                #CUS_NO  客户编码   CUS_NO
-            except Exception:
-                transaction.savepoint_rollback(sid)
-                return http.HttpResponseForbidden("预计付款单新增sql语句执行异常")
-            transaction.savepoint_commit(sid)
-        context = {
-            'a': 'post预付款作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def put(self, request):
-        # 获取参数
-        req_data = json.loads(request.body.decode())
-        RP_NO = req_data.get("RP_NO")  # 预付款单号         字符类型   ----------------1
-        RP_DD = req_data.get("RP_DD")  # 预付款日期            字符类型  --------------------1
-        CUS_NO = req_data.get("CUS_NO")  # 预付款客户编码        字符类型  -------------------------1
-        CUS_NO_NAME = req_data.get("CUS_NO_NAME")  # 预付款客户名称       字符类型  ---------------------1
-        AMTN_BC = req_data.get("AMTN_BC")  # 预付款金额            数字类型  ---------------------------1
-        CACC_NO = req_data.get("CACC_NO")  # 预付款银行编码          字符类型    ------------1
-        UP_DD = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')  # 修改时间
-        # {
-        #     "RP_NO":"PT9A220001",
-        #     "RP_DD":"2019-10-22",
-        #     "CUS_NO":"AQ1111",
-        #     "CUS_NO_NAME":"天心软件",
-        #     "AMTN_BC":888,
-        #     "CACC_NO":"01"
-        # }
-
-        # 判断单号是否存在
-        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO,'RP_ID','2')
-        if row_ZL_NO == 0:
-            return http.HttpResponseForbidden('预付款单号不存在')
-
-        # 判断单号是不是已经产生付款单
-        row_ZL_NO = examine_ood('TF_MON1', 'IRP_NO', RP_NO, 'RP_ID', '2')
-        if row_ZL_NO > 0:
-            return http.HttpResponseForbidden('预付款单已经产生付款单')
-
-        # 判断客户资料是否存在,不存在则创建
-        row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, '2', datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
-
-        with connection.cursor() as cursor:
-            # 获取银行账号的会计科目
-            Acc_No_km = cursor.execute("""SELECT Acc_No FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
-
-            if Acc_No_km=='':
-                return http.HttpResponseForbidden('银行会计科目不存在')
-
-            sid = transaction.savepoint()  # 开启事物
-            try:
-                # 修改预付款单
-                # cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s", [MF_LZ1])
-                cursor.execute("""UPDATE TF_MON SET RP_DD=%s,CUS_NO=%s,AMTN_BC=%s,BC_NO=%s,CACC_NO=%s,MODIFY_DD=%s,MODIFY_MAN=USR WHERE RP_NO=%s""",
-                               [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),CUS_NO,AMTN_BC,'BT'+RP_NO[2::],CACC_NO,UP_DD,RP_NO])
-
-                # RP_NO   预付款单号  RP_NO
-                # RP_DD   预付款日期   datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                # CUS_NO    客户编码     CUS_NO
-                # AMTN_BC    预付款金额  AMTN_BC
-                # BC_NO     账户收支单号   'BT'+RP_NO[2::]
-                # CACC_NO   付款银行编码  CACC_NO
-                #修改立账单金额
-
-                cursor.execute("""UPDATE MF_MON SET RP_DD=%s,AMTN=%s WHERE RP_NO=%s""", [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),AMTN_BC,RP_NO])
-                # RP_NO  单号  RP_NO
-                # RP_DD   时间  datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                # AMTN  金额    AMTN_BC
-
-                #修改账户收支单表头
-                cursor.execute("""UPDATE MF_BAC SET BB_DD=%s,BACC_NO=%s,ACC_NO=%s,BIL_NO=%s,AMTN=%s WHERE BB_NO=%s""",
-                               [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),CACC_NO,Acc_No_km,'BT'+RP_NO,-float(AMTN_BC),'BT'+RP_NO[2::]])
-                # BB_NO  收支单号    'BT'+MF_LZ1[2::]
-                # BB_DD   账户收支单时间  datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                # BACC_NO  银行账号编码  CACC_NO
-                # ACC_NO  会计科目先固定  100903
-                # BIL_NO  来源单号  'BT'+RP_NO
-                # AMTN   收支单金额  -float(AMTN_BC)
-
-                # 修改立账单表身
-
-                cursor.execute("""UPDATE TF_BAC SET BB_DD=%s,AMTN=%s,CUS_NO=%s WHERE BB_NO=%s""", [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),AMTN_BC,CUS_NO,'BT'+RP_NO[2::]])
-                # BB_NO  单号  'BT'+RP_NO[2::]
-                # BB_DD  时间      datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                # AMTN  金额  AMTN_BC
-                # CUS_NO  客户编码   CUS_NO
-            except Exception:
-                transaction.savepoint_rollback(sid)
-                return http.HttpResponseForbidden("预计付款单修改sql语句执行异常")
-            transaction.savepoint_commit(sid)
-        context = {
-            'a': 'put预付款作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def delete(self, request):
-        #获取参数
-        req_data = json.loads(request.body.decode())
-        RP_NO = req_data.get("RP_NO")  # 预付款单号
-
-        # {
-        #     "RP_NO":"PT9A220001",
-        #     "RP_DD":"2019-10-22",
-        #     "CUS_NO":"AQ1111",
-        #     "CUS_NO_NAME":"天心软件",
-        #     "AMTN_BC":888,
-        #     "CACC_NO":"01"
-        # }
-        # 判断单号是不是已经产生付款单
-        row_ZL_NO = examine_ood('TF_MON1', 'IRP_NO', RP_NO,'RP_ID','2')
-        if row_ZL_NO > 0:
-            return http.HttpResponseForbidden   ('预付款单已经产生付款单')
-
-        # 判断单号是否存在
-        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO,'RP_ID','2')
-        if row_ZL_NO == 0:
-            return http.HttpResponseForbidden('预付款单号不存在')
-
-        with connection.cursor() as cursor:
-            sid = transaction.savepoint()  # 开启事物
-            try:
-                # 修改预付款单
-                # cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s", [MF_LZ1])
-                #删除付款单
-                cursor.execute("""DELETE FROM TF_MON WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO])
-                # 删除金额立账单
-                cursor.execute("""DELETE FROM MF_MON WHERE RP_NO=%s  AND RP_ID='2'""", [RP_NO])
-                #删除账户收支单表头
-                cursor.execute("""DELETE FROM MF_BAC WHERE BB_NO=%s""", ['BT'+RP_NO[2::]])
-                #删除账户收支单表身
-                cursor.execute("""DELETE FROM TF_BAC WHERE BB_NO=%s""", ['BT'+RP_NO[2::]])
-            except Exception:
-                transaction.savepoint_rollback(sid)
-                return http.HttpResponseForbidden("预计付款单修改sql语句执行异常")
-            transaction.savepoint_commit(sid)
-        context = {
-            'a': 'delete预付款作业'
-        }
-        return http.JsonResponse(context)
-
-
-#预付冲应付
-class ExpectedPtOperationView(View):
-
-    @transaction.atomic
-    def get(self, request):
-        sid = transaction.savepoint()
-        with connection.cursor() as cursor:
-            # cursor.execute("INSERT INTO CUST(CUS_NO,[NAME])VALUES ('QQ12345',%s)",[a])
-            # cursor.execute("UPDATE PRDT SET NAME='呜呜呜呜' where prd_no = %s", [a])
-            # cursor.execute("select * from prdt where prd_no = %s", [a])
-            try:
-                cursor.execute("""update cust set name='333'  where cus_no='ACDC438'""")
-                cursor.execute("""insert into cust(cus_no,name)values('BAG037211','weqwe')""")
-            except Exception:
-                transaction.savepoint_rollback(sid)
-                return http.HttpResponseForbidden("数据库执行异常")
-            transaction.savepoint_commit(sid)
-
-        context = {
-            'a': 'get预付冲应付作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def post(self, request):
-
-        req_data = json.loads(request.body.decode())
-        # print(req_data)
-        # # 获取参数
-        RP_NO = req_data.get("RP_NO")  #付款单号         字符类型
-        IRP_NO = req_data.get("IRP_NO")  #预付款单号         字符类型
-        RP_DD = req_data.get("RP_DD")  #付款日期         字符类型
-        CUS_NO = req_data.get("CUS_NO")  #付款客户         字符类型
-        USR = req_data.get("USR")  #制单人         字符类型
-        list = req_data.get("list")  #付款单号         字符类型
-        # print(RP_DD)
-        # print(IRP_NO)
-        # print(list[0])
-
-        # 判断单号是否存在
-        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO,'RP_ID','2')
-        if row_ZL_NO > 0:
-            return http.HttpResponseForbidden('预付款冲应付单据号码已存在')
-        # 获取总金额
-        sum_ATM = 0  # 冲款金额
-        yf_sum = 0  # 获取单据应付款总金额
-        for i in list:
-            sum_ATM = round(sum_ATM + i["ATM"], 4)
-            with connection.cursor() as cursor:
-                # 获取单据应付款总金额
-                yf_sum =round(yf_sum + cursor.execute("""SELECT AMTN FROM MF_ARP WHERE BIL_NO=%s""", [i["DH"]]).fetchall()[0][0], 4)
-        if sum_ATM>yf_sum:
-            return http.HttpResponseForbidden('冲款金额大于应付金额')
-
-        with connection.cursor() as cursor:
-
-            sid = transaction.savepoint()  # 开启事物
-            try:
-                # 插入回冲预付款扣款表
-                # cursor.execute("SELECT COUNT(*) FROM CUST WHERE CUS_NO=%s", [CUS_NO])
-                cursor.execute("""INSERT INTO TF_MON1(RP_ID,RP_NO,ITM,IRP_NO,RP_ID1,IRPITM,IRPITM2,AMTN_CLS)VALUES
-                (2,%s,1,%s,2,1,0,%s)""", [RP_NO,IRP_NO,sum_ATM])
-                # RP_NO  付款单号  RP_NO
-                # IRP_NO  预付款单号  IRP_NO
-                # AMTN_CLS  付款总金额  sum_ATM
-
-                # 插入付款单表头
-                cursor.execute("""INSERT INTO TF_MON(IRP_ID,RP_NO,ITM,RP_ID,CLS_ID,RP_DD,CUS_NO,INCLUDESON,AMTN_CLS,AMTN_IRP,EXC_RTO,DEP,USR,CHK_MAN,CLS_DATE,SYS_DATE,IEA_ID,IOR_ID,SK_TYPE)VALUES
-                ('F',%s,1,2,'F',%s,%s,'F',%s,%s,1,'0000',%s,%s,%s,%s,'F','F',1)""",
-                [RP_NO,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),CUS_NO,sum_ATM,sum_ATM,USR,USR,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),datetime.datetime.strptime(RP_DD, '%Y-%m-%d')])
-                # RP_NO  付款单  RP_NO
-                # RP_DD  付款日期 datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                # CUS_NO 付款厂商 CUS_NO
-                # AMTN_CLS  付款金额  sum_ATM
-                # AMTN_IRP   金额 sum_ATM
-                # USR     制单人   USR
-                # CHK_MAN     审核人   USR
-                # CLS_DATE   制单时间   datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                # SYS_DATE    审核时间      datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-
-                # 插入付款单表身,先遍历出每一项的单号和金额,然后在插入
-                itm=0  #定义项次
-                for i in list:
-                    itm +=1
-                    print(i["DH"],i["ATM"])  #得到单号和金额
-                    print(itm)
-                    cursor.execute("""INSERT INTO TC_MON(RP_ID,RP_NO,ITM,ITM2,ARP_NO,AMTN_CLS,ARP_OPN_ID,RP_DD,CUS_NO,PRE_ITM)values
-                    (2,%s,1,%s,%s,%s,2,%s,%s,%s)""", [RP_NO,itm,'AP'+i["DH"][2::],i["ATM"],datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),CUS_NO,itm])
-                    # RP_NO 付款单号  RP_NO
-                    # ITM2  项次    itm
-                    # ARP_NO 立账单号  'AP'+i["DH"][2::]
-                    # AMTN_CLS    冲款金额  i["ATM"]
-                    # RP_DD   冲款日期  datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                    # CUS_NO  客户  CUS_NO
-                    # PRE_ITM  项次  itm
-
-                    # 更新立账金额
-                    # 回写立账单的数据
-                    # cursor.execute(
-                    #     """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0)-%s WHERE BIL_NO=%s""",
-                    #     [i["ATM"],i["ATM"], i["DH"]])
-
-                    cursor.execute(
-                        """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0)-%s WHERE BIL_NO=%s""",
-                        [i["ATM"],i["ATM"], i["DH"]])
-
-                    # cursor.execute(
-                    #     """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s,AMT=ISNULL(AMT,0)-ISNULL(AMTN_RCV,0)-%s WHERE BIL_NO=%s""",
-                    #     [AMTN_BC, AMTN_BC, MF_LZ1])
-                    # AMTN_RCV   已冲金额     ISNULL(AMTN_RCV,0)+%s
-                    # AMT   未冲金额  ISNULL(AMT,0)-%s
-                    # BIL_NO  开票单号
-
-                    # 如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
-                    row_AMT = cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s",
-                                             [i["DH"]]).fetchall()[0][0]
-                    if row_AMT <= 0:
-                        cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='T' WHERE BIL_NO=%s""", [i["DH"]])
-                        cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='T',CLSLZ='T' WHERE PS_NO=%s AND PS_ID='PC'""", ['PC' + i["DH"][2::]])
-                # 插入预付款已冲金额表  ------
-                cursor.execute(
-                    """INSERT INTO MF_MON(RP_NO,RP_DD,RP_ID,DEP,AMTN,AMTN_ARP,AMTN_REST,FJ_NUM)VALUES(%s,%s,2,'0000',0,%s,%s,0)""",
-                    [RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), yf_sum,sum_ATM])
-                # RP_NO  单号  RP_NO
-                # RP_DD  时间  datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                # AMTN_ARP  表身总金额   yf_sum
-                # AMTN_REST  本次冲款总金额    sum_ATM
-                # 更新预付款单已付金额
-                cursor.execute(
-                    """UPDATE TF_MON SET AMTN_CLS=ISNULL(AMTN_CLS,0)+%s WHERE RP_NO=%s AND RP_ID='2'""",
-                    [sum_ATM,IRP_NO])
-
-                # 获取预付款单的预付金额和已冲金额,进行对比,如果两个值相同,那么就结案掉预付款单
-                row_AMTN_MF_MON = cursor.execute(
-                    """SELECT ISNULL(AMTN_BC,0) AS AMTN_BC, ISNULL(AMTN_CLS,0) AS AMTN_CLS FROM TF_MON  WHERE RP_NO=%s AND RP_ID='2'""",[IRP_NO]).fetchall()
-                if float(row_AMTN_MF_MON[0][0]) == float(row_AMTN_MF_MON[0][1]):
-                    cursor.execute("""UPDATE TF_MON SET CLS_ID='T' WHERE IRP_NO=%s AND RP_ID='2'""",[IRP_NO])
-            except Exception:
-                transaction.savepoint_rollback(sid)
-                return http.HttpResponseForbidden("预计冲应该付作业新增单据sql语句执行异常")
-            transaction.savepoint_commit(sid)
-        a = {
-            "RP_NO": "PT9A230002",
-            "IRP_NO": "PT9A220001",
-            "RP_DD":"2019-10-22",
-            "CUS_NO":"AQ1111",
-            "USR":"A10000",
-            "list": [
-                {"DH": "LP9A230001",
-                 "ATM": 111
-                 },
-                 {"DH": "LP9A230002",
-                 "ATM": 90
-                 }
-            ]
-        }
-        context = {
-            'a': 'post预付冲应付作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def put(self, request):
-        req_data = json.loads(request.body.decode())
-        # # 获取参数
-        RP_NO = req_data.get("RP_NO")  # 付款单号         字符类型
-        IRP_NO = req_data.get("IRP_NO")  # 预付款单号         字符类型
-        RP_DD = req_data.get("RP_DD")  # 付款日期         字符类型
-        list = req_data.get("list")  # 付款单号         字符类型
-        UP_DD = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')  # 修改时间
-        # 判断单号是否存在
-        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO,'RP_ID','2')
-        if row_ZL_NO <= 0:
-            return http.HttpResponseForbidden('付款单不存在')
-
-        # 获取总金额
-        sum_ATM = 0  # 冲款金额
-        yf_sum = 0  # 获取单据应付款总金额
-        for i in list:
-            sum_ATM = round(sum_ATM + i["ATM"], 4)
-            with connection.cursor() as cursor:
-                # 获取单据应付款总金额
-                yf_sum = round(
-                    yf_sum + cursor.execute("""SELECT AMTN FROM MF_ARP WHERE BIL_NO=%s""", [i["DH"]]).fetchall()[0][0], 4)
-        if sum_ATM > yf_sum:
-            return http.HttpResponseForbidden('冲款金额大于应付金额')
-
-        with connection.cursor() as cursor:
-
-            sid = transaction.savepoint()  # 开启事物
-            try:
-                # 修改回冲预付款扣款表
-                cursor.execute("""UPDATE  TF_MON1 SET AMTN_CLS=%s WHERE RP_NO=%s AND RP_ID='2'""", [sum_ATM, RP_NO])
-                # RP_NO  付款单号  RP_NO
-                # IRP_NO  预付款单号  IRP_NO
-                # AMTN_CLS  付款总金额  sum_ATM
-
-                # 修改付款单表头
-                cursor.execute("""UPDATE TF_MON SET RP_DD=%s,AMTN_CLS=%s,AMTN_IRP=%s,MODIFY_DD=%s,MODIFY_MAN=USR WHERE RP_NO=%s AND RP_ID='2'""",
-                               [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),sum_ATM,sum_ATM,UP_DD,RP_NO])
-                # RP_NO  付款单  RP_NO
-                # RP_DD  付款日期 datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                # CUS_NO 付款厂商 CUS_NO
-                # AMTN_CLS  付款金额  sum_ATM
-                # AMTN_IRP   金额 sum_ATM
-                # 修改付款单表身,先遍历出每一项的单号和金额,然后在插入
-                itm = 0  # 定义项次
-                YD_ATY = 0 #原来单总金额
-                for i in list:
-                    itm += 1
-                    print(i["DH"], i["ATM"])  # 得到单号和金额
-                    QTY_TC_MON=cursor.execute("""SELECT ISNULL(AMTN_CLS,0) FROM TC_MON WHERE ARP_NO=%s""", ['AP'+i["DH"][2::]]).fetchall()[0][0]
-                    YD_ATY = round((YD_ATY + QTY_TC_MON),4)
-                    print(i["ATM"])
-                    cursor.execute("""UPDATE TC_MON SET AMTN_CLS=%s WHERE ARP_NO=%s AND RP_ID='2'""", [i["ATM"],'AP'+i["DH"][2::]])
-
-                    # RP_NO 付款单号  RP_NO
-                    # ITM2  项次    itm
-                    # ARP_NO 立账单号  'AP'+i["DH"][2::]
-                    # AMTN_CLS    冲款金额  i["ATM"]
-                    # RP_DD   冲款日期  datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                    # CUS_NO  客户  CUS_NO
-                    # PRE_ITM  项次  itm
-
-                    # 更新立账金额
-                    # 回写立账单的数据
-                    # 获取原单已冲金额未冲金额
-                    #AMTN_RCV 已经冲金额   AMT未冲金额========================================================================================
-                    ATM_MF_ARP=cursor.execute("""SELECT ISNULL(AMTN_RCV,0),ISNULL(AMT,0) FROM MF_ARP  WHERE BIL_NO=%s""",[ i["DH"]]).fetchall()
-                    AMTN_RCV=ATM_MF_ARP[0][0]    #原单已经冲金额
-                    AMT=ATM_MF_ARP[0][1]    #原单未冲金额
-                    cursor.execute(
-                        """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s-%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0)-%s-%s WHERE BIL_NO=%s""",
-                        [i["ATM"],AMTN_RCV, i["ATM"],AMT, i["DH"]])
-
-                    # AMTN_RCV   已冲金额     ISNULL(AMTN_RCV,0)+%s
-                    # AMT   未冲金额  ISNULL(AMT,0)-%s
-                    # BIL_NO  开票单号
-
-                    # 如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
-                    row_AMT = cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s",
-                                             [i["DH"]]).fetchall()[0][0]
-                    if row_AMT <= 0:
-                        cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='F' WHERE BIL_NO=%s""", [i["DH"]])
-                        cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='F',CLSLZ='F' WHERE PS_NO=%s AND PS_ID='PC'""",
-                                       ['PC' + i["DH"][2::]])
-
-                # 更新预付款已冲金额表
-                cursor.execute("""UPDATE MF_MON SET AMTN_REST=%s WHERE RP_NO=%s AND RP_ID='2'""",[sum_ATM,RP_NO])
-                # RP_NO  单号  RP_NO
-                # RP_DD  时间  datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-                # AMTN_ARP  应付总金额   yf_sum
-                # AMTN_REST  本次冲款总金额    sum_ATM
-
-                # 更新预付款单已付金额
-                cursor.execute(
-                    """UPDATE TF_MON SET AMTN_CLS=ISNULL(AMTN_CLS,0)+%s-%s WHERE RP_NO=%s AND RP_ID='2'""",
-                    [sum_ATM,YD_ATY,IRP_NO])
-
-                # 获取预付款单的预付金额和已冲金额,进行对比,如果两个值相同,那么就结案掉预付款单
-                row_AMTN_MF_MON = cursor.execute(
-                    """SELECT ISNULL(AMTN_BC,0) AS AMTN_BC, ISNULL(AMTN_CLS,0) AS AMTN_CLS FROM TF_MON  WHERE RP_NO=%s AND RP_ID='2'""",
-                    [IRP_NO]).fetchall()
-
-                if float(row_AMTN_MF_MON[0][0]) == float(row_AMTN_MF_MON[0][1]):
-                    cursor.execute("""UPDATE TF_MON SET CLS_ID='F' WHERE IRP_NO=%s AND RP_ID='2'""", [IRP_NO])
-
-            except Exception:
-                transaction.savepoint_rollback(sid)
-                return http.HttpResponseForbidden("预计冲应该付作业修改单据sql语句执行异常")
-            transaction.savepoint_commit(sid)
-        a = {
-            "RP_NO": "PT9A230002",
-            "IRP_NO": "PT9A220001",
-            "RP_DD": "2019-10-22",
-            "list": [
-                {"DH": "LP9A230001",
-                 "ATM": 111
-                 },
-                {"DH": "LP9A230002",
-                 "ATM": 90
-                 }
-            ]
-        }
-
-
-        context = {
-            'a': 'put预付冲应付作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def delete(self, request):
-        req_data = json.loads(request.body.decode())
-        # # 获取参数
-        RP_NO = req_data.get("RP_NO")  # 付款单号         字符类型
-
-        # 判断单号是否存在
-        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO,'RP_ID','2')
-        if row_ZL_NO <= 0:
-            return http.HttpResponseForbidden('单号不存在')
-        with connection.cursor() as cursor:
-
-            sid = transaction.savepoint()  # 开启事物
-            try:
-                # 获取原单付款单总金额用于扣减预付款单总金额
-                sum_TF_MON=cursor.execute("""SELECT ISNULL(AMTN_CLS,0) FROM TF_MON WHERE RP_NO=%s AND RP_ID='2'""",[RP_NO]).fetchall()[0][0]
-                #获取预付款单单号
-                TF_MON_NO = cursor.execute("""SELECT IRP_NO FROM TF_MON1 WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO]).fetchall()[0][0]
-                # 修改预付款扣款金额
-                cursor.execute("""UPDATE TF_MON SET AMTN_CLS=ISNULL(AMTN_CLS,0)-%s WHERE RP_NO=%s AND RP_ID='2'""", [sum_TF_MON,TF_MON_NO])
-                # 以列表的形式获取付款单的立账单号
-                TC_MON_RP_NO = cursor.execute("""SELECT ARP_NO FROM TC_MON WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO]).fetchall()
-                # 遍历列表得到每一张立账单号
-                for i in TC_MON_RP_NO:
-                    print(i[0])  #立账单号
-                    # 更新立账金额
-                    # 回写立账单的数据
-                    # 获取原单已冲金额未冲金额
-                    # AMTN_RCV 已经冲金额   AMT未冲金额===========================================================
-                    ATM_MF_ARP = cursor.execute("""SELECT ISNULL(AMTN_RCV,0),ISNULL(AMT,0) FROM MF_ARP  WHERE ARP_NO=%s""",[i[0]]).fetchall()
-                    AMTN_RCV = ATM_MF_ARP[0][0]  # 原单已经冲金额
-                    AMT = ATM_MF_ARP[0][1]  # 原单未冲金额
-                    cursor.execute(
-                        """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)-%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0)-%s WHERE ARP_NO=%s""",
-                        [AMTN_RCV,AMT,i[0]])
-
-                    # AMTN_RCV   已冲金额     ISNULL(AMTN_RCV,0)+%s
-                    # AMT   未冲金额  ISNULL(AMT,0)-%s
-                    # BIL_NO  开票单号
-
-                    # 如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
-                    row_AMT = cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE ARP_NO=%s",[i[0]]).fetchall()[0][0]
-                    if row_AMT <= 0:
-                        cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='F' WHERE ARP_NO=%s""", [i[0]])
-                        cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='F',CLSLZ='F' WHERE PS_NO=%s""",['PC' + i[0][2::]])
-                # 删除扣款单
-                cursor.execute("""DELETE FROM TF_MON1 WHERE RP_NO=%s RP_ID='2'""", [RP_NO])
-                #删除付款单表头
-                cursor.execute("""DELETE FROM TF_MON WHERE RP_NO=%s RP_ID='2'""", [RP_NO])
-                #删除付款单表身
-                cursor.execute("""DELETE FROM TC_MON WHERE RP_NO=%s RP_ID='2'""", [RP_NO])
-                #删除付款记录
-                cursor.execute("""DELETE FROM MF_MON WHERE RP_NO=%s RP_ID='2'""", [RP_NO])
-            except Exception:
-                transaction.savepoint_rollback(sid)
-                return http.HttpResponseForbidden("预计冲应该付作业修改单据sql语句执行异常")
-            transaction.savepoint_commit(sid)
-        context = {
-            'a': 'delete预付冲应付作业'
-        }
-        return http.JsonResponse(context)
-
-
-
-
+import json
+import traceback
+
+import re
+from django import http
+from django.shortcuts import render
+from django.db import transaction
+# Create your views here.
+from django.views import View
+from django.db import connection
+
+from utils.cust_data import customer_data
+from utils.et_CACC_NO import et_CACC_NO
+from utils.examine_ood import examine_ood
+from utils.if_account import if_account
+from utils.usr_data import usr_data
+import datetime
+
+# 付款作业
+class PaymentOperationView(View):
+    def get(self,request):
+        a='TF_MON'
+        b='RP_NO'
+        c='PT20191015' #为0.000
+        # sql="SELECT COUNT(*) FROM %s WHERE %s='%s' "%(a,b,c)
+        # print(sql)
+        with connection.cursor() as cursor:
+            # cursor.execute("INSERT INTO CUST(CUS_NO,[NAME])VALUES ('QQ12345',%s)",[a])
+            # cursor.execute("UPDATE PRDT SET NAME='呜呜呜呜' where prd_no = %s", [a])
+            # cursor.execute("select * from prdt where prd_no = %s", [a])
+            row_AMTN_MF_MON = cursor.execute("""SELECT AMTN FROM MF_MON WHERE RP_NO='PT9A210001'""").fetchall()[0][0]
+            # row_ZL_NO = cursor.execute(sql).fetchall()[0][0]
+            print(float(row_AMTN_MF_MON))
+        context={
+            'a':'get付款作业'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def post(self, request):
+
+        # 获取参数
+        RP_NO = request.POST.get("RP_NO")  #付款单号         字符类型
+        RP_DD = request.POST.get("RP_DD")  #付款日期            字符类型
+        CUS_NO = request.POST.get("CUS_NO")  #付款客户编码        字符类型
+        AMTN_BC = request.POST.get("AMTN_BC")  #付款金额            数字类型
+        CACC_NO = request.POST.get("CACC_NO")  #付款银行编码          字符类型
+        USR = request.POST.get("USR")  #制单人编码                   字符类型
+        USR_NAME = request.POST.get("USR_NAME")  #制单人姓名         字符类型
+        MF_LZ1 = request.POST.get("MF_LZ1")  #进货开票单号         字符类型
+
+        # 判断单号的合法性
+        if RP_NO[:3] != 'PTF' or len(RP_NO) != 10:
+            return http.HttpResponseForbidden('付款单号输入不合法,单号必须是PTF开头且长度必须是10位')
+        # 校验日期格式
+        try:
+            datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+        except Exception:
+            return http.HttpResponseForbidden('日期格式输入不正确')
+        if RP_NO is None:
+            return http.HttpResponseForbidden('请输入付款单号')
+        # //判断有没有输入银行账号
+        sum_CACC_NO = et_CACC_NO(CACC_NO)
+        if sum_CACC_NO == 'NO':
+            return http.HttpResponseForbidden('请检查银行账号是否存在或者是否输入正确')
+            # 判断金额输入是否正确
+        if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(AMTN_BC)) is None:
+            return http.HttpResponseForbidden('金额输入不正确')
+        # 判断单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO,'RP_ID','2')
+        if row_ZL_NO > 0:
+            return http.HttpResponseForbidden('付款单号已存在')
+        # 判断账号类别
+        sid = transaction.savepoint()  # 开启事物
+        try:
+            tp_CACC_NO = if_account(CACC_NO)
+        except Exception:
+            transaction.savepoint_rollback(sid)
+            return http.HttpResponseForbidden("查询账户类型语句执行异常")
+        transaction.savepoint_commit(sid)
+        # 判断用户是否存在,不存在则创建
+        row_usr = usr_data(USR, USR_NAME,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
+        with connection.cursor() as cursor:
+
+            MF_LZ1_NO = cursor.execute("""SELECT COUNT(*) FROM MF_ARP WHERE ARP_NO=%s""", ['AP' + MF_LZ1[2::]]).fetchall()[0][0]
+            if MF_LZ1_NO<=0:
+                return http.HttpResponseForbidden('开票单号不存在')
+
+            # 获取银行账号的会计科目
+            Acc_No_km = cursor.execute("""SELECT ISNULL(Acc_No,'') FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
+            if Acc_No_km == '':
+                return http.HttpResponseForbidden('银行会计科目不存在')
+            sid = transaction.savepoint()  #开启事物
+            try:
+                # 银行账户
+                if int(tp_CACC_NO) == 1:
+                    # cursor.execute("""UPDATE TF_PSS SET AMT_FP=%s,AMTN_NET_FP=%s WHERE PS_NO=%s""",[AMT, AMT, 'PC' + ZL_NO[2::]])
+                    #插入付款单表头
+                    cursor.execute("""INSERT INTO TF_MON(IRP_ID,RP_NO,ITM,RP_ID,CLS_ID,RP_DD,CUS_NO,INCLUDESON,AMTN_BB,AMTN_CLS,BC_NO,BACC_NO,EXC_RTO,DEP,USR,CHK_MAN,CLS_DATE,SYS_DATE,IEA_ID,IOR_ID,SK_TYPE)
+                  VALUES('F',%s,1,2,'T',%s,%s,'F',%s,%s,%s,%s,1,'0000',%s,%s,%s,%s,'F','F',1)""",
+                  [RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO ,AMTN_BC,AMTN_BC,'BT'+RP_NO[2::],CACC_NO,USR,USR,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),
+                  datetime.datetime.strptime(RP_DD, '%Y-%m-%d')])
+                # 现金账户
+                if int(tp_CACC_NO) == 2:
+                    # 插入付款单表头
+                    cursor.execute("""INSERT INTO TF_MON(IRP_ID,RP_NO,ITM,RP_ID,CLS_ID,RP_DD,CUS_NO,INCLUDESON,AMTN_BC,AMTN_CLS,BC_NO,CACC_NO,EXC_RTO,DEP,USR,CHK_MAN,CLS_DATE,SYS_DATE,IEA_ID,IOR_ID,SK_TYPE)
+                      VALUES('F',%s,1,2,'T',%s,%s,'F',%s,%s,%s,%s,1,'0000',%s,%s,%s,%s,'F','F',1)""",[RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO, AMTN_BC, AMTN_BC,
+                       'BT' + RP_NO[2::], CACC_NO, USR, USR, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),datetime.datetime.strptime(RP_DD, '%Y-%m-%d')])
+                # RP_NO   付款单号  RP_NO
+                #RP_DD    付款日期   datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                #CUS_NO   付款客户编码    CUS_NO
+                #AMTN_BC    付款金额     AMTN_BC
+                #AMTN_CLS    冲款金额      AMTN_CLS
+                #BC_NO      账户收支单号
+                #CACC_NO    'BT'+RP_NO[2::]
+                #CACC_NO        付款银行编码
+                #USR   制单人      USR
+                #CHK_MAN   审核人      USR
+                #CLS_DATE    制单时间       datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                #CLS_DATE       审核时间        datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+
+                # 插入付款单表身-------------改CUR_ID  RMB
+                cursor.execute("""INSERT INTO TC_MON(RP_ID,RP_NO,ITM,ITM2,ARP_NO,AMTN_CLS,ARP_OPN_ID,RP_DD,CUS_NO,PRE_ITM)values
+                (2,%s,1,1,%s,%s,2,%s,%s,1)""",
+                [RP_NO, 'AP'+MF_LZ1[2::], AMTN_BC,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),CUS_NO])
+                # RP_NO   付款单号  RP_NO
+                #ARP_NO   立账单号      MF_LZ1
+                #AMTN_CLS  冲款金额  AMTN_BC
+                #RP_DD  冲款时间    datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                #CUS_NO   冲款客户      CUS_NO
+
+                # 插入回写冲款金额表
+                cursor.execute("""INSERT INTO MF_MON(RP_ID,RP_NO,RP_DD,DEP,AMTN,AMTN_ARP,AMTN_REST,FJ_NUM)VALUES
+                (2,%s,%s,'0000',%s,%s,%s,0)""",[RP_NO,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC,AMTN_BC,AMTN_BC])
+                #RP_NO  付款单号  RP_NO
+                #AMTN   冲款金额
+                #AMTN_ARP  总金额
+                #AMTN_REST
+
+                # 插入账户收支单表头
+                cursor.execute("""INSERT INTO MF_BAC(BB_ID,BB_NO,BB_DD,BACC_NO,ACC_NO,DEP,BIL_NO,EXC_RTO,AMTN,USR,CHK_MAN,OPN_ID,CLS_DATE,SYS_DATE,BIL_ID_N,BIL_NO_N)VALUES
+                ('BT',%s,%s,%s,%s,'0000',%s,1,%s,%s,%s,'F',%s,%s,'PT',%s)""",
+                ['BT'+RP_NO[2::], datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CACC_NO,Acc_No_km,'PT'+RP_NO,-float(AMTN_BC),USR,USR,datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                ,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),RP_NO])
+                #BB_NO  账户收支单单号  'BT'+RP_NO[2::]
+                #BB_DD   账户收支单日期  RP_NO[2::], datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                # BACC_NO  银行账户代号
+                #ACC_NO  会计科目      待定,需要会计确定自动取银行账号里面的会计科目
+                #BIL_NO  来源单号   'PT'+RP_NO
+                #AMTN 金额   付款是负数,收款是正数      -float(AMTN_BC)
+                #USR  制单人       USR
+                #  CHK_MAN  审核人     USR
+                #CLS_DATE  审核日期
+                # SYS_DATE  录入日期
+                #BIL_NO_N  来源单号
+
+                # 插入账户收支单表身
+                cursor.execute("""INSERT INTO TF_BAC(BB_ID,BB_NO,ITM,BB_DD,EXC_RTO,AMTN,DEP,CUS_NO,ADD_ID,PRE_ITM)values
+                ('BT',%s,1,%s,1,%s,'0000',%s,'-',1)""",['BT'+RP_NO[2::], datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC, CUS_NO])
+                # BB_NO  账户收支单号  'BT'+RP_NO[2::]
+                # BB_DD  账户收支单日期    datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                #AMTN   金额      AMTN_BC
+                #CUS_NO  客户编码   CUS_NO
+
+                #回写立账单的数据
+                cursor.execute("""UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0)-%s WHERE BIL_NO=%s""",[AMTN_BC, AMTN_BC,MF_LZ1])
+                # AMTN_RCV   已冲金额     ISNULL(AMTN_RCV,0)+%s
+                # AMT   未冲金额  ISNULL(AMT,0)-%s
+                # BIL_NO  开票单号
+
+                #如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
+                row_AMT = cursor.execute("SELECT ISNULL(AMT,0) FROM MF_ARP WHERE BIL_NO=%s", [MF_LZ1]).fetchall()[0][0]
+                print(row_AMT)
+                if row_AMT<=0:
+                    cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='T' WHERE BIL_NO=%s""",[MF_LZ1])
+                    cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='T',CLSLZ='T' WHERE PS_NO=%s""",['PC'+MF_LZ1[2::]])
+            except Exception:
+                transaction.savepoint_rollback(sid)
+                return http.HttpResponseForbidden("新增付款单sql语句执行异常")
+            transaction.savepoint_commit(sid)
+        context = {
+            'a': 'post付款作业'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def put(self, request):
+        req_data = json.loads(request.body.decode())
+        # 获取参数
+        RP_NO = req_data.get("RP_NO")  #付款单号         字符类型
+        RP_DD = req_data.get("RP_DD")  #付款日期            字符类型
+        AMTN_BC = req_data.get("AMTN_BC")  #付款金额            数字类型
+        CACC_NO = req_data.get("CACC_NO")  #付款银行编码          字符类型
+        MF_LZ1 = req_data.get("MF_LZ1")  #进货开票单号         字符类型
+        UP_DD = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')  #修改时间
+        # {
+        #     "RP_NO":"PT9A200001",
+        #     "RP_DD":"2019-10-20",
+        #     "AMTN_BC":199,
+        #     "CACC_NO":"01",
+        #     "MF_LZ1":"LP9A170002"
+        # }
+        # 校验日期格式
+        try:
+            datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+        except Exception:
+            return http.HttpResponseForbidden('日期格式输入不正确')
+        if RP_NO is None:
+            return http.HttpResponseForbidden('请输入收款单号')
+            # 判断金额输入是否正确
+        if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(AMTN_BC)) is None:
+            return http.HttpResponseForbidden('金额输入不正确')
+        # 判断单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO,'RP_ID','2')
+        if row_ZL_NO <= 0:
+            return http.HttpResponseForbidden('付款单号不存在')
+        # //判断有没有输入银行账号
+        sum_CACC_NO = et_CACC_NO(CACC_NO)
+        if sum_CACC_NO == 'NO':
+            return http.HttpResponseForbidden('请检查银行账号是否存在或者是否输入正确')
+        # 判断账号类别
+        sid = transaction.savepoint()  # 开启事物
+        try:
+            tp_CACC_NO = if_account(CACC_NO)
+        except Exception:
+            transaction.savepoint_rollback(sid)
+            return http.HttpResponseForbidden("查询账户类型语句执行异常")
+        transaction.savepoint_commit(sid)
+        # 付款单不能修改客户
+        # # 判断用户是否存在,不存在则创建
+        # row_usr = usr_data(USR, USR_NAME, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
+        with connection.cursor() as cursor:
+
+            # 判断开票单号是否存在
+            MF_LZ1_NO = cursor.execute("""SELECT COUNT(*) FROM TC_MON WHERE ARP_NO=%s""", ['AP' + MF_LZ1[2::]]).fetchall()[0][0]
+
+            if MF_LZ1_NO<=0:
+                return http.HttpResponseForbidden('开票单号不存在')
+            # 获取银行账号的会计科目
+            Acc_No_km = cursor.execute("""SELECT Acc_No FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
+            if Acc_No_km == '':
+                return http.HttpResponseForbidden('银行会计科目不存在')
+
+            # 缓存之前冲款的金额用于回写立账冲款数据
+            row_AMTN = cursor.execute("""SELECT AMTN_BC FROM TF_MON WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO]).fetchall()[0][0]
+
+            sid = transaction.savepoint()  # 开启事物
+            try:
+                # 银行账户
+                if int(tp_CACC_NO) == 1:
+                    #修改付款单表头
+                    cursor.execute("""UPDATE TF_MON SET RP_DD=%s,AMTN_BB=%s,BACC_NO=%s,MODIFY_DD=%s,MODIFY_MAN=USR,AMTN_CLS=%s WHERE RP_NO=%s AND RP_ID='2'""",[RP_DD, AMTN_BC, CACC_NO,UP_DD,AMTN_BC,RP_NO])
+                    # RP_NO   付款单号  RP_NO
+                    # RP_DD    付款日期   datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                    # AMTN_BC    付款金额     AMTN_BC
+                    # CACC_NO        付款银行编码
+                # 现金账户
+                if int(tp_CACC_NO) == 2:
+                    # 修改付款单表头
+                    cursor.execute("""UPDATE TF_MON SET RP_DD=%s,AMTN_BC=%s,CACC_NO=%s,MODIFY_DD=%s,MODIFY_MAN=USR,AMTN_CLS=%s WHERE RP_NO=%s AND RP_ID='2'""",
+                        [RP_DD, AMTN_BC, CACC_NO, UP_DD, AMTN_BC, RP_NO])
+                # 修改付款单表身
+                cursor.execute("""UPDATE TC_MON SET RP_DD=%s,AMTN_CLS=%s WHERE RP_NO=%s AND RP_ID='2'""",[RP_DD, AMTN_BC, RP_NO])
+                # RP_NO   付款单号  RP_NO
+                # ARP_NO   立账单号      MF_LZ1==================不用此字段
+                # AMTN_CLS  冲款金额  AMTN_BC
+                # RP_DD  冲款时间    datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+
+                # 修改回冲金额表
+                cursor.execute("""UPDATE MF_MON SET AMTN=AMTN+%s-%s,AMTN_REST=AMTN+%s-%s WHERE RP_NO=%s AND RP_ID='2'""", [AMTN_BC,float(row_AMTN),AMTN_BC,float(row_AMTN), RP_NO])
+                # RP_NO  付款单号  RP_NO
+                # AMTN   冲款金额
+                # AMTN_ARP  总金额  此栏位不需要改
+                # AMTN_REST
+
+                # 修改账户收支单表头
+                cursor.execute("""UPDATE MF_BAC SET BB_DD=%s,BACC_NO=%s,ACC_NO=%s,AMTN=%s WHERE BB_NO=%s AND BB_ID='BT'""",
+                [ datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CACC_NO, Acc_No_km, -float(AMTN_BC),'BT'+RP_NO[2::]])
+                # BB_NO  账户收支单单号  'BT'+RP_NO[2::]
+                # BB_DD   账户收支单日期  RP_NO[2::], datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                # BACC_NO  银行账户代号       CACC_NO
+                # ACC_NO  会计科目      待定,需要会计确定自动取银行账号里面的会计科目     100903
+                # AMTN 金额   付款是负数,收款是正数      -float(AMTN_BC)
+
+                #修改账户收支单表身
+                cursor.execute("""UPDATE TF_BAC SET BB_DD=%s,AMTN=%s WHERE BB_NO=%s AND BB_ID='BT'""",[datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC,'BT'+RP_NO[2::]])
+                # BB_NO  账户收支单号  'BT'+RP_NO[2::]
+                # BB_DD  账户收支单日期    datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                # AMTN   金额      AMTN_BC
+
+                # 回写立账单的数据需要减去之前冲款的金额  row_AMTN
+                cursor.execute("""UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s-%s,AMT=ISNULL(AMT,0)-%s+%s WHERE BIL_NO=%s AND BIL_ID='LP'""",[AMTN_BC,float(row_AMTN), AMTN_BC, float(row_AMTN),MF_LZ1])
+                # AMTN_RCV   已冲金额     ISNULL(AMTN_RCV,0)+%s
+                # AMT   未冲金额  ISNULL(AMT,0)-%s
+                # BIL_NO  开票单号
+
+                # 如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
+                row_AMT = cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ) FROM MF_ARP WHERE BIL_NO=%s AND BIL_ID='LP'",
+                                         [MF_LZ1]).fetchall()[0][0]
+                if row_AMT > 0:
+                    cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='F' WHERE BIL_NO=%s AND BIL_ID='LP'""", [MF_LZ1])
+                    cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='F',CLSLZ='T' WHERE PS_NO=%s AND PS_ID='PC'""", ['PC' + MF_LZ1[2::]])
+            except Exception:
+                transaction.savepoint_rollback(sid)
+                return http.HttpResponseForbidden("修改付款单sql语句执行异常")
+            transaction.savepoint_commit(sid)
+
+        context = {
+            'a': 'put付款作业'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def delete(self, request):
+        # 获取参数
+        req_data = json.loads(request.body.decode())
+        # 获取参数
+        RP_NO = req_data.get("RP_NO")  # 付款单号         字符类型
+        # # 获取开票作业单号
+        # MF_LZ1 = req_data.get("MF_LZ1")  # 开票作业单号         字符类型
+        # # 获取原付款单金额
+        # AMTN_BC = req_data.get("AMTN_BC")  # 原单付款金额        字符类型
+        # print(MF_LZ1)
+        # print(AMTN_BC)
+        # {
+        #     "RP_NO": "PTF9A260001"
+        # }
+        if RP_NO is None:
+            return http.HttpResponseForbidden('请输入收款单号')
+        # 判断单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO,'RP_ID','2')
+        if row_ZL_NO <= 0:
+            return http.HttpResponseForbidden('单号不存在')
+
+        with connection.cursor() as cursor:
+
+            # 获取原单付款单总金额用于扣减预付款单总金额
+            AMTN_BC = cursor.execute("""SELECT ISNULL(AMTN_CLS,0) FROM TF_MON WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO]).fetchall()[0][0]
+            # 获取开票单号
+            MF_LZ1 = cursor.execute("""SELECT ARP_NO FROM TC_MON WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO]).fetchall()[0][0]
+            MF_LZ1 = 'LP' + MF_LZ1[2::]
+        # 缓存之前冲款的金额用于回写立账冲款数据
+            row_AMTN = cursor.execute("""SELECT AMTN_BC FROM TF_MON WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO]).fetchall()[0][0]
+            # row_usr = usr_data(USR, USR_NAME, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
+
+            sid = transaction.savepoint()  # 开启事物
+            try:
+            # 删除付款单表头
+                cursor.execute("""DELETE FROM TC_MON WHERE  RP_NO=%s AND RP_ID='2'""", [RP_NO])
+            # 删除付款单表身
+                cursor.execute("""DELETE FROM TF_MON WHERE  RP_NO=%s AND RP_ID='2'""", [RP_NO])
+
+            #冲款付款金额表,如果是分多次付款的话那么就不能直接删除,是否是付一次款那么就可以直接删除
+            # 如果原来已经付款等于目前传过来的金额那么就可以直接删除
+            #     row_AMTN_MF_MON = cursor.execute("""SELECT AMTN FROM MF_MON WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO]).fetchall()[0][0]
+            #     if float(AMTN_BC)==float(row_AMTN_MF_MON):
+                #修改回冲金额表
+                cursor.execute("""DELETE FROM MF_MON WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO])
+                # else:
+                #     cursor.execute("""UPDATE MF_MON SET AMTN=AMTN+%s-%s,AMTN_REST=AMTN+%s-%s WHERE RP_NO=%s AND RP_ID='2'""",
+                #                [AMTN_BC, row_AMTN, AMTN_BC, row_AMTN, RP_NO])
+                # 删除账户收支单表头
+                cursor.execute("""DELETE FROM MF_BAC WHERE  BB_NO=%s AND BB_ID='BT'""", ['BT'+RP_NO[2::]])
+                # 删除账户收支单表身
+                cursor.execute("""DELETE FROM TF_BAC WHERE  BB_NO=%s AND BB_ID='BT'""", ['BT' + RP_NO[2::]])
+
+                # 如果金额立账金额等于传过来的金额那么就直接删除
+                row_AMTN_MF_ARP = cursor.execute("""SELECT AMTN FROM MF_ARP WHERE BIL_NO=%s""", [MF_LZ1]).fetchall()[0][0]
+                print(float(row_AMTN_MF_ARP))
+                if float(AMTN_BC)==float(row_AMTN_MF_ARP):
+                    cursor.execute(
+                        """UPDATE MF_ARP SET AMTN_RCV=0,AMT=0 WHERE BIL_NO=%s""",[MF_LZ1])
+                    # 回写立账单的数据需要减去之前冲款的金额  row_AMTN
+                else:
+                    cursor.execute(
+                        """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)-%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0) WHERE BIL_NO=%s""",[AMTN_BC, MF_LZ1])
+                # 结案掉立账单, 还有进货的立账结案标识
+                cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='F' WHERE BIL_NO=%s""", [MF_LZ1])
+                cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='F',CLSLZ='T' WHERE PS_NO=%s""", ['PC' + MF_LZ1[2::]])
+            except Exception:
+                transaction.savepoint_rollback(sid)
+                return http.HttpResponseForbidden("删除付款单sql语句执行异常")
+            transaction.savepoint_commit(sid)
+        context = {
+            'a': 'delete付款作业'
+        }
+        return http.JsonResponse(context)
+
+#预计付款单
+class ExpectedOperationView(View):
+    def get(self, request):
+        context = {
+            'a': 'get预付款作业'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def post(self, request):
+        # 获取参数
+        RP_NO = request.POST.get("RP_NO")  # 预付款单号         字符类型   ----------------1
+        RP_DD = request.POST.get("RP_DD")  # 预付款日期            字符类型  --------------------1
+        CUS_NO = request.POST.get("CUS_NO")  # 预付款客户编码        字符类型  -------------------------1
+        CUS_NO_NAME = request.POST.get("CUS_NO_NAME")  # 预付款客户名称       字符类型  ---------------------1
+        AMTN_BC = request.POST.get("AMTN_BC")  # 预付款金额            数字类型  ---------------------------1
+        CACC_NO = request.POST.get("CACC_NO")  # 预付款银行编码          字符类型    ------------1
+        USR = request.POST.get("USR")  # 制单人编码                   字符类型   ------------------1
+        USR_NAME = request.POST.get("USR_NAME")  # 制单人姓名         字符类型   -----------------------1
+
+        # 判断单号的合法性
+        if RP_NO[:4] != 'PTYF' or len(RP_NO) != 11:
+            return http.HttpResponseForbidden('预付款单号输入不合法,单号必须是PTYF开头且长度必须是11位')
+        # 校验日期格式
+        try:
+            datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+        except Exception:
+            return http.HttpResponseForbidden('日期格式输入不正确')
+        if RP_NO is None:
+            return http.HttpResponseForbidden('请输入预付款单号')
+            # //判断有没有输入银行账号
+        sum_CACC_NO=et_CACC_NO(CACC_NO)
+        if sum_CACC_NO=='NO':
+            return http.HttpResponseForbidden('请检查银行账号是否存在或者是否输入正确')
+            # 判断金额输入是否正确
+        if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(AMTN_BC)) is None:
+            return http.HttpResponseForbidden('金额输入不正确')
+        # 判断单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO,'RP_ID','2')
+        if row_ZL_NO > 0:
+            return http.HttpResponseForbidden('预付款单号已存在')
+        # 判断账号类别
+        sid = transaction.savepoint()  # 开启事物
+        try:
+            tp_CACC_NO = if_account(CACC_NO)
+        except Exception:
+            transaction.savepoint_rollback(sid)
+            return http.HttpResponseForbidden("查询账户类型语句执行异常")
+        transaction.savepoint_commit(sid)
+        # 判断用户是否存在,不存在则创建
+        row_usr = usr_data(USR, USR_NAME, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
+
+        # 判断客户资料是否存在,不存在则创建
+        row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, '2', datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
+
+        with connection.cursor() as cursor:
+            # sql = "SELECT COUNT(*) FROM %s WHERE %s='%s' AND %s='%s'" % (TB, TYPE, OOD, BIL_NO, BLI_NAME)
+            # 获取银行账号的会计科目
+            Acc_No_km = cursor.execute("""SELECT ISNULL(Acc_No,'') FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
+            if Acc_No_km=='':
+                return http.HttpResponseForbidden('银行会计科目不存在')
+
+            sid = transaction.savepoint()  # 开启事物
+            try:
+                # 银行账户
+                if int(tp_CACC_NO) == 1:
+                    cursor.execute("""INSERT INTO TF_MON(IRP_ID,RP_NO,ITM,RP_ID,CLS_ID,RP_DD,CUS_NO,INCLUDESON,AMTN_BB,AMTN_CLS,BC_NO,BACC_NO,EXC_RTO,DEP,USR,CHK_MAN,CLS_DATE,SYS_DATE,IEA_ID,IOR_ID,SK_TYPE)VALUES
+                    ('T',%s,1,2,'F',%s,%s,'F',%s,0,%s,%s,1,'0000',%s,%s,%s,%s,'F','F',1)""",
+                    [RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO,AMTN_BC,'BT'+RP_NO[2::],CACC_NO,USR,USR,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),datetime.datetime.strptime(RP_DD, '%Y-%m-%d')])
+                # 现金账户
+                if int(tp_CACC_NO) == 2:
+                    cursor.execute("""INSERT INTO TF_MON(IRP_ID,RP_NO,ITM,RP_ID,CLS_ID,RP_DD,CUS_NO,INCLUDESON,AMTN_BC,AMTN_CLS,BC_NO,CACC_NO,EXC_RTO,DEP,USR,CHK_MAN,CLS_DATE,SYS_DATE,IEA_ID,IOR_ID,SK_TYPE)VALUES
+                     ('T',%s,1,2,'F',%s,%s,'F',%s,0,%s,%s,1,'0000',%s,%s,%s,%s,'F','F',1)""",[RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO, AMTN_BC,
+                      'BT' + RP_NO[2::], CACC_NO, USR, USR, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),datetime.datetime.strptime(RP_DD, '%Y-%m-%d')])
+                # RP_NO   预付款单号  RP_NO
+                # RP_DD   预付款日期   datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                #CUS_NO    客户编码     CUS_NO
+                #AMTN_BC    预付款金额  AMTN_BC
+                #BC_NO     账户收支单号   'BT'+RP_NO[2::]
+                # CACC_NO   付款银行编码  CACC_NO
+                #USR 制单人    USR
+                #CHK_MAN 审核人    USR
+                # CLS_DATE  审核时间    datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                # SYS_DATE    制单时间  datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+
+                # 插入立账金额
+                # cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s", [MF_LZ1])
+                cursor.execute("""INSERT INTO MF_MON(RP_ID,RP_NO,RP_DD,DEP,AMTN,AMTN_ARP,AMTN_REST,FJ_NUM)VALUES
+                          (2,%s,%s,'0000',%s,0,0,0)""" ,[RP_NO,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),AMTN_BC])
+                # RP_NO  单号  RP_NO
+                # RP_DD   时间  datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                # AMTN  金额    AMTN_BC
+
+                # 插入账户收支单表头
+                cursor.execute("""INSERT INTO MF_BAC(BB_ID,BB_NO,BB_DD,BACC_NO,ACC_NO,DEP,BIL_NO,EXC_RTO,AMTN,USR,CHK_MAN,OPN_ID,CLS_DATE,SYS_DATE,BIL_ID_N,BIL_NO_N)VALUES
+                ('BT',%s,%s,%s,%s,'0000',%s,1,%s,%s,%s,'F',%s,%s,'PT',%s)""",
+               ['BT' + RP_NO[2::], datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CACC_NO, Acc_No_km,
+                'BT' + RP_NO,
+                float(AMTN_BC), USR, USR, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),
+                datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),
+                RP_NO])
+                #BB_NO  收支单号    'BT'+RP_NO[2::]
+                #BB_DD   账户收支单时间  datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                #BACC_NO  银行账号编码  CACC_NO
+                #ACC_NO  会计科目先固定  100903
+                #BIL_NO  来源单号  'BT'+RP_NO
+                #AMTN   收支单金额  -float(AMTN_BC)
+                #USR  制单人   USR
+                #审核人  CHK_MAN
+                #CLS_DATE  审核人
+                #SYS_DATE   制单人
+
+                #插入收支单表身
+                cursor.execute("""INSERT INTO TF_BAC(BB_ID,BB_NO,ITM,BB_DD,EXC_RTO,AMTN,DEP,CUS_NO,ADD_ID,PRE_ITM)values
+                ('BT',%s,1,%s,1,%s,%s,'51','-',1)""", ['BT'+RP_NO[2::],datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),AMTN_BC,CUS_NO])
+                # BB_NO  单号  'BT'+RP_NO[2::]
+                #BB_DD  时间      datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                #AMTN  金额  AMTN_BC
+                #CUS_NO  客户编码   CUS_NO
+            except Exception:
+                transaction.savepoint_rollback(sid)
+                return http.HttpResponseForbidden("预计付款单新增sql语句执行异常")
+            transaction.savepoint_commit(sid)
+        context = {
+            'a': 'post预付款作业'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def put(self, request):
+        # 获取参数
+        req_data = json.loads(request.body.decode())
+        RP_NO = req_data.get("RP_NO")  # 预付款单号         字符类型   ----------------1
+        RP_DD = req_data.get("RP_DD")  # 预付款日期            字符类型  --------------------1
+        CUS_NO = req_data.get("CUS_NO")  # 预付款客户编码        字符类型  -------------------------1
+        CUS_NO_NAME = req_data.get("CUS_NO_NAME")  # 预付款客户名称       字符类型  ---------------------1
+        AMTN_BC = req_data.get("AMTN_BC")  # 预付款金额            数字类型  ---------------------------1
+        CACC_NO = req_data.get("CACC_NO")  # 预付款银行编码          字符类型    ------------1
+        UP_DD = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')  # 修改时间
+        # {
+        #     "RP_NO":"PT9A220001",
+        #     "RP_DD":"2019-10-22",
+        #     "CUS_NO":"AQ1111",
+        #     "CUS_NO_NAME":"天心软件",
+        #     "AMTN_BC":888,
+        #     "CACC_NO":"01"
+        # }
+        # 判断单号的合法性
+        if RP_NO[:4] != 'RTFS' or len(RP_NO) != 11:
+            return http.HttpResponseForbidden('预付款单号输入不合法,单号必须是RTFS开头且长度必须是11位')
+        # 校验日期格式
+        try:
+            datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+        except Exception:
+            return http.HttpResponseForbidden('日期格式输入不正确')
+        if RP_NO is None:
+            return http.HttpResponseForbidden('请输入预付款单号')
+        # //判断有没有输入银行账号
+        sum_CACC_NO = et_CACC_NO(CACC_NO)
+        if sum_CACC_NO == 'NO':
+            return http.HttpResponseForbidden('请检查银行账号是否存在或者是否输入正确')
+            # 判断金额输入是否正确
+        if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(AMTN_BC)) is None:
+            return http.HttpResponseForbidden('金额输入不正确')
+        # 判断单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO,'RP_ID','2')
+        if row_ZL_NO == 0:
+            return http.HttpResponseForbidden('预付款单号不存在')
+
+        # 判断单号是不是已经产生付款单
+        row_ZL_NO = examine_ood('TF_MON1', 'IRP_NO', RP_NO, 'RP_ID', '2')
+        if row_ZL_NO > 0:
+            return http.HttpResponseForbidden('预付款单已经产生付款单')
+
+        # 判断客户资料是否存在,不存在则创建
+        row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, '2', datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
+        # 判断账号类别
+        sid = transaction.savepoint()  # 开启事物
+        try:
+            tp_CACC_NO = if_account(CACC_NO)
+        except Exception:
+            transaction.savepoint_rollback(sid)
+            return http.HttpResponseForbidden("查询账户类型语句执行异常")
+        transaction.savepoint_commit(sid)
+        with connection.cursor() as cursor:
+            # 获取银行账号的会计科目
+            Acc_No_km = cursor.execute("""SELECT Acc_No FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
+
+            if Acc_No_km=='':
+                return http.HttpResponseForbidden('银行会计科目不存在')
+
+            sid = transaction.savepoint()  # 开启事物
+            try:
+                # 银行账户
+                if int(tp_CACC_NO) == 1:
+                    # 修改预付款单
+                    # cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s", [MF_LZ1])
+                    cursor.execute("""UPDATE TF_MON SET RP_DD=%s,CUS_NO=%s,AMTN_BB=%s,BC_NO=%s,BACC_NO=%s,MODIFY_DD=%s,MODIFY_MAN=USR WHERE RP_NO=%s""",
+                                   [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),CUS_NO,AMTN_BC,'BT'+RP_NO[2::],CACC_NO,UP_DD,RP_NO])
+                # 现金账户
+                if int(tp_CACC_NO) == 2:
+                    # 修改预付款单
+                    # cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s", [MF_LZ1])
+                    cursor.execute(
+                        """UPDATE TF_MON SET RP_DD=%s,CUS_NO=%s,AMTN_BC=%s,BC_NO=%s,CACC_NO=%s,MODIFY_DD=%s,MODIFY_MAN=USR WHERE RP_NO=%s""",
+                        [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO, AMTN_BC, 'BT' + RP_NO[2::], CACC_NO,UP_DD, RP_NO])
+                # RP_NO   预付款单号  RP_NO
+                # RP_DD   预付款日期   datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                # CUS_NO    客户编码     CUS_NO
+                # AMTN_BC    预付款金额  AMTN_BC
+                # BC_NO     账户收支单号   'BT'+RP_NO[2::]
+                # CACC_NO   付款银行编码  CACC_NO
+                #修改立账单金额
+
+                cursor.execute("""UPDATE MF_MON SET RP_DD=%s,AMTN=%s WHERE RP_NO=%s""", [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),AMTN_BC,RP_NO])
+                # RP_NO  单号  RP_NO
+                # RP_DD   时间  datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                # AMTN  金额    AMTN_BC
+
+                #修改账户收支单表头
+                cursor.execute("""UPDATE MF_BAC SET BB_DD=%s,BACC_NO=%s,ACC_NO=%s,BIL_NO=%s,AMTN=%s WHERE BB_NO=%s""",
+                               [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),CACC_NO,Acc_No_km,'BT'+RP_NO,-float(AMTN_BC),'BT'+RP_NO[2::]])
+                # BB_NO  收支单号    'BT'+MF_LZ1[2::]
+                # BB_DD   账户收支单时间  datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                # BACC_NO  银行账号编码  CACC_NO
+                # ACC_NO  会计科目先固定  100903
+                # BIL_NO  来源单号  'BT'+RP_NO
+                # AMTN   收支单金额  -float(AMTN_BC)
+
+                # 修改立账单表身
+
+                cursor.execute("""UPDATE TF_BAC SET BB_DD=%s,AMTN=%s,CUS_NO=%s WHERE BB_NO=%s""", [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),AMTN_BC,CUS_NO,'BT'+RP_NO[2::]])
+                # BB_NO  单号  'BT'+RP_NO[2::]
+                # BB_DD  时间      datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                # AMTN  金额  AMTN_BC
+                # CUS_NO  客户编码   CUS_NO
+            except Exception:
+                transaction.savepoint_rollback(sid)
+                return http.HttpResponseForbidden("预计付款单修改sql语句执行异常")
+            transaction.savepoint_commit(sid)
+        context = {
+            'a': 'put预付款作业'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def delete(self, request):
+        #获取参数
+        req_data = json.loads(request.body.decode())
+        RP_NO = req_data.get("RP_NO")  # 预付款单号
+
+        # {
+        #     "RP_NO": "PTYF9A280001"
+        # }
+        # 判断单号的合法性
+        if RP_NO[:4] != 'PTYF' or len(RP_NO) != 11:
+            return http.HttpResponseForbidden('预付款单号输入不合法,单号必须是RTFS开头且长度必须是11位')
+        if RP_NO is None:
+            return http.HttpResponseForbidden('请输入预付款单号')
+        # 判断单号是不是已经产生付款单
+        row_ZL_NO = examine_ood('TF_MON1', 'IRP_NO', RP_NO,'RP_ID','2')
+        if row_ZL_NO > 0:
+            return http.HttpResponseForbidden   ('预付款单已经产生付款单')
+
+        # 判断单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO,'RP_ID','2')
+        if row_ZL_NO == 0:
+            return http.HttpResponseForbidden('预付款单号不存在')
+
+        with connection.cursor() as cursor:
+            sid = transaction.savepoint()  # 开启事物
+            try:
+                # 修改预付款单
+                # cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s", [MF_LZ1])
+                #删除付款单
+                cursor.execute("""DELETE FROM TF_MON WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO])
+                # 删除金额立账单
+                cursor.execute("""DELETE FROM MF_MON WHERE RP_NO=%s  AND RP_ID='2'""", [RP_NO])
+                #删除账户收支单表头
+                cursor.execute("""DELETE FROM MF_BAC WHERE BB_NO=%s""", ['BT'+RP_NO[2::]])
+                #删除账户收支单表身
+                cursor.execute("""DELETE FROM TF_BAC WHERE BB_NO=%s""", ['BT'+RP_NO[2::]])
+            except Exception:
+                transaction.savepoint_rollback(sid)
+                return http.HttpResponseForbidden("预计付款单修改sql语句执行异常")
+            transaction.savepoint_commit(sid)
+        context = {
+            'a': 'delete预付款作业'
+        }
+        return http.JsonResponse(context)
+
+
+#预付冲应付
+class ExpectedPtOperationView(View):
+
+    @transaction.atomic
+    def get(self, request):
+        sid = transaction.savepoint()
+        with connection.cursor() as cursor:
+            # cursor.execute("INSERT INTO CUST(CUS_NO,[NAME])VALUES ('QQ12345',%s)",[a])
+            # cursor.execute("UPDATE PRDT SET NAME='呜呜呜呜' where prd_no = %s", [a])
+            # cursor.execute("select * from prdt where prd_no = %s", [a])
+            try:
+                cursor.execute("""update cust set name='333'  where cus_no='ACDC438'""")
+                cursor.execute("""insert into cust(cus_no,name)values('BAG037211','weqwe')""")
+            except Exception:
+                transaction.savepoint_rollback(sid)
+                return http.HttpResponseForbidden("数据库执行异常")
+            transaction.savepoint_commit(sid)
+
+        context = {
+            'a': 'get预付冲应付作业'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def post(self, request):
+
+        req_data = json.loads(request.body.decode())
+        # print(req_data)
+        # # 获取参数
+        RP_NO = req_data.get("RP_NO")  #付款单号         字符类型
+        IRP_NO = req_data.get("IRP_NO")  #预付款单号         字符类型
+        RP_DD = req_data.get("RP_DD")  #付款日期         字符类型
+        CUS_NO = req_data.get("CUS_NO")  #付款客户         字符类型
+        USR = req_data.get("USR")  #制单人         字符类型
+        list = req_data.get("list")  #付款单号         字符类型
+        # {
+        #     "RP_NO": "PTYF9A280002",
+        #     "IRP_NO": "PTYF9A280001",
+        #     "RP_DD": "2019-10-22",
+        #     "CUS_NO": "AQ1111",
+        #     "USR": "A10000",
+        #     "list": [
+        #         {"DH": "LPF9A170002",
+        #          "ATM": 340.02
+        #          },
+        #         {"DH": "LPF9A170003",
+        #          "ATM": 340.02
+        #          }
+        #     ]
+        # }
+        if RP_NO is None:
+            return http.HttpResponseForbidden('请输入付款单号')
+        # 判断是否输入预收款单号
+        if IRP_NO is None:
+            return http.HttpResponseForbidden('请输入预付款单号')
+        # 判断单号的合法性
+        if RP_NO[:4] != 'PTYC' or len(RP_NO) != 11:
+            return http.HttpResponseForbidden('付款单号输入不合法,单号必须是PTYC开头且长度必须是11位')
+        # 校验日期格式
+        try:
+            datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+        except Exception:
+            return http.HttpResponseForbidden('日期格式输入不正确')
+        # 判断单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO,'RP_ID','2')
+        if row_ZL_NO > 0:
+            return http.HttpResponseForbidden('预付款冲应付单据号码已存在')
+        # 判断预收款单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', IRP_NO, 'RP_ID', '2')
+        if row_ZL_NO <= 0:
+            return http.HttpResponseForbidden('预冲款单号不存在')
+        # 获取总金额
+        sum_ATM = 0  # 冲款金额
+        yf_sum = 0  # 获取单据应付款总金额
+        for i in list:
+            # 判断立账单号是否合法
+            if i["DH"][:3] != 'LPF' or len(i["DH"]) != 10:
+                return http.HttpResponseForbidden('开票单号输入不合法,单号必须是LPF开头且长度必须是10位')
+            # 判断金额输入是否正确
+            if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(i["ATM"])) is None:
+                return http.HttpResponseForbidden('金额输入不正确')
+            sum_ATM = round(sum_ATM + i["ATM"], 4)
+            # 判断开票单号是否存在
+            row_MF_LZ = examine_ood('MF_LZ1', 'LZ_NO', i["DH"], 'LZ_ID', 'LP')
+            if row_MF_LZ <= 0:
+                return http.HttpResponseForbidden('开票单号不存在')
+            # 判断预收款单号是否存在
+            row_ZL_NO = examine_ood('TF_MON', 'RP_NO', IRP_NO, 'RP_ID', '2')
+            if row_ZL_NO <= 0:
+                return http.HttpResponseForbidden('预冲款单号不存在')
+            with connection.cursor() as cursor:
+                # 获取单据应付款总金额
+                yf_sum =round(yf_sum + cursor.execute("""SELECT AMTN FROM MF_ARP WHERE BIL_NO=%s""", [i["DH"]]).fetchall()[0][0], 4)
+        if sum_ATM>yf_sum:
+            return http.HttpResponseForbidden('冲款金额大于应付金额')
+
+        with connection.cursor() as cursor:
+
+            sid = transaction.savepoint()  # 开启事物
+            try:
+                # 插入回冲预付款扣款表
+                # cursor.execute("SELECT COUNT(*) FROM CUST WHERE CUS_NO=%s", [CUS_NO])
+                cursor.execute("""INSERT INTO TF_MON1(RP_ID,RP_NO,ITM,IRP_NO,RP_ID1,IRPITM,IRPITM2,AMTN_CLS)VALUES
+                (2,%s,1,%s,2,1,0,%s)""", [RP_NO,IRP_NO,sum_ATM])
+                # RP_NO  付款单号  RP_NO
+                # IRP_NO  预付款单号  IRP_NO
+                # AMTN_CLS  付款总金额  sum_ATM
+
+                # 插入付款单表头
+                cursor.execute("""INSERT INTO TF_MON(IRP_ID,RP_NO,ITM,RP_ID,CLS_ID,RP_DD,CUS_NO,INCLUDESON,AMTN_CLS,AMTN_IRP,EXC_RTO,DEP,USR,CHK_MAN,CLS_DATE,SYS_DATE,IEA_ID,IOR_ID,SK_TYPE)VALUES
+                ('F',%s,1,2,'F',%s,%s,'F',%s,%s,1,'0000',%s,%s,%s,%s,'F','F',1)""",
+                [RP_NO,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),CUS_NO,sum_ATM,sum_ATM,USR,USR,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),datetime.datetime.strptime(RP_DD, '%Y-%m-%d')])
+                # RP_NO  付款单  RP_NO
+                # RP_DD  付款日期 datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                # CUS_NO 付款厂商 CUS_NO
+                # AMTN_CLS  付款金额  sum_ATM
+                # AMTN_IRP   金额 sum_ATM
+                # USR     制单人   USR
+                # CHK_MAN     审核人   USR
+                # CLS_DATE   制单时间   datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                # SYS_DATE    审核时间      datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+
+                # 插入付款单表身,先遍历出每一项的单号和金额,然后在插入
+                itm=0  #定义项次
+                for i in list:
+                    itm +=1
+                    print(i["DH"],i["ATM"])  #得到单号和金额
+                    print(itm)
+                    cursor.execute("""INSERT INTO TC_MON(RP_ID,RP_NO,ITM,ITM2,ARP_NO,AMTN_CLS,ARP_OPN_ID,RP_DD,CUS_NO,PRE_ITM)values
+                    (2,%s,1,%s,%s,%s,2,%s,%s,%s)""", [RP_NO,itm,'AP'+i["DH"][2::],i["ATM"],datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),CUS_NO,itm])
+                    # RP_NO 付款单号  RP_NO
+                    # ITM2  项次    itm
+                    # ARP_NO 立账单号  'AP'+i["DH"][2::]
+                    # AMTN_CLS    冲款金额  i["ATM"]
+                    # RP_DD   冲款日期  datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                    # CUS_NO  客户  CUS_NO
+                    # PRE_ITM  项次  itm
+
+                    # 更新立账金额 回写立账单的数据
+                    # cursor.execute(
+                    #     """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0)-%s WHERE BIL_NO=%s""",
+                    #     [i["ATM"],i["ATM"], i["DH"]])
+
+                    cursor.execute(
+                        """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0)-%s WHERE BIL_NO=%s""",
+                        [i["ATM"],i["ATM"], i["DH"]])
+
+                    # cursor.execute(
+                    #     """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s,AMT=ISNULL(AMT,0)-ISNULL(AMTN_RCV,0)-%s WHERE BIL_NO=%s""",
+                    #     [AMTN_BC, AMTN_BC, MF_LZ1])
+                    # AMTN_RCV   已冲金额     ISNULL(AMTN_RCV,0)+%s
+                    # AMT   未冲金额  ISNULL(AMT,0)-%s
+                    # BIL_NO  开票单号
+
+                    # 如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
+                    row_AMT = cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s",
+                                             [i["DH"]]).fetchall()[0][0]
+                    if row_AMT <= 0:
+                        cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='T' WHERE BIL_NO=%s""", [i["DH"]])
+                        cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='T',CLSLZ='T' WHERE PS_NO=%s AND PS_ID='PC'""", ['PC' + i["DH"][2::]])
+                # 插入预付款已冲金额表  ------
+                cursor.execute(
+                    """INSERT INTO MF_MON(RP_NO,RP_DD,RP_ID,DEP,AMTN,AMTN_ARP,AMTN_REST,FJ_NUM)VALUES(%s,%s,2,'0000',0,%s,%s,0)""",
+                    [RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), yf_sum,sum_ATM])
+                # RP_NO  单号  RP_NO
+                # RP_DD  时间  datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                # AMTN_ARP  表身总金额   yf_sum
+                # AMTN_REST  本次冲款总金额    sum_ATM
+                # 更新预付款单已付金额
+                cursor.execute(
+                    """UPDATE TF_MON SET AMTN_CLS=ISNULL(AMTN_CLS,0)+%s WHERE RP_NO=%s AND RP_ID='2'""",
+                    [sum_ATM,IRP_NO])
+
+                # 获取预付款单的预付金额和已冲金额,进行对比,如果两个值相同,那么就结案掉预付款单
+                row_AMTN_MF_MON = cursor.execute(
+                    """SELECT ISNULL(AMTN_BC,0) AS AMTN_BC, ISNULL(AMTN_CLS,0) AS AMTN_CLS FROM TF_MON  WHERE RP_NO=%s AND RP_ID='2'""",[IRP_NO]).fetchall()
+                if float(row_AMTN_MF_MON[0][0]) == float(row_AMTN_MF_MON[0][1]):
+                    cursor.execute("""UPDATE TF_MON SET CLS_ID='T' WHERE IRP_NO=%s AND RP_ID='2'""",[IRP_NO])
+            except Exception:
+                transaction.savepoint_rollback(sid)
+                return http.HttpResponseForbidden("预计冲应该付作业新增单据sql语句执行异常")
+            transaction.savepoint_commit(sid)
+        a = {
+            "RP_NO": "PT9A230002",
+            "IRP_NO": "PT9A220001",
+            "RP_DD":"2019-10-22",
+            "CUS_NO":"AQ1111",
+            "USR":"A10000",
+            "list": [
+                {"DH": "LP9A230001",
+                 "ATM": 111
+                 },
+                 {"DH": "LP9A230002",
+                 "ATM": 90
+                 }
+            ]
+        }
+        context = {
+            'a': 'post预付冲应付作业'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def put(self, request):
+        req_data = json.loads(request.body.decode())
+        # # 获取参数
+        RP_NO = req_data.get("RP_NO")  # 付款单号         字符类型
+        IRP_NO = req_data.get("IRP_NO")  # 预付款单号         字符类型
+        RP_DD = req_data.get("RP_DD")  # 付款日期         字符类型
+        list = req_data.get("list")  # 付款单号         字符类型
+        UP_DD = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')  # 修改时间
+
+        if RP_NO is None:
+            return http.HttpResponseForbidden('请输入付款单号')
+        # 判断是否输入预收款单号
+        if IRP_NO is None:
+            return http.HttpResponseForbidden('请输入预付款单号')
+        # 判断单号的合法性
+        if RP_NO[:4] != 'PTYC' or len(RP_NO) != 11:
+            return http.HttpResponseForbidden('付款单号输入不合法,单号必须是PTYC开头且长度必须是11位')
+        # 校验日期格式
+        try:
+            datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+        except Exception:
+            return http.HttpResponseForbidden('日期格式输入不正确')
+        # 判断单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO,'RP_ID','2')
+        if row_ZL_NO <= 0:
+            return http.HttpResponseForbidden('付款单不存在')
+        # {
+        #     "RP_NO": "PTYF9A280002",
+        #     "IRP_NO": "PTYF9A280001",
+        #     "RP_DD": "2019-10-28",
+        #     "list": [
+        #         {"DH": "LPF9A170002",
+        #          "ATM": 99
+        #          },
+        #         {"DH": "LPF9A170003",
+        #          "ATM": 9
+        #          }
+        #     ]
+        # }
+        # 获取总金额
+        sum_ATM = 0  # 冲款金额
+        yf_sum = 0  # 获取单据应付款总金额
+        for i in list:
+            # 判断立账单号是否合法
+            if i["DH"][:3] != 'LPF' or len(i["DH"]) != 10:
+                return http.HttpResponseForbidden('开票单号输入不合法,单号必须是LPF开头且长度必须是10位')
+            # 判断金额输入是否正确
+            if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(i["ATM"])) is None:
+                return http.HttpResponseForbidden('金额输入不正确')
+            sum_ATM = round(sum_ATM + i["ATM"], 4)
+            # 判断开票单号是否存在
+            row_MF_LZ = examine_ood('MF_LZ1', 'LZ_NO', i["DH"], 'LZ_ID', 'LP')
+            if row_MF_LZ <= 0:
+                return http.HttpResponseForbidden('开票单号不存在')
+            with connection.cursor() as cursor:
+                # 获取单据应付款总金额
+                yf_sum = round(
+                    yf_sum + cursor.execute("""SELECT AMTN FROM MF_ARP WHERE BIL_NO=%s""", [i["DH"]]).fetchall()[0][0], 4)
+        if sum_ATM > yf_sum:
+            return http.HttpResponseForbidden('冲款金额大于应付金额')
+
+        with connection.cursor() as cursor:
+
+            sid = transaction.savepoint()  # 开启事物
+            try:
+                # 修改回冲预付款扣款表
+                cursor.execute("""UPDATE  TF_MON1 SET AMTN_CLS=%s WHERE RP_NO=%s AND RP_ID='2'""", [sum_ATM, RP_NO])
+                # RP_NO  付款单号  RP_NO
+                # IRP_NO  预付款单号  IRP_NO
+                # AMTN_CLS  付款总金额  sum_ATM
+
+                # 修改付款单表头
+                cursor.execute("""UPDATE TF_MON SET RP_DD=%s,AMTN_CLS=%s,AMTN_IRP=%s,MODIFY_DD=%s,MODIFY_MAN=USR WHERE RP_NO=%s AND RP_ID='2'""",
+                               [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),sum_ATM,sum_ATM,UP_DD,RP_NO])
+                # RP_NO  付款单  RP_NO
+                # RP_DD  付款日期 datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                # CUS_NO 付款厂商 CUS_NO
+                # AMTN_CLS  付款金额  sum_ATM
+                # AMTN_IRP   金额 sum_ATM
+                # 修改付款单表身,先遍历出每一项的单号和金额,然后在插入
+                itm = 0  # 定义项次
+                YD_ATY = 0 #原来单总金额
+                for i in list:
+                    itm += 1
+                    print(i["DH"], i["ATM"])  # 得到单号和金额
+                    QTY_TC_MON=cursor.execute("""SELECT ISNULL(AMTN_CLS,0) FROM TC_MON WHERE ARP_NO=%s""", ['AP'+i["DH"][2::]]).fetchall()[0][0]
+                    YD_ATY = round((YD_ATY + QTY_TC_MON),4)
+                    print(i["ATM"])
+                    cursor.execute("""UPDATE TC_MON SET AMTN_CLS=%s WHERE ARP_NO=%s AND RP_ID='2'""", [i["ATM"],'AP'+i["DH"][2::]])
+
+                    # RP_NO 付款单号  RP_NO
+                    # ITM2  项次    itm
+                    # ARP_NO 立账单号  'AP'+i["DH"][2::]
+                    # AMTN_CLS    冲款金额  i["ATM"]
+                    # RP_DD   冲款日期  datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                    # CUS_NO  客户  CUS_NO
+                    # PRE_ITM  项次  itm
+
+                    # 更新立账金额
+                    # 回写立账单的数据
+                    # 获取原单已冲金额未冲金额
+                    #AMTN_RCV 已经冲金额   AMT未冲金额========================================================================================
+                    ATM_MF_ARP=cursor.execute("""SELECT ISNULL(AMTN_RCV,0),ISNULL(AMT,0) FROM MF_ARP  WHERE BIL_NO=%s""",[ i["DH"]]).fetchall()
+                    AMTN_RCV=ATM_MF_ARP[0][0]    #原单已经冲金额
+                    AMT=ATM_MF_ARP[0][1]    #原单未冲金额
+                    cursor.execute(
+                        """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s-%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0)-%s-%s WHERE BIL_NO=%s""",
+                        [i["ATM"],AMTN_RCV, i["ATM"],AMT, i["DH"]])
+
+                    # AMTN_RCV   已冲金额     ISNULL(AMTN_RCV,0)+%s
+                    # AMT   未冲金额  ISNULL(AMT,0)-%s
+                    # BIL_NO  开票单号
+
+                    # 如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
+                    row_AMT = cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s",
+                                             [i["DH"]]).fetchall()[0][0]
+                    if row_AMT <= 0:
+                        cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='F' WHERE BIL_NO=%s""", [i["DH"]])
+                        cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='F',CLSLZ='F' WHERE PS_NO=%s AND PS_ID='PC'""",
+                                       ['PC' + i["DH"][2::]])
+
+                # 更新预付款已冲金额表
+                cursor.execute("""UPDATE MF_MON SET AMTN_REST=%s WHERE RP_NO=%s AND RP_ID='2'""",[sum_ATM,RP_NO])
+                # RP_NO  单号  RP_NO
+                # RP_DD  时间  datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+                # AMTN_ARP  应付总金额   yf_sum
+                # AMTN_REST  本次冲款总金额    sum_ATM
+
+                # 更新预付款单已付金额
+                cursor.execute(
+                    """UPDATE TF_MON SET AMTN_CLS=ISNULL(AMTN_CLS,0)+%s-%s WHERE RP_NO=%s AND RP_ID='2'""",
+                    [sum_ATM,YD_ATY,IRP_NO])
+
+                # 获取预付款单的预付金额和已冲金额,进行对比,如果两个值相同,那么就结案掉预付款单
+                row_AMTN_MF_MON = cursor.execute(
+                    """SELECT ISNULL(AMTN_BC,0) AS AMTN_BC, ISNULL(AMTN_CLS,0) AS AMTN_CLS FROM TF_MON  WHERE RP_NO=%s AND RP_ID='2'""",
+                    [IRP_NO]).fetchall()
+
+                if float(row_AMTN_MF_MON[0][0]) == float(row_AMTN_MF_MON[0][1]):
+                    cursor.execute("""UPDATE TF_MON SET CLS_ID='F' WHERE IRP_NO=%s AND RP_ID='2'""", [IRP_NO])
+
+            except Exception:
+                transaction.savepoint_rollback(sid)
+                return http.HttpResponseForbidden("预计冲应该付作业修改单据sql语句执行异常")
+            transaction.savepoint_commit(sid)
+        a = {
+            "RP_NO": "PT9A230002",
+            "IRP_NO": "PT9A220001",
+            "RP_DD": "2019-10-22",
+            "list": [
+                {"DH": "LP9A230001",
+                 "ATM": 111
+                 },
+                {"DH": "LP9A230002",
+                 "ATM": 90
+                 }
+            ]
+        }
+
+
+        context = {
+            'a': 'put预付冲应付作业'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def delete(self, request):
+        req_data = json.loads(request.body.decode())
+        # # 获取参数
+        RP_NO = req_data.get("RP_NO")  # 付款单号         字符类型
+
+        # {
+        #     "RP_NO": "PTYF9A280002"
+        # }
+
+        # 判断是否输入单号
+        if RP_NO is None:
+            return http.HttpResponseForbidden('请输入付款单号')
+        # 判断单号的合法性
+        if RP_NO[:4] != 'PTYC' or len(RP_NO) != 11:
+            return http.HttpResponseForbidden('付款单号输入不合法,单号必须是PTYC开头且长度必须是11位')
+        # 判断单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO,'RP_ID','2')
+        if row_ZL_NO <= 0:
+            return http.HttpResponseForbidden('单号不存在')
+        with connection.cursor() as cursor:
+
+            sid = transaction.savepoint()  # 开启事物
+            try:
+                # 获取原单付款单总金额用于扣减预付款单总金额
+                sum_TF_MON=cursor.execute("""SELECT ISNULL(AMTN_CLS,0) FROM TF_MON WHERE RP_NO=%s AND RP_ID='2'""",[RP_NO]).fetchall()[0][0]
+                #获取预付款单单号
+                TF_MON_NO = cursor.execute("""SELECT IRP_NO FROM TF_MON1 WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO]).fetchall()[0][0]
+                # 修改预付款扣款金额
+                cursor.execute("""UPDATE TF_MON SET AMTN_CLS=ISNULL(AMTN_CLS,0)-%s WHERE RP_NO=%s AND RP_ID='2'""", [sum_TF_MON,TF_MON_NO])
+                # 以列表的形式获取付款单的立账单号
+                TC_MON_RP_NO = cursor.execute("""SELECT ARP_NO FROM TC_MON WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO]).fetchall()
+                # 遍历列表得到每一张立账单号
+                for i in TC_MON_RP_NO:
+                    print(i[0])  #立账单号
+                    # 更新立账金额
+                    # 回写立账单的数据
+                    # 获取原单已冲金额未冲金额
+                    # AMTN_RCV 已经冲金额   AMT未冲金额===========================================================
+                    ATM_MF_ARP = cursor.execute("""SELECT ISNULL(AMTN_RCV,0),ISNULL(AMT,0) FROM MF_ARP  WHERE ARP_NO=%s""",[i[0]]).fetchall()
+                    AMTN_RCV = ATM_MF_ARP[0][0]  # 原单已经冲金额
+                    AMT = ATM_MF_ARP[0][1]  # 原单未冲金额
+                    cursor.execute(
+                        """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)-%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0)-%s WHERE ARP_NO=%s""",
+                        [AMTN_RCV,AMT,i[0]])
+
+                    # AMTN_RCV   已冲金额     ISNULL(AMTN_RCV,0)+%s
+                    # AMT   未冲金额  ISNULL(AMT,0)-%s
+                    # BIL_NO  开票单号
+
+                    # 如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
+                    row_AMT = cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE ARP_NO=%s",[i[0]]).fetchall()[0][0]
+                    if row_AMT <= 0:
+                        cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='F' WHERE ARP_NO=%s""", [i[0]])
+                        cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='F',CLSLZ='F' WHERE PS_NO=%s""",['PC' + i[0][2::]])
+                # 删除扣款单
+                cursor.execute("""DELETE FROM TF_MON1 WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO])
+                #删除付款单表头
+                cursor.execute("""DELETE FROM TF_MON WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO])
+                #删除付款单表身
+                cursor.execute("""DELETE FROM TC_MON WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO])
+                #删除付款记录
+                cursor.execute("""DELETE FROM MF_MON WHERE RP_NO=%s AND RP_ID='2'""", [RP_NO])
+            except Exception:
+                transaction.savepoint_rollback(sid)
+                return http.HttpResponseForbidden("预计冲应该付作业修改单据sql语句执行异常")
+            transaction.savepoint_commit(sid)
+        context = {
+            'a': 'delete预付冲应付作业'
+        }
+        return http.JsonResponse(context)
+
+
+
+

二進制
awj/awj/apps/salesinvoice/__pycache__/__init__.cpython-36.pyc


二進制
awj/awj/apps/salesinvoice/__pycache__/admin.cpython-36.pyc


二進制
awj/awj/apps/salesinvoice/__pycache__/apps.cpython-36.pyc


二進制
awj/awj/apps/salesinvoice/__pycache__/models.cpython-36.pyc


二進制
awj/awj/apps/salesinvoice/__pycache__/urls.cpython-36.pyc


二進制
awj/awj/apps/salesinvoice/__pycache__/views.cpython-36.pyc


+ 3 - 3
awj/awj/apps/salesinvoice/admin.py

@@ -1,3 +1,3 @@
-from django.contrib import admin
-
-# Register your models here.
+from django.contrib import admin
+
+# Register your models here.

+ 5 - 5
awj/awj/apps/salesinvoice/apps.py

@@ -1,5 +1,5 @@
-from django.apps import AppConfig
-
-
-class SalesinvoiceConfig(AppConfig):
-    name = 'salesinvoice'
+from django.apps import AppConfig
+
+
+class SalesinvoiceConfig(AppConfig):
+    name = 'salesinvoice'

二進制
awj/awj/apps/salesinvoice/migrations/__pycache__/__init__.cpython-36.pyc


+ 3 - 3
awj/awj/apps/salesinvoice/models.py

@@ -1,3 +1,3 @@
-from django.db import models
-
-# Create your models here.
+from django.db import models
+
+# Create your models here.

+ 3 - 3
awj/awj/apps/salesinvoice/tests.py

@@ -1,3 +1,3 @@
-from django.test import TestCase
-
-# Create your tests here.
+from django.test import TestCase
+
+# Create your tests here.

+ 8 - 7
awj/awj/apps/salesinvoice/urls.py

@@ -1,8 +1,9 @@
-from django.conf.urls import url
-from . import views
-
-urlpatterns = [
-    url(r'^sales/$',views.salesView.as_view()),  #销货开票
-    url(r'^proceeds/$',views.proceedsView.as_view()),  #收款单
-    url(r'^predictproceeds/$',views.predictProceedsView.as_view()), #预收款
+from django.conf.urls import url
+from . import views
+
+urlpatterns = [
+    url(r'^sales/$',views.salesView.as_view()),  #销货开票
+    url(r'^proceeds/$',views.proceedsView.as_view()),  #收款单
+    url(r'^predictproceeds/$',views.predictProceedsView.as_view()), #预收款
+    url(r'^predictpayment/$',views.predictPaymentView.as_view()), #预收冲款款
 ]

+ 1145 - 1061
awj/awj/apps/salesinvoice/views.py

@@ -1,1062 +1,1146 @@
-import json
-
-import re
-from django import http
-from django.shortcuts import render
-
-# Create your views here.
-from django.views import View
-from django.db import connection, transaction
-import datetime
-
-from utils.cust_data import customer_data
-from utils.examine_ood import examine_ood
-
-from utils.usr_data import usr_data
-
-# 销货开票
-class salesView(View):
-    @transaction.atomic
-    def get(self, request):
-        context = {
-            'a': 'get预付冲应付作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def post(self, request):
-        # 1,获取参数
-        ZL_NO = request.POST.get("ZL_NO")  # 单据号码    1         字符型
-        LZ_DD = request.POST.get("LZ_DD")  # 单据日期    1         字符型
-        INV_NO = request.POST.get("INV_NO")  # 发票号码    1       字符型
-        # INV_DD = request.POST.get("INV_DD")   #发票日期     1      字符型               不需要
-        ZHANG_ID = request.POST.get("ZHANG_ID")  # 立账方式   1    字符型  2开票 1直接立账
-        # TAX_ID = request.POST.get("TAX_ID")   #扣税类别   1         字符型                    不需要
-        AMT = request.POST.get("AMT")  # 开票金额        1          数字型
-        CUS_NO = request.POST.get("CUS_NO")  # 开票客户编码    1    字符型
-        CUS_NO_NAME = request.POST.get("CUS_NO_NAME")  # 开票客户名称     1       字符型
-        UNI_NO_BUY = request.POST.get("UNI_NO_BUY")  # 纳税人识别码   1           字符型
-        BUY_ADR = request.POST.get("BUY_ADR")  # 开票客户地址   1                 字符型
-        BUY_TEL = request.POST.get("BUY_TEL")  # 开票客户电话   1                 字符型
-        BUY_KH_BANK = request.POST.get("BUY_KH_BANK")  # 开户账号   1            字符型
-        USR = request.POST.get("USR")  # 制单人编码   1                           字符型
-        USR_NAME = request.POST.get("USR_NAME")  # 制单人姓名   1                字符型
-        BUY_ID_CODE = request.POST.get("BUY_ID_CODE")  # 开户银行账号   1       字符型
-        REM = request.POST.get("REM")  # 发票备注   1
-
-        print(UNI_NO_BUY)  #纳税人识别码
-        print(BUY_ID_CODE)  #开户银行账户
-        print(BUY_KH_BANK)  #开户账号
-        print(BUY_TEL)  #电话号码
-        print(BUY_ADR) #地址
-        # 判断单号的合法性
-        if ZL_NO[:3]!='LZS' or len(ZL_NO)!=10:
-            return http.HttpResponseForbidden('开票单号输入不合法,单号必须是LZS开头且长度必须是10位')
-        # 校验日期格式
-        try:
-            datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')
-        except Exception:
-            return http.HttpResponseForbidden('日期格式输入不正确')
-        if  ZL_NO is None:
-            return http.HttpResponseForbidden('请输入开票单号')
-            # 判断金额输入是否正确
-        if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(AMT)) is None:
-            return http.HttpResponseForbidden('金额输入不正确')
-        if ZHANG_ID is None:
-            return http.HttpResponseForbidden('请输入开票方式')
-        # 判断立账方式是否有效
-        if int(ZHANG_ID) != 1 and int(ZHANG_ID) != 2:
-            return http.HttpResponseForbidden('立账方式只能是1(开票),2(不开票)')
-        # 判断开票单号是否存在
-        if int(ZHANG_ID) == 2:
-            row_ZL_NO = examine_ood('MF_LZ', 'LZ_NO', ZL_NO, 'LZ_ID', 'LZ')
-            print(row_ZL_NO)
-            if row_ZL_NO > 0:
-                return http.HttpResponseForbidden('销货开票单号已存在')
-
-        # 判断客户资料是否存在,不存在则创建
-        row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, '1', datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'))
-
-        # 判断用户是否存在,不存在则创建
-        row_usr = usr_data(USR, USR_NAME, datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'))
-
-        with connection.cursor() as cursor:
-            #直接开发票
-            if int(ZHANG_ID) == 2:
-                # cursor.execute("""UPDATE TF_PSS SET AMT_FP=%s,AMTN_NET_FP=%s WHERE PS_NO=%s""",[AMT, AMT, 'PC' + ZL_NO[2::]])
-                sid = transaction.savepoint()  # 开启事物
-                try:
-                    # 插入销货单表头
-                    cursor.execute("""INSERT INTO MF_PSS(PS_ID,PS_NO,PS_DD,CUS_NO,ZHANG_ID,USR,CHK_MAN,CLS_DATE,SYS_DATE,AMT,EXC_RTO,LZ_CLS_ID,CLSLZ,TAX_ID,YD_ID)
-                    VALUES('SA',%s,%s,%s,3,%s,%s,%s,%s,%s,1,'F','F',1,'T')""",
-                    [ 'SA' + ZL_NO[2::], datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), CUS_NO,USR,USR,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),
-                    datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),AMT])
-                    #插入销货单表身
-                    cursor.execute("""INSERT INTO TF_PSS(PS_ID,PS_NO,PS_DD,WH,PRD_NO,PRD_NAME,QTY,UP,AMT,AMTN_NET,TAX_RTO,ITM,UNIT,CSTN_SAL,PRE_ITM)
-                    VALUES('SA',%s,%s,'0000','AQ002','安装费用',1,1,%s,%s,5,1,1,%s,1)""",['SA' + ZL_NO[2::], datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), AMT,AMT,AMT])
-                    #插入发票
-                    cursor.execute("""INSERT INTO INV_NO (BIL_NO,INV_NO,BIL_ID,INV_ID,CUS_NO,TITLE_BUY,TITLE_PAY,AMT,TAX_ID1,TAX_ID2,INV_TT,INV_DD,UNI_NO_BUY,BUY_ADR,BUY_TEL,BUY_KH_BANK,BUY_ID_CODE,REM)
-                    VALUES(%s,%s,'LZ',21,%s,%s,%s,%s,1,1,1,%s,%s,%s,%s,%s,%s,%s)""",[ZL_NO, INV_NO, CUS_NO, CUS_NO_NAME, CUS_NO_NAME, AMT,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),
-                    UNI_NO_BUY, BUY_ADR, BUY_TEL, BUY_KH_BANK, BUY_ID_CODE, REM])
-                    #插入立账单
-                    cursor.execute("""INSERT INTO MF_ARP(ARP_ID,OPN_ID,ARP_NO,BIL_NO,CUS_NO,PAY_DD,INV_NO,AMT,AMTN,AMTN_NET,EXC_RTO,CLOSE_ID,BIL_ID,SYS_DATE,BIL_DD)VALUES
-                    (1,2,%s,%s,%s,%s,%s,%s,%s,%s,1,'F','LZ',%s,%s)""",['AR' + ZL_NO[2::], ZL_NO, CUS_NO,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),
-                    INV_NO,AMT,AMT,AMT,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')])
-                    #插入开票单表头
-                    cursor.execute("""INSERT INTO MF_LZ(LZ_ID,LZ_NO,PAY_DD,LZ_DD,CUS_NO,INV_NO,EXC_RTO,USR,CHK_MAN,AMT,AMTN_NET,ARP_NO,CLS_DATE,TAX_ID,ZHANG_ID,SYS_DATE,VOH_CHK,TURN_ID,INV_BIL_ID,INV_BIL_NO,FLG_VOH)VALUES
-                    ('LZ',%s,%s,%s,%s,%s,1,%s,%s,%s,%s,%s,%s,'1',3,%s,1,1,'LZ',%s,'F')""",
-                    [ZL_NO,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),CUS_NO,INV_NO,USR,USR, AMT,AMT, 'AR' + ZL_NO[2::],datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),
-                     datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),ZL_NO])
-                    # 插入开票单表身
-                    cursor.execute("""INSERT INTO TF_LZ(LZ_ID,LZ_NO,ITM,CK_NO,AMT,AMTN_NET,PRD_NO,EST_ITM,PAY_DD,TAX_RTO,QTY,UP,BIL_ID,UNIT,PRD_NAME,CUS_NO,UP_ZG,PRE_ITM)VALUES
-                    ('LZ',%s,1,%s,%s,%s,'AQ002',1,%s,5,1,1,'SA',1,'安装费用',%s,1,1)""",[ZL_NO, 'SA' + ZL_NO[2::],AMT,AMT,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), CUS_NO])
-                    # 修改销货单开票金额
-                    cursor.execute("""UPDATE TF_PSS SET AMT_FP=ISNULL(AMT_FP,0)+%s,AMTN_NET_FP=ISNULL(AMTN_NET_FP,0)+%s WHERE PS_NO=%s AND PS_ID='SA'""",[AMT, AMT, 'SA' + ZL_NO[2::]])
-                except Exception:
-                    transaction.savepoint_rollback(sid)  # 语句执行错误,进行语句回滚
-                    return http.HttpResponseForbidden("删除新增销货开票作业sql语句执行错误")
-                transaction.savepoint_commit(sid)  # 提交事物
-        context = {
-            'a': 'post新增销货开票作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def put(self, request):
-
-        # 获取传过来的参数
-        req_data = json.loads(request.body.decode())
-
-        ZL_NO = req_data.get("ZL_NO")  # 单据号码    1
-        LZ_DD = req_data.get("LZ_DD")  # 单据日期    1
-        INV_NO = req_data.get("INV_NO")  # 发票号码    1
-        # INV_DD = req_data.get("INV_DD")  # 发票日期     1
-        ZHANG_ID = req_data.get("ZHANG_ID")  # 立账方式   1
-        # TAX_ID = req_data.get("TAX_ID")  # 扣税类别   1
-        AMT = req_data.get("AMT")  # 开票金额        1                  不需要
-        CUS_NO = req_data.get("CUS_NO")  # 开票客户编码    1
-        CUS_NO_NAME = req_data.get("CUS_NO_NAME")  # 开票客户名称     1
-        UNI_NO_BUY = req_data.get("UNI_NO_BUY")  # 纳税人识别码   1
-        BUY_ADR = req_data.get("BUY_ADR")  # 开票客户地址   1
-        BUY_TEL = req_data.get("BUY_TEL")  # 开票客户电话   1
-        BUY_KH_BANK = req_data.get("BUY_KH_BANK")  # 开户账号   1
-        USR = req_data.get("USR")  # 制单人编码   1
-        USR_NAME = req_data.get("USR_NAME")  # 制单人姓名   1
-        BUY_ID_CODE = req_data.get("BUY_ID_CODE")  # 开户银行账号   1
-        REM = req_data.get("REM")  # 发票备注   1
-        UP_DD = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')  # 修改时间
-        print(UNI_NO_BUY)  # 纳税人识别码
-        print(BUY_ID_CODE)  # 开户银行账户
-        print(BUY_KH_BANK)  # 开户账号
-        print(BUY_TEL)  # 电话号码
-        print(BUY_ADR)  # 地址
-        # {
-        #     "ZL_NO": "LZS9A300001",
-        #     "LZ_DD": "2019-10-30",
-        #     "INV_NO": "000001111122222",
-        #     "ZHANG_ID": "2",
-        #     "AMT": 89,
-        #     "CUS_NO": "AB0001",
-        #     "CUS_NO_NAME": "天心软件",
-        #     "UNI_NO_BUY": "443222222222222222",
-        #     "BUY_ADR": "广州天河华港上午大厦",
-        #     "BUY_TEL": "13444567876",
-        #     "BUY_KH_BANK": "01",
-        #     "USR": "A10000",
-        #     "USR_NAME": "楠楠",
-        #     "BUY_ID_CODE": "43112919941002",
-        #     "REM": "我的备注"
-        # }
-
-        # 判断单号的合法性
-        if ZL_NO[:3] != 'LZS' or len(ZL_NO) != 10:
-            return http.HttpResponseForbidden('开票单号输入不合法,单号必须是LZS开头且长度必须是10位')
-        # 校验日期格式
-        try:
-            datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')
-        except Exception:
-            return http.HttpResponseForbidden('日期格式输入不正确')
-        if ZL_NO is None:
-            return http.HttpResponseForbidden('请输入开票单号')
-            # 判断金额输入是否正确
-        if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(AMT)) is None:
-            return http.HttpResponseForbidden('金额输入不正确')
-        if ZHANG_ID is None:
-            return http.HttpResponseForbidden('请输入开票方式')
-        # 判断立账方式是否有效
-        if int(ZHANG_ID) != 1 and int(ZHANG_ID) != 2:
-            return http.HttpResponseForbidden('立账方式只能是1(开票),2(不开票)')
-        row_TC_MON = examine_ood('TC_MON', 'RP_NO', 'AR' + ZL_NO[2::], 'RP_ID', '1')
-        # 判断是否产生付款单
-        if row_TC_MON>0:
-            return http.HttpResponseForbidden('已经产生付款单部允许修改')
-        # 判断进货单号是存在
-        if int(ZHANG_ID) == 1:
-            row_ZL_NO = examine_ood('MF_PSS', 'PS_NO', 'SA' + ZL_NO[2::], 'PS_ID', 'SA')
-            if row_ZL_NO <= 0:
-                return http.HttpResponseForbidden('销货单号不存在')
-        # 判断开票单号是否存在
-        if int(ZHANG_ID) > 2:
-            row_ZL_NO = examine_ood('MF_LZ', 'LZ_NO', ZL_NO, 'LZ_ID', 'LZ')
-            if row_ZL_NO <= 0:
-                return http.HttpResponseForbidden('销货开票单号不存在')
-        # 判断厂商是否存在,不存在则自动创建
-        row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, '1', datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'))
-
-        # 判断用户是否存在,不存在则创建
-        row_usr = usr_data(USR, USR_NAME, datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'))
-        with connection.cursor() as cursor:
-            #进货开票
-            if int(ZHANG_ID)==2:
-                sid = transaction.savepoint()  # 开启事物
-                try:
-                    # 修改进货单表头
-                    cursor.execute("""UPDATE MF_PSS SET PS_DD=%s,CUS_NO=%s,ZHANG_ID=%s,AMT=%s,MODIFY_DD=%s,MODIFY_MAN=USR WHERE PS_NO=%s AND PS_ID='SA'""",
-                    [datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), CUS_NO,ZHANG_ID,AMT,UP_DD,'SA'+ZL_NO[2::]])
-                    #修改进货单表身
-                    cursor.execute("""UPDATE TF_PSS SET PS_DD=%s,UP=%s,AMTN_NET=%s,CSTN_SAL=%s,AMT=%s,AMT_FP=%s,AMTN_NET_FP=%s WHERE PS_NO=%s AND PS_ID='SA'""",
-                    [datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), AMT, AMT, AMT, AMT, AMT, AMT, 'SA' + ZL_NO[2::]])
-                    # 修改发票记录
-                    cursor.execute(
-                        """UPDATE INV_NO SET INV_NO=%s,CUS_NO=%s,TITLE_BUY=%s,TITLE_PAY=%s,AMT=%s,INV_DD=%s,UNI_NO_BUY=%s,BUY_ADR=%s,BUY_TEL=%s,BUY_KH_BANK=%s,BUY_ID_CODE=%s,REM=%s WHERE BIL_NO=%s AND BIL_ID='LZ'""",
-                        [INV_NO, CUS_NO, CUS_NO_NAME, CUS_NO_NAME, AMT, LZ_DD, UNI_NO_BUY, BUY_ADR, BUY_TEL, BUY_KH_BANK,BUY_ID_CODE, REM, ZL_NO])
-                    # 修改立账单MF_MRP
-                    cursor.execute("""UPDATE MF_ARP SET CUS_NO=%s,PAY_DD=%s,INV_NO=%s,AMT=%s,AMTN=%s,AMTN_NET=%s,SYS_DATE=%s WHERE ARP_NO=%s AND BIL_ID='LZ'""",
-                        [CUS_NO, datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),INV_NO, AMT, AMT, AMT, datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), 'AR' + ZL_NO[2::]])
-                    # 插入进货开票表头
-                    cursor.execute("""UPDATE MF_LZ SET PAY_DD=%s,LZ_DD=%s,CUS_NO=%s,INV_NO=%s,AMT=%s,AMTN_NET=%s,MODIFY_DD=%s,MODIFY_MAN=USR WHERE LZ_NO=%s AND LZ_ID='LZ'""",
-                        [datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),CUS_NO, INV_NO, AMT, AMT, UP_DD, ZL_NO])
-                    # 修改进货开票表身
-                    cursor.execute("""UPDATE TF_LZ SET AMT=%s,AMTN_NET=%s,CUS_NO=%s WHERE LZ_NO=%s AND LZ_ID='LZ'""",[AMT, AMT, CUS_NO, ZL_NO])
-                    # 修改开完发票回写进货单表身已开金额
-                    cursor.execute("""UPDATE TF_PSS SET AMT_FP=%s,AMTN_NET_FP=%s WHERE PS_NO=%s AND PS_ID='SA'""",[AMT, AMT, 'SA' + ZL_NO[2::]])
-                except Exception:
-                    transaction.savepoint_rollback(sid)  # 语句执行错误,进行语句回滚
-                    return http.HttpResponseForbidden("修改销货开票作业sql语句执行错误")
-                transaction.savepoint_commit(sid)  # 提交事物
-        context = {
-            'a': 'put修改销货开票作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def delete(self, request):
-        # 获取传过来的参数
-        req_data = json.loads(request.body.decode())
-        ZL_NO = req_data.get("ZL_NO")  # 单据号码
-        ZHANG_ID = req_data.get("ZHANG_ID")  # 立账方式
-        # {
-        #     "ZL_NO": "LZS9B01001",
-        #     "ZHANG_ID": "2"
-        # }
-        if ZL_NO is None:
-            return http.HttpResponseForbidden('请传入开票单号')
-        if ZHANG_ID is None:
-            return http.HttpResponseForbidden('请传入开票类型')
-        # 判断立账方式是否有效
-        if int(ZHANG_ID) != 1 and int(ZHANG_ID) != 2:
-            return http.HttpResponseForbidden('立账方式只能是1(开票),2(不开票)')
-        # 判断是否产生付款单
-        row_TC_MON = examine_ood('TC_MON', 'RP_NO', 'AR' + ZL_NO[2::], 'RP_ID', '1')
-        if row_TC_MON > 0:
-            return http.HttpResponseForbidden('已经产生付款单部允许修改')
-        # 判断进货单号是存在
-        if int(ZHANG_ID) == 1:
-            row_ZL_NO = examine_ood('MF_PSS', 'PS_NO', 'SA' + ZL_NO[2::], 'PS_ID', 'SA')
-            if row_ZL_NO <= 0:
-                return http.HttpResponseForbidden('进货单号不存在')
-        # 判断开票单号是否存在
-        if int(ZHANG_ID) == 2:
-            row_ZL_NO = examine_ood('MF_LZ', 'LZ_NO', ZL_NO, 'LZ_ID', 'LZ')
-            if row_ZL_NO <= 0:
-                return http.HttpResponseForbidden('开票单号不存在')
-
-        with connection.cursor() as cursor:
-            if int(ZHANG_ID) == 2:
-                # 判断是否产生后续单据
-                sql = "SELECT COUNT(*) FROM %s WHERE %s='%s'" % ('TC_MON', 'ARP_NO', 'AR' + ZL_NO[2::])
-                row_ZL_NO = cursor.execute(sql).fetchall()[0][0]
-                if row_ZL_NO > 0:
-                    return http.HttpResponseForbidden('开票单或进货单已产生后续收付款单')
-                sid = transaction.savepoint()  # 开启事物
-                try:
-                    # 删除进货来票作业表头
-                    cursor.execute("""DELETE FROM TF_LZ WHERE  LZ_NO=%s AND LZ_ID='LZ'""", [ZL_NO])
-                    # 删除进货开票作业表身
-                    cursor.execute("""DELETE FROM MF_LZ WHERE  LZ_NO=%s AND LZ_ID='LZ'""", [ZL_NO])
-                    # 删除立账金额单据
-                    cursor.execute("""DELETE FROM MF_ARP WHERE BIL_NO=%s AND BIL_ID='LZ'""", [ZL_NO])
-                    # 删除发票单据
-                    cursor.execute("""DELETE FROM INV_NO  WHERE BIL_NO=%s AND BIL_ID='LZ'""", [ZL_NO])
-                    # 删除进货单表身单据
-                    cursor.execute("""DELETE FROM MF_PSS WHERE PS_NO=%s AND PS_ID='SA'""", ['SA' + ZL_NO[2::]])
-                    # 删除进货单表头单据
-                    cursor.execute("""DELETE FROM TF_PSS WHERE PS_NO=%s AND PS_ID='SA'""", ['SA' + ZL_NO[2::]])
-                except Exception:
-                    transaction.savepoint_rollback(sid)  # 语句执行错误,进行语句回滚
-                    return http.HttpResponseForbidden("删除销货销货开票作业sql语句执行错误")
-                transaction.savepoint_commit(sid)  # 提交事物
-        context = {
-            'a': 'delete删除销货开票作业'
-        }
-        return http.JsonResponse(context)
-
-# 销货收款
-class proceedsView(View):
-
-    @transaction.atomic
-    def get(self, request):
-        context = {
-            'a': 'get销货收款作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def post(self, request):
-        # 获取参数
-        RP_NO = request.POST.get("RP_NO")  # 付款单号         字符类型
-        RP_DD = request.POST.get("RP_DD")  # 付款日期            字符类型
-        CUS_NO = request.POST.get("CUS_NO")  # 付款客户编码        字符类型
-        AMTN_BC = request.POST.get("AMTN_BC")  # 付款金额            数字类型
-        CACC_NO = request.POST.get("CACC_NO")  # 付款银行编码          字符类型
-        USR = request.POST.get("USR")  # 制单人编码                   字符类型
-        USR_NAME = request.POST.get("USR_NAME")  # 制单人姓名         字符类型
-        MF_LZ1 = request.POST.get("MF_LZ1")  # 进货开票单号         字符类型
-
-        # 判断单号的合法性
-        if RP_NO[:3] != 'RTS' or len(RP_NO) != 10:
-            return http.HttpResponseForbidden('收款单号输入不合法,单号必须是RTS开头且长度必须是10位')
-        # 校验日期格式
-        try:
-            datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-        except Exception:
-            return http.HttpResponseForbidden('日期格式输入不正确')
-        if RP_NO is None:
-            return http.HttpResponseForbidden('请输入收款单号')
-            # 判断金额输入是否正确
-        if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(AMTN_BC)) is None:
-            return http.HttpResponseForbidden('金额输入不正确')
-        # 判断单号是否存在
-        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO, 'RP_ID', '1')
-        if row_ZL_NO > 0:
-            return http.HttpResponseForbidden('付款单号已存在')
-
-        # 判断用户是否存在,不存在则创建
-        row_usr = usr_data(USR, USR_NAME, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
-
-        with connection.cursor() as cursor:
-            # 判断开票单号是否存在
-            MF_LZ1_NO = cursor.execute("""SELECT COUNT(*) FROM MF_ARP WHERE ARP_NO=%s""", ['AR' + MF_LZ1[2::]]).fetchall()[0][0]
-            if MF_LZ1_NO<=0:
-                return http.HttpResponseForbidden('开票单号不存在')
-            # 获取银行账号的会计科目
-            Acc_No_km = cursor.execute("""SELECT ISNULL(Acc_No,'') FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
-            if Acc_No_km == '':
-                return http.HttpResponseForbidden('银行会计科目不存在')
-            sid = transaction.savepoint()  # 开启事物
-            try:
-                # 插入收款单表头
-                cursor.execute("""INSERT INTO TF_MON(IRP_ID,RP_NO,ITM,RP_ID,CLS_ID,RP_DD,CUS_NO,INCLUDESON,AMTN_BC,AMTN_CLS,BC_NO,CACC_NO,EXC_RTO,DEP,USR,CHK_MAN,CLS_DATE,SYS_DATE,
-                IEA_ID,IOR_ID,SK_TYPE)VALUES('F',%s,1,1,'T',%s,%s,'F',%s,%s,%s,%s,1,'0000',%s,%s,%s,%s,'F','F',1)""",[RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO,
-                AMTN_BC, AMTN_BC,'BT' + RP_NO[2::], CACC_NO, USR, USR, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),datetime.datetime.strptime(RP_DD, '%Y-%m-%d')])
-
-                #插入收款单表身
-                cursor.execute("""INSERT INTO TC_MON(RP_ID,RP_NO,ITM,ITM2,ARP_NO,AMTN_CLS,ARP_OPN_ID,RP_DD,CUS_NO,PRE_ITM)values
-                (1,%s,1,1,%s,%s,2,%s,%s,1)""",[RP_NO, 'AR' + MF_LZ1[2::], AMTN_BC, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO])
-
-                #插入收款单回写金额表
-                cursor.execute("""INSERT INTO MF_MON(RP_ID,RP_NO,RP_DD,DEP,AMTN,AMTN_ARP,AMTN_REST,FJ_NUM)VALUES
-                (1,%s,%s,'0000',%s,%s,%s,0)""",[RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC, AMTN_BC, AMTN_BC])
-
-                #插入账户收支单表头
-                cursor.execute("""INSERT INTO MF_BAC(BB_ID,BB_NO,BB_DD,BACC_NO,ACC_NO,DEP,BIL_NO,EXC_RTO,AMTN,USR,CHK_MAN,OPN_ID,CLS_DATE,SYS_DATE,BIL_ID_N,BIL_NO_N)VALUES
-                ('BT',%s,%s,%s,%s,'0000',%s,1,%s,%s,%s,'F',%s,%s,'RT',%s)""",['BT' + RP_NO[2::], datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CACC_NO, Acc_No_km,
-                'PT' + RP_NO, float(AMTN_BC), USR, USR, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), RP_NO])
-
-                # 插入账户收支单表身
-                cursor.execute("""INSERT INTO TF_BAC(BB_ID,BB_NO,ITM,BB_DD,EXC_RTO,AMTN,DEP,CUS_NO,ADD_ID,PRE_ITM)values
-                ('BT',%s,1,%s,1,%s,'0000',%s,'+',1)""",['BT' + RP_NO[2::], datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC, CUS_NO])
-
-                # 回写立账单的数据
-                cursor.execute("""UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0)-%s WHERE BIL_NO=%s""",[AMTN_BC, AMTN_BC, MF_LZ1])
-                # AMTN_RCV   已冲金额     ISNULL(AMTN_RCV,0)+%s
-                # AMT   未冲金额  ISNULL(AMT,0)-%s
-                # BIL_NO  开票单号
-
-                # 如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
-                row_AMT = cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ) FROM MF_ARP WHERE BIL_NO=%s",[MF_LZ1]).fetchall()[0][0]
-                if row_AMT <= 0:
-                    cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='T' WHERE BIL_NO=%s""", [MF_LZ1])
-                    cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='T',CLSLZ='T' WHERE PS_NO=%s""", ['SA' + MF_LZ1[2::]])
-            except Exception:
-                transaction.savepoint_rollback(sid)
-                return http.HttpResponseForbidden("新增收款单sql语句执行异常")
-            transaction.savepoint_commit(sid)
-        context = {
-            'a': 'post新增收款作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def put(self, request):
-
-        req_data = json.loads(request.body.decode())
-        # 获取参数
-        RP_NO = req_data.get("RP_NO")  # 付款单号         字符类型
-        RP_DD = req_data.get("RP_DD")  # 付款日期            字符类型
-        AMTN_BC = req_data.get("AMTN_BC")  # 付款金额            数字类型
-        CACC_NO = req_data.get("CACC_NO")  # 付款银行编码          字符类型
-        MF_LZ1 = req_data.get("MF_LZ1")  # 进货开票单号         字符类型
-        UP_DD = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')  # 修改时间
-
-        # {
-        #     "RP_NO":"RTX9A300002",
-        #     "RP_DD":"2019-10-30",
-        #     "AMTN_BC":199,
-        #     "CACC_NO":"01",
-        #     "MF_LZ1":"LZS9A300001"
-        # }
-        # 校验日期格式
-        try:
-            datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-        except Exception:
-            return http.HttpResponseForbidden('日期格式输入不正确')
-        if RP_NO is None:
-            return http.HttpResponseForbidden('请输入收款单号')
-            # 判断金额输入是否正确
-        if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(AMTN_BC)) is None:
-            return http.HttpResponseForbidden('金额输入不正确')
-        # 判断单号是否存在
-        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO, 'RP_ID', '1')
-        if row_ZL_NO <= 0:
-            return http.HttpResponseForbidden('收款单号不存在')
-        with connection.cursor() as cursor:
-            # 判断开票单号是否存在
-            MF_LZ1_NO = cursor.execute("""SELECT COUNT(*) FROM TC_MON WHERE ARP_NO=%s""", ['AR' + MF_LZ1[2::]]).fetchall()[0][0]
-
-            if MF_LZ1_NO <= 0:
-                return http.HttpResponseForbidden('开票单号不存在')
-            # 获取银行账号的会计科目
-            Acc_No_km = cursor.execute("""SELECT Acc_No FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
-            if Acc_No_km == '':
-                return http.HttpResponseForbidden('银行会计科目不存在')
-
-            # 缓存之前冲款的金额用于回写立账冲款数据
-            row_AMTN = cursor.execute("""SELECT AMTN_BC FROM TF_MON WHERE RP_NO=%s AND RP_ID='1'""", [RP_NO]).fetchall()[0][0]
-            sid = transaction.savepoint()  # 开启事物
-            try:
-                # 修改付款单表头
-                cursor.execute(
-                    """UPDATE TF_MON SET RP_DD=%s,AMTN_BC=%s,CACC_NO=%s,MODIFY_DD=%s,MODIFY_MAN=USR,AMTN_CLS=%s WHERE RP_NO=%s AND RP_ID='1'""",
-                    [RP_DD, AMTN_BC, CACC_NO, UP_DD,AMTN_BC, RP_NO])
-
-                # 修改付款单表身
-                cursor.execute("""UPDATE TC_MON SET RP_DD=%s,AMTN_CLS=%s WHERE RP_NO=%s AND RP_ID='1'""",[RP_DD, AMTN_BC, RP_NO])
-
-                # 修改回冲金额表
-                cursor.execute("""UPDATE MF_MON SET AMTN=AMTN+%s-%s,AMTN_REST=AMTN+%s-%s WHERE RP_NO=%s AND RP_ID='1'""",
-                               [AMTN_BC, float(row_AMTN), AMTN_BC, float(row_AMTN), RP_NO])
-
-                # 修改账户收支单表头
-                cursor.execute("""UPDATE MF_BAC SET BB_DD=%s,BACC_NO=%s,ACC_NO=%s,AMTN=%s WHERE BB_NO=%s AND BB_ID='BT'""",
-                               [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CACC_NO, Acc_No_km, -float(AMTN_BC),'BT' + RP_NO[2::]])
-
-                # 修改账户收支单表身
-                cursor.execute("""UPDATE TF_BAC SET BB_DD=%s,AMTN=%s WHERE BB_NO=%s AND BB_ID='BT'""",
-                               [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC, 'BT' + RP_NO[2::]])
-
-                # 回写立账单的数据需要减去之前冲款的金额  row_AMTN
-                cursor.execute("""UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s-%s,AMT=ISNULL(AMT,0)-%s+%s WHERE BIL_NO=%s AND BIL_ID='LZ'""",[AMTN_BC, float(row_AMTN), AMTN_BC, float(row_AMTN), MF_LZ1])
-
-                # 如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
-                row_AMT = cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s AND BIL_ID='LZ'",
-                               [MF_LZ1]).fetchall()[0][0]
-                if row_AMT > 0:
-                    cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='F' WHERE BIL_NO=%s AND BIL_ID='LZ'""", [MF_LZ1])
-                    cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='F',CLSLZ='T' WHERE PS_NO=%s AND PS_ID='SA'""",['SA' + MF_LZ1[2::]])
-            except Exception:
-                transaction.savepoint_rollback(sid)
-                return http.HttpResponseForbidden("修改收款单sql语句执行异常")
-            transaction.savepoint_commit(sid)
-        context = {
-            'a': 'put修改收款作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def delete(self, request):
-        # 获取参数
-        req_data = json.loads(request.body.decode())
-        RP_NO = req_data.get("RP_NO")  # 付款单号         字符类型
-        if RP_NO is None:
-            return http.HttpResponseForbidden('请输入收款单号')
-        # 判断单号是否存在
-        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO, 'RP_ID', '1')
-        if row_ZL_NO <= 0:
-            return http.HttpResponseForbidden('收款单号不存在')
-
-        with connection.cursor() as cursor:
-
-            # 获取原单付款单总金额用于扣减预付款单总金额
-            AMTN_BC = cursor.execute("""SELECT ISNULL(AMTN_CLS,0) FROM TF_MON WHERE RP_NO=%s AND RP_ID='1'""", [RP_NO]).fetchall()[0][0]
-            # 获取开票单号
-            MF_LZ1 = cursor.execute("""SELECT ARP_NO FROM TC_MON WHERE RP_NO=%s AND RP_ID='1'""", [RP_NO]).fetchall()[0][0]
-            MF_LZ1 = 'LZ' + MF_LZ1[2::]
-        # 缓存之前冲款的金额用于回写立账冲款数据
-            row_AMTN = cursor.execute("""SELECT AMTN_BC FROM TF_MON WHERE RP_NO=%s AND RP_ID='1'""", [RP_NO]).fetchall()[0][0]
-            sid = transaction.savepoint()  # 开启事物
-            try:
-                # 删除付款单表头
-                cursor.execute("""DELETE FROM TC_MON WHERE  RP_NO=%s AND RP_ID='1'""", [RP_NO])
-                # 删除付款单表身
-                cursor.execute("""DELETE FROM TF_MON WHERE  RP_NO=%s AND RP_ID='1'""", [RP_NO])
-                # 修改回冲金额表
-                cursor.execute("""DELETE FROM MF_MON WHERE RP_NO=%s AND RP_ID='1'""", [RP_NO])
-                # 删除账户收支单表头
-                cursor.execute("""DELETE FROM MF_BAC WHERE  BB_NO=%s AND BB_ID='BT'""", ['BT' + RP_NO[2::]])
-                # 删除账户收支单表身
-                cursor.execute("""DELETE FROM TF_BAC WHERE  BB_NO=%s AND BB_ID='BT'""", ['BT' + RP_NO[2::]])
-                # 如果金额立账金额等于传过来的金额那么就直接删除
-                row_AMTN_MF_ARP = cursor.execute("""SELECT AMTN FROM MF_ARP WHERE BIL_NO=%s""", [MF_LZ1]).fetchall()[0][0]
-                if float(AMTN_BC) == float(row_AMTN_MF_ARP):
-                    cursor.execute(
-                        """UPDATE MF_ARP SET AMTN_RCV=0,AMT=0 WHERE BIL_NO=%s""", [MF_LZ1])
-                    # 回写立账单的数据需要减去之前冲款的金额  row_AMTN
-                else:
-                    cursor.execute(
-                        """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)-%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0) WHERE BIL_NO=%s""",[AMTN_BC, MF_LZ1])
-                # 结案掉立账单, 还有进货的立账结案标识
-                cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='F' WHERE BIL_NO=%s""", [MF_LZ1])
-                cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='F',CLSLZ='T' WHERE PS_NO=%s""", ['SA' + MF_LZ1[2::]])
-            except Exception:
-                transaction.savepoint_rollback(sid)
-                return http.HttpResponseForbidden("删除收款单sql语句执行异常")
-            transaction.savepoint_commit(sid)
-        context = {
-            'a': 'delete删除收款作业'
-        }
-        return http.JsonResponse(context)
-
-#预收款
-class predictProceedsView(View):
-
-    @transaction.atomic
-    def get(self, request):
-        print('请求内容')
-        context = {
-            'a': 'get预计收款作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def post(self, request):
-        # 获取参数
-        RP_NO = request.POST.get("RP_NO")  # 预付款单号         字符类型   ----------------1
-        RP_DD = request.POST.get("RP_DD")  # 预付款日期            字符类型  --------------------1
-        CUS_NO = request.POST.get("CUS_NO")  # 预付款客户编码        字符类型  -------------------------1
-        CUS_NO_NAME = request.POST.get("CUS_NO_NAME")  # 预付款客户名称       字符类型  ---------------------1
-        AMTN_BC = request.POST.get("AMTN_BC")  # 预付款金额            数字类型  ---------------------------1
-        CACC_NO = request.POST.get("CACC_NO")  # 预付款银行编码          字符类型    ------------1
-        USR = request.POST.get("USR")  # 制单人编码                   字符类型   ------------------1
-        USR_NAME = request.POST.get("USR_NAME")  # 制单人姓名         字符类型   -----------------------1
-
-        # 判断单号的合法性
-        if RP_NO[:4] != 'RTFS' or len(RP_NO) != 11:
-            return http.HttpResponseForbidden('预收款单号输入不合法,单号必须是RTFS开头且长度必须是11位')
-        # 校验日期格式
-        try:
-            datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-        except Exception:
-            return http.HttpResponseForbidden('日期格式输入不正确')
-        if RP_NO is None:
-            return http.HttpResponseForbidden('请输入预收款单号')
-            # 判断金额输入是否正确
-        if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(AMTN_BC)) is None:
-            return http.HttpResponseForbidden('金额输入不正确')
-        # 判断单号是否存在
-        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO, 'RP_ID', '1')
-        if row_ZL_NO > 0:
-            return http.HttpResponseForbidden('预付款单号已存在')
-
-        # 判断用户是否存在,不存在则创建
-        row_usr = usr_data(USR, USR_NAME, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
-
-        # 判断客户资料是否存在,不存在则创建
-        row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, '1', datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
-
-        with connection.cursor() as cursor:
-            # 获取银行账号的会计科目
-            Acc_No_km = cursor.execute("""SELECT ISNULL(Acc_No,'') FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
-            print(Acc_No_km)
-            if Acc_No_km=='':
-                return http.HttpResponseForbidden('银行会计科目不存在')
-            sid = transaction.savepoint()  # 开启事物
-            try:
-                #插入预收款表头
-                cursor.execute("""INSERT INTO TF_MON(IRP_ID,RP_NO,ITM,RP_ID,CLS_ID,RP_DD,CUS_NO,INCLUDESON,AMTN_BC,AMTN_CLS,BC_NO,CACC_NO,EXC_RTO,DEP,USR,CHK_MAN,CLS_DATE,SYS_DATE,IEA_ID,IOR_ID,SK_TYPE)VALUES
-                                ('T',%s,1,1,'F',%s,%s,'F',%s,0,%s,%s,1,'0000',%s,%s,%s,%s,'F','F',1)""",
-                               [RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO, AMTN_BC, 'BT' + RP_NO[2::],
-                                CACC_NO, USR, USR, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),
-                                datetime.datetime.strptime(RP_DD, '%Y-%m-%d')])
-                #插入语收款立账金额
-                cursor.execute("""INSERT INTO MF_MON(RP_ID,RP_NO,RP_DD,DEP,AMTN,AMTN_ARP,AMTN_REST,FJ_NUM)VALUES
-                                          (1,%s,%s,'0000',%s,0,0,0)""",
-                               [RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC])
-                # 插入账户收支单表头
-                cursor.execute("""INSERT INTO MF_BAC(BB_ID,BB_NO,BB_DD,BACC_NO,ACC_NO,DEP,BIL_NO,EXC_RTO,AMTN,USR,CHK_MAN,OPN_ID,CLS_DATE,SYS_DATE,BIL_ID_N,BIL_NO_N)VALUES
-                                ('BT',%s,%s,%s,%s,'0000',%s,1,%s,%s,%s,'F',%s,%s,'RT',%s)""",
-                               ['BT' + RP_NO[2::], datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CACC_NO , Acc_No_km,'BT' + RP_NO,
-                                float(AMTN_BC), USR, USR, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),
-                                datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),
-                                RP_NO])
-                # 插入收支单表身
-                cursor.execute("""INSERT INTO TF_BAC(BB_ID,BB_NO,ITM,BB_DD,EXC_RTO,AMTN,DEP,CUS_NO,ADD_ID,PRE_ITM)values
-                                ('BT',%s,1,%s,1,%s,%s,'51','+',1)""",
-                               ['BT' + RP_NO[2::], datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC, CUS_NO])
-            except Exception:
-                transaction.savepoint_rollback(sid)
-                return http.HttpResponseForbidden("预收款单新增sql语句执行异常")
-            transaction.savepoint_commit(sid)
-        context = {
-            'a': 'post新增预计收款作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def put(self, request):
-
-        # 获取参数
-        req_data = json.loads(request.body.decode())
-        RP_NO = req_data.get("RP_NO")  # 预付款单号         字符类型   ----------------1
-        RP_DD = req_data.get("RP_DD")  # 预付款日期            字符类型  --------------------1
-        CUS_NO = req_data.get("CUS_NO")  # 预付款客户编码        字符类型  -------------------------1
-        CUS_NO_NAME = req_data.get("CUS_NO_NAME")  # 预付款客户名称       字符类型  ---------------------1
-        AMTN_BC = req_data.get("AMTN_BC")  # 预付款金额            数字类型  ---------------------------1
-        CACC_NO = req_data.get("CACC_NO")  # 预付款银行编码          字符类型    ------------1
-        UP_DD = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')  # 修改时间
-        # {
-        #     "RP_NO":"RTFS9B01002",
-        #     "RP_DD":"2019-11-01",
-        #     "CUS_NO":"AB0001",
-        #     "CUS_NO_NAME":"天心软件",
-        #     "AMTN_BC":159,
-        #     "CACC_NO":"01"
-        # }
-        # 判断单号的合法性
-        if RP_NO[:4] != 'RTFS' or len(RP_NO) != 11:
-            return http.HttpResponseForbidden('预收款单号输入不合法,单号必须是RTFS开头且长度必须是11位')
-        # 校验日期格式
-        try:
-            datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-        except Exception:
-            return http.HttpResponseForbidden('日期格式输入不正确')
-        if RP_NO is None:
-            return http.HttpResponseForbidden('请输入预收款单号')
-            # 判断金额输入是否正确
-        if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(AMTN_BC)) is None:
-            return http.HttpResponseForbidden('金额输入不正确')
-        # 判断单号是否存在
-        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO,'RP_ID','1')
-        if row_ZL_NO == 0:
-            return http.HttpResponseForbidden('预付款单号不存在')
-
-        # 判断单号是不是已经产生付款单
-        row_ZL_NO = examine_ood('TF_MON1', 'IRP_NO', RP_NO, 'RP_ID', '1')
-        if row_ZL_NO > 0:
-            return http.HttpResponseForbidden('预付款单已经产生付款单')
-
-        # 判断客户资料是否存在,不存在则创建
-        row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, '2', datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
-
-        with connection.cursor() as cursor:
-            # 获取银行账号的会计科目
-            Acc_No_km = cursor.execute("""SELECT Acc_No FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
-            if Acc_No_km=='':
-                return http.HttpResponseForbidden('银行会计科目不存在')
-            sid = transaction.savepoint()  # 开启事物
-            try:
-                #修改预付款单
-                cursor.execute("""UPDATE TF_MON SET RP_DD=%s,CUS_NO=%s,AMTN_BC=%s,BC_NO=%s,CACC_NO=%s,MODIFY_DD=%s,MODIFY_MAN=USR WHERE RP_NO=%s""",
-                [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO, AMTN_BC, 'BT' + RP_NO[2::], CACC_NO, UP_DD, RP_NO])
-
-                # 修改立账单金额
-                cursor.execute("""UPDATE MF_MON SET RP_DD=%s,AMTN=%s WHERE RP_NO=%s""",[datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC, RP_NO])
-
-                # 修改账户收支单表头
-                cursor.execute("""UPDATE MF_BAC SET BB_DD=%s,BACC_NO=%s,ACC_NO=%s,BIL_NO=%s,AMTN=%s WHERE BB_NO=%s""",
-                [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CACC_NO, Acc_No_km, 'BT' + RP_NO,float(AMTN_BC), 'BT' + RP_NO[2::]])
-                #修改账户收支单表身
-                cursor.execute("""UPDATE TF_BAC SET BB_DD=%s,AMTN=%s,CUS_NO=%s WHERE BB_NO=%s""",
-                               [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC, CUS_NO, 'BT' + RP_NO[2::]])
-            except Exception:
-                transaction.savepoint_rollback(sid)
-                return http.HttpResponseForbidden("预收款单修改sql语句执行异常")
-            transaction.savepoint_commit(sid)
-        context = {
-            'a': 'put修改预计收款作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def delete(self, request):
-        # 获取参数
-        req_data = json.loads(request.body.decode())
-        RP_NO = req_data.get("RP_NO")  # 预付款单号
-        # {
-        #     "RP_NO": "RTX9A300003"
-        # }
-        # 判断单号的合法性
-        if RP_NO[:4] != 'RTFS' or len(RP_NO) != 11:
-            return http.HttpResponseForbidden('预收款单号输入不合法,单号必须是RTFS开头且长度必须是11位')
-        if RP_NO is None:
-            return http.HttpResponseForbidden('请输入预收款单号')
-        # 判断单号是不是已经产生付款单
-        row_ZL_NO = examine_ood('TF_MON1', 'IRP_NO', RP_NO, 'RP_ID', '1')
-        if row_ZL_NO > 0:
-            return http.HttpResponseForbidden('预付款单已经产生付款单')
-        # 判断单号是否存在
-        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO, 'RP_ID', '1')
-        if row_ZL_NO == 0:
-            return http.HttpResponseForbidden('预付款单号不存在')
-        with connection.cursor() as cursor:
-            sid = transaction.savepoint()  # 开启事物
-            try:
-                # 删除付款单
-                cursor.execute("""DELETE FROM TF_MON WHERE RP_NO=%s AND RP_ID='1'""", [RP_NO])
-                # 删除金额立账单
-                cursor.execute("""DELETE FROM MF_MON WHERE RP_NO=%s  AND RP_ID='1'""", [RP_NO])
-                # 删除账户收支单表头
-                cursor.execute("""DELETE FROM MF_BAC WHERE BB_NO=%s""", ['BT' + RP_NO[2::]])
-                # 删除账户收支单表身
-                cursor.execute("""DELETE FROM TF_BAC WHERE BB_NO=%s""", ['BT' + RP_NO[2::]])
-            except Exception:
-                transaction.savepoint_rollback(sid)
-                return http.HttpResponseForbidden("预收款单删除sql语句执行异常")
-            transaction.savepoint_commit(sid)
-        context = {
-            'a': 'delete删除预计收款作业'
-        }
-        return http.JsonResponse(context)
-
-#预收冲款
-class predictPaymentView(View):
-
-    @transaction.atomic
-    def get(self, request):
-        sid = transaction.savepoint()  # 开启事物
-        try:
-            print(12312)
-        except Exception:
-            transaction.savepoint_rollback(sid)
-            return http.HttpResponseForbidden("预收款单删除sql语句执行异常")
-        transaction.savepoint_commit(sid)
-        context = {
-            'a': 'get预收冲应冲作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def post(self, request):
-        req_data = json.loads(request.body.decode())
-        # print(req_data)
-        # # 获取参数
-        RP_NO = req_data.get("RP_NO")  # 付款单号         字符类型
-        IRP_NO = req_data.get("IRP_NO")  # 预付款单号         字符类型
-        RP_DD = req_data.get("RP_DD")  # 付款日期         字符类型
-        CUS_NO = req_data.get("CUS_NO")  # 付款客户         字符类型
-        USR = req_data.get("USR")  # 制单人         字符类型
-        list = req_data.get("list")  # 付款单号         字符类型
-        # {
-        #     "RP_NO": "RTFS9B01003",
-        #     "IRP_NO": "RTFS9B01002",
-        #     "RP_DD": "2019-11-01",
-        #     "CUS_NO": "AB0001",
-        #     "USR": "A10000",
-        #     "list": [
-        #         {"DH": "LZS9A310002",
-        #          "ATM": 400
-        #          },
-        #         {"DH": "LZS9B01001",
-        #          "ATM": 600
-        #          }
-        #     ]
-        # }
-        # 判断是否输入收款单号
-        if RP_NO is None:
-            return http.HttpResponseForbidden('请输入收款单号')
-        # 判断是否输入预收款单号
-        if IRP_NO is None:
-            return http.HttpResponseForbidden('请输入预收款单号')
-        # 判断单号的合法性
-        if RP_NO[:4] != 'RTFC' or len(RP_NO) != 11:
-            return http.HttpResponseForbidden('收款单号输入不合法,单号必须是RTYC开头且长度必须是11位')
-        # 校验日期格式
-        try:
-            datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-        except Exception:
-            return http.HttpResponseForbidden('日期格式输入不正确')
-        # 判断单号是否存在
-        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO, 'RP_ID', '1')
-        if row_ZL_NO > 0:
-            return http.HttpResponseForbidden('收款单号已存在')
-        # 判断预收款单号是否存在
-        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', IRP_NO, 'RP_ID', '1')
-        if row_ZL_NO <= 0:
-            return http.HttpResponseForbidden('预冲款单号不存在')
-        # 获取总金额
-        sum_ATM = 0  # 冲款金额
-        yf_sum = 0  # 获取单据应付款总金额
-
-        for i in list:
-
-            # 判断立账单号是否合法
-            if i["DH"][:3] != 'LZS' or len(i["DH"]) != 10:
-                return http.HttpResponseForbidden('开票单号输入不合法,单号必须是LZS开头且长度必须是10位')
-            # 判断金额输入是否正确
-            if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(i["ATM"])) is None:
-                return http.HttpResponseForbidden('金额输入不正确')
-            sum_ATM = round(sum_ATM + float(i["ATM"]), 4)
-                # 判断开票单号是否存在
-            row_MF_LZ = examine_ood('MF_LZ', 'LZ_NO', i["DH"], 'LZ_ID', 'LZ')
-            if row_MF_LZ <= 0:
-                return http.HttpResponseForbidden('开票单号不存在')
-            with connection.cursor() as cursor:
-                # 获取单据应付款总金额
-                yf_sum =round(yf_sum + cursor.execute("""SELECT AMTN FROM MF_ARP WHERE BIL_NO=%s""", [i["DH"]]).fetchall()[0][0], 4)
-        if sum_ATM>yf_sum:
-            return http.HttpResponseForbidden('冲款金额大于应付金额')
-        with connection.cursor() as cursor:
-            sid = transaction.savepoint()  # 开启事物
-            try:
-                # 插入回冲预收款扣款表
-                # cursor.execute("SELECT COUNT(*) FROM CUST WHERE CUS_NO=%s", [CUS_NO])
-                cursor.execute("""INSERT INTO TF_MON1(RP_ID,RP_NO,ITM,IRP_NO,RP_ID1,IRPITM,IRPITM2,AMTN_CLS)VALUES
-                                (1,%s,1,%s,1,1,0,%s)""", [RP_NO, IRP_NO, sum_ATM])
-                # 插入付款单表头
-                cursor.execute("""INSERT INTO TF_MON(IRP_ID,RP_NO,ITM,RP_ID,CLS_ID,RP_DD,CUS_NO,INCLUDESON,AMTN_CLS,AMTN_IRP,EXC_RTO,DEP,USR,CHK_MAN,CLS_DATE,SYS_DATE,IEA_ID,IOR_ID,SK_TYPE)VALUES
-                ('F',%s,1,1,'F',%s,%s,'F',%s,%s,1,'0000',%s,%s,%s,%s,'F','F',1)""",[RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO, sum_ATM, sum_ATM, USR, USR,
-                datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),datetime.datetime.strptime(RP_DD, '%Y-%m-%d')])
-                # 插入付款单表身,先遍历出每一项的单号和金额,然后在插入
-                itm = 0  # 定义项次
-                for i in list:
-                    itm += 1
-                    # print(i["DH"], i["ATM"])  # 得到单号和金额
-                    # print(itm)
-                    cursor.execute("""INSERT INTO TC_MON(RP_ID,RP_NO,ITM,ITM2,ARP_NO,AMTN_CLS,ARP_OPN_ID,RP_DD,CUS_NO,PRE_ITM)values
-                    (1,%s,1,%s,%s,%s,2,%s,%s,%s)""", [RP_NO, itm, 'AR' + i["DH"][2::], i["ATM"],datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO,itm])
-                    # 更新立账金额 回写立账单的数据
-                    cursor.execute(
-                        """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0)-%s WHERE BIL_NO=%s""",
-                        [i["ATM"], i["ATM"], i["DH"]])
-                    # 如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
-                    row_AMT = cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s",
-                                             [i["DH"]]).fetchall()[0][0]
-                    if row_AMT <= 0:
-                        cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='T' WHERE BIL_NO=%s""", [i["DH"]])
-                        cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='T',CLSLZ='T' WHERE PS_NO=%s AND PS_ID='SA'""",
-                        ['SA' + i["DH"][2::]])
-                # 插入预付款已冲金额表  ------
-                cursor.execute(
-                    """INSERT INTO MF_MON(RP_NO,RP_DD,RP_ID,DEP,AMTN,AMTN_ARP,AMTN_REST,FJ_NUM)VALUES(%s,%s,1,'0000',0,%s,%s,0)""",
-                    [RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), yf_sum, sum_ATM])
-                # 更新预付款单已付金额
-                cursor.execute(
-                    """UPDATE TF_MON SET AMTN_CLS=ISNULL(AMTN_CLS,0)+%s WHERE RP_NO=%s AND RP_ID='1'""",
-                    [sum_ATM, IRP_NO])
-                # 获取预付款单的预付金额和已冲金额,进行对比,如果两个值相同,那么就结案掉预付款单
-                row_AMTN_MF_MON = cursor.execute(
-                """SELECT ISNULL(AMTN_BC,0) AS AMTN_BC, ISNULL(AMTN_CLS,0) AS AMTN_CLS FROM TF_MON  WHERE RP_NO=%s AND RP_ID='1'""",[IRP_NO]).fetchall()
-                if float(row_AMTN_MF_MON[0][0]) == float(row_AMTN_MF_MON[0][1]):
-                    cursor.execute("""UPDATE TF_MON SET CLS_ID='T' WHERE IRP_NO=%s AND RP_ID='1'""", [IRP_NO])
-            except Exception:
-                transaction.savepoint_rollback(sid)
-                return http.HttpResponseForbidden("预收款冲应收单新增sql语句执行异常")
-            transaction.savepoint_commit(sid)
-        context = {
-            'a': 'post预收冲应冲作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def put(self, request):
-        req_data = json.loads(request.body.decode())
-        # # 获取参数
-        RP_NO = req_data.get("RP_NO")  # 付款单号         字符类型
-        IRP_NO = req_data.get("IRP_NO")  # 预付款单号         字符类型
-        RP_DD = req_data.get("RP_DD")  # 付款日期         字符类型
-        list = req_data.get("list")  # 付款单号         字符类型
-        UP_DD = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')  # 修改时间
-        # {
-        #     "RP_NO": "RTFC9B01003",
-        #     "IRP_NO": "RTFS9B01002",
-        #     "RP_DD": "2019-11-01",
-        #     "list": [
-        #         {"DH": "LZS9B01002",
-        #          "ATM": "200"
-        #          },
-        #         {"DH": "LZS9B01001",
-        #          "ATM": 200
-        #          }
-        #     ]
-        # }
-        if RP_NO is None:
-            return http.HttpResponseForbidden('请输入收款单号')
-        # 判断是否输入预收款单号
-        if IRP_NO is None:
-            return http.HttpResponseForbidden('请输入预收款单号')
-        # 判断单号的合法性
-        if RP_NO[:4] != 'RTFC' or len(RP_NO) != 11:
-            return http.HttpResponseForbidden('收款单号输入不合法,单号必须是RTYC开头且长度必须是11位')
-        # 校验日期格式
-        try:
-            datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
-        except Exception:
-            return http.HttpResponseForbidden('日期格式输入不正确')
-        # 判断单号是否存在
-        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO, 'RP_ID', '1')
-        if row_ZL_NO <= 0:
-            return http.HttpResponseForbidden('付款单不存在')
-        # 判断预收款单号是否存在
-        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', IRP_NO, 'RP_ID', '1')
-        if row_ZL_NO <= 0:
-            return http.HttpResponseForbidden('预冲款单号不存在')
-        # 获取总金额
-        sum_ATM = 0  # 冲款金额
-        yf_sum = 0  # 获取单据应付款总金额
-        for i in list:
-            # 判断立账单号是否合法
-            if i["DH"][:3] != 'LZS' or len(i["DH"]) != 10:
-                return http.HttpResponseForbidden('开票单号输入不合法,单号必须是LZS开头且长度必须是10位')
-            # 判断金额输入是否正确
-            if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(i["ATM"])) is None:
-                return http.HttpResponseForbidden('金额输入不正确')
-            sum_ATM = round(sum_ATM + float(i["ATM"]), 4)
-            # 判断开票单号是否存在
-            row_MF_LZ = examine_ood('MF_LZ', 'LZ_NO', i["DH"], 'LZ_ID', 'LZ')
-            if row_MF_LZ <= 0:
-                return http.HttpResponseForbidden('开票单号不存在')
-            with connection.cursor() as cursor:
-                # 获取单据应付款总金额
-                yf_sum = round(
-                    yf_sum + cursor.execute("""SELECT AMTN FROM MF_ARP WHERE BIL_NO=%s""", [i["DH"]]).fetchall()[0][0],
-                    4)
-        if sum_ATM > yf_sum:
-            return http.HttpResponseForbidden('冲款金额大于应收金额')
-        with connection.cursor() as cursor:
-            sid = transaction.savepoint()  # 开启事物
-            try:
-                # 修改回冲预付款扣款表
-                cursor.execute("""UPDATE  TF_MON1 SET AMTN_CLS=%s WHERE RP_NO=%s AND RP_ID='1'""", [sum_ATM, RP_NO])
-                # 修改付款单表头
-                cursor.execute(
-                    """UPDATE TF_MON SET RP_DD=%s,AMTN_CLS=%s,AMTN_IRP=%s,MODIFY_DD=%s,MODIFY_MAN=USR WHERE RP_NO=%s AND RP_ID='1'""",
-                    [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), sum_ATM, sum_ATM, UP_DD, RP_NO])
-                itm = 0  # 定义项次
-                YD_ATY = 0  # 原来单总金额
-                for i in list:
-                    itm += 1
-                    print(i["DH"], i["ATM"])  # 得到单号和金额
-                    QTY_TC_MON = cursor.execute("""SELECT ISNULL(AMTN_CLS,0) FROM TC_MON WHERE ARP_NO=%s""",
-                                                ['AR' + i["DH"][2::]]).fetchall()[0][0]
-                    YD_ATY = round((YD_ATY + QTY_TC_MON), 4)
-                    print(i["ATM"])
-                    cursor.execute("""UPDATE TC_MON SET AMTN_CLS=%s WHERE ARP_NO=%s AND RP_ID='1'""",
-                                   [i["ATM"], 'AR' + i["DH"][2::]])
-                    # 更新立账金额
-                    # 回写立账单的数据
-                    # 获取原单已冲金额未冲金额
-                    # AMTN_RCV 已经冲金额   AMT未冲金额========================================================================================
-                    ATM_MF_ARP = cursor.execute("""SELECT ISNULL(AMTN_RCV,0),ISNULL(AMT,0) FROM MF_ARP  WHERE BIL_NO=%s""",[i["DH"]]).fetchall()
-                    AMTN_RCV = ATM_MF_ARP[0][0]  # 原单已经冲金额
-                    AMT = ATM_MF_ARP[0][1]  # 原单未冲金额
-                    cursor.execute(
-                        """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s-%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0)-%s-%s WHERE BIL_NO=%s""",
-                        [i["ATM"], AMTN_RCV, i["ATM"], AMT, i["DH"]])
-                    # 如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
-                    row_AMT = cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s",[i["DH"]]).fetchall()[0][0]
-                    if row_AMT <= 0:
-                        cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='F' WHERE BIL_NO=%s""", [i["DH"]])
-                        cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='F',CLSLZ='F' WHERE PS_NO=%s AND PS_ID='SA'""",['SA' + i["DH"][2::]])
-                # 更新预付款已冲金额表
-                cursor.execute("""UPDATE MF_MON SET AMTN_REST=%s WHERE RP_NO=%s AND RP_ID='1'""", [sum_ATM, RP_NO])
-                # 更新预付款单已付金额
-                cursor.execute(
-                    """UPDATE TF_MON SET AMTN_CLS=ISNULL(AMTN_CLS,0)+%s-%s WHERE RP_NO=%s AND RP_ID='1'""",[sum_ATM, YD_ATY, IRP_NO])
-                # 获取预付款单的预付金额和已冲金额,进行对比,如果两个值相同,那么就结案掉预付款单
-                row_AMTN_MF_MON = cursor.execute(
-                    """SELECT ISNULL(AMTN_BC,0) AS AMTN_BC, ISNULL(AMTN_CLS,0) AS AMTN_CLS FROM TF_MON  WHERE RP_NO=%s AND RP_ID='1'""",[IRP_NO]).fetchall()
-
-                if float(row_AMTN_MF_MON[0][0]) == float(row_AMTN_MF_MON[0][1]):
-                    cursor.execute("""UPDATE TF_MON SET CLS_ID='F' WHERE IRP_NO=%s AND RP_ID='1'""", [IRP_NO])
-            except Exception:
-                transaction.savepoint_rollback(sid)
-                return http.HttpResponseForbidden("预收款冲应收单修改sql语句执行异常")
-            transaction.savepoint_commit(sid)
-
-        context = {
-            'a': 'put预收冲应冲作业'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def delete(self, request):
-        req_data = json.loads(request.body.decode())
-        # # 获取参数
-        RP_NO = req_data.get("RP_NO")  # 付款单号         字符类型
-        # {
-        #     "RP_NO": "RTFS9B01002"
-        # }
-        # 判断是否输入单号
-        if RP_NO is None:
-            return http.HttpResponseForbidden('请输入收款单号')
-        # 判断单号的合法性
-        if RP_NO[:4] != 'RTFC' or len(RP_NO) != 11:
-            return http.HttpResponseForbidden('收款单号输入不合法,单号必须是RTYC开头且长度必须是11位')
-        # 判断单号是否存在
-        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO, 'RP_ID', '1')
-        if row_ZL_NO <= 0:
-            return http.HttpResponseForbidden('收款单号不存在')
-        with connection.cursor() as cursor:
-            sid = transaction.savepoint()  # 开启事物
-            try:
-                # 获取原单付款单总金额用于扣减预付款单总金额
-                sum_TF_MON = cursor.execute("""SELECT ISNULL(AMTN_CLS,0) FROM TF_MON WHERE RP_NO=%s AND RP_ID='1'""",[RP_NO]).fetchall()[0][0]
-                # 获取预付款单单号
-                TF_MON_NO = cursor.execute("""SELECT IRP_NO FROM TF_MON1 WHERE RP_NO=%s AND RP_ID='1'""", [RP_NO]).fetchall()[0][0]
-                # 修改预付款扣款金额
-                cursor.execute("""UPDATE TF_MON SET AMTN_CLS=ISNULL(AMTN_CLS,0)-%s WHERE RP_NO=%s AND RP_ID='1'""",[sum_TF_MON, TF_MON_NO])
-                # 以列表的形式获取付款单的立账单号
-                TC_MON_RP_NO = cursor.execute("""SELECT ARP_NO FROM TC_MON WHERE RP_NO=%s AND RP_ID='1'""",[RP_NO]).fetchall()
-                # 遍历列表得到每一张立账单号
-                for i in TC_MON_RP_NO:
-                    print(i[0])  # 立账单号
-                    # 更新立账金额
-                    # 回写立账单的数据
-                    # 获取原单已冲金额未冲金额
-                    # AMTN_RCV 已经冲金额   AMT未冲金额===========================================================
-                    ATM_MF_ARP = cursor.execute("""SELECT ISNULL(AMTN_RCV,0),ISNULL(AMT,0) FROM MF_ARP  WHERE ARP_NO=%s""",[i[0]]).fetchall()
-                    AMTN_RCV = ATM_MF_ARP[0][0]  # 原单已经冲金额
-                    AMT = ATM_MF_ARP[0][1]  # 原单未冲金额
-                    cursor.execute(
-                        """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)-%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0)-%s WHERE ARP_NO=%s""",[AMTN_RCV, AMT, i[0]])
-                    # 如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
-                    row_AMT = cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE ARP_NO=%s",[i[0]]).fetchall()[0][0]
-                    if row_AMT <= 0:
-                        cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='F' WHERE ARP_NO=%s""", [i[0]])
-                        cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='F',CLSLZ='F' WHERE PS_NO=%s""", ['SA' + i[0][2::]])
-                # 删除扣款单
-                cursor.execute("""DELETE FROM TF_MON1 WHERE RP_NO=%s AND RP_ID='1'""", [RP_NO])
-                # 删除付款单表头
-                cursor.execute("""DELETE FROM TF_MON WHERE RP_NO=%s AND RP_ID='1'""", [RP_NO])
-                # 删除付款单表身
-                cursor.execute("""DELETE FROM TC_MON WHERE RP_NO=%s  AND RP_ID='1'""", [RP_NO])
-                # 删除付款记录
-                cursor.execute("""DELETE FROM MF_MON WHERE RP_NO=%s AND RP_ID='1'""", [RP_NO])
-            except Exception:
-                transaction.savepoint_rollback(sid)
-                return http.HttpResponseForbidden("预收款冲应收单删除sql语句执行异常")
-            transaction.savepoint_commit(sid)
-        context = {
-            'a': 'delete预收冲应冲作业'
-        }
+import json
+
+import re
+from django import http
+from django.shortcuts import render
+
+# Create your views here.
+from django.views import View
+from django.db import connection, transaction
+import datetime
+
+from utils.cust_data import customer_data
+from utils.et_CACC_NO import et_CACC_NO
+from utils.examine_ood import examine_ood
+from utils.if_account import if_account
+
+from utils.usr_data import usr_data
+
+# 销货开票
+class salesView(View):
+    @transaction.atomic
+    def get(self, request):
+        context = {
+            'a': 'get预付冲应付作业'
+        }
+        #HttpResponse(content=响应体,content_type=响应体数据MIME类型,status=状态码)
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def post(self, request):
+        # 1,获取参数
+        ZL_NO = request.POST.get("ZL_NO")  # 单据号码    1         字符型
+        LZ_DD = request.POST.get("LZ_DD")  # 单据日期    1         字符型
+        INV_NO = request.POST.get("INV_NO")  # 发票号码    1       字符型
+        # INV_DD = request.POST.get("INV_DD")   #发票日期     1      字符型               不需要
+        ZHANG_ID = request.POST.get("ZHANG_ID")  # 立账方式   1    字符型  2开票 1直接立账
+        # TAX_ID = request.POST.get("TAX_ID")   #扣税类别   1         字符型                    不需要
+        AMT = request.POST.get("AMT")  # 开票金额        1          数字型
+        CUS_NO = request.POST.get("CUS_NO")  # 开票客户编码    1    字符型
+        CUS_NO_NAME = request.POST.get("CUS_NO_NAME")  # 开票客户名称     1       字符型
+        UNI_NO_BUY = request.POST.get("UNI_NO_BUY")  # 纳税人识别码   1           字符型
+        BUY_ADR = request.POST.get("BUY_ADR")  # 开票客户地址   1                 字符型
+        BUY_TEL = request.POST.get("BUY_TEL")  # 开票客户电话   1                 字符型
+        BUY_KH_BANK = request.POST.get("BUY_KH_BANK")  # 开户账号   1            字符型
+        USR = request.POST.get("USR")  # 制单人编码   1                           字符型
+        USR_NAME = request.POST.get("USR_NAME")  # 制单人姓名   1                字符型
+        BUY_ID_CODE = request.POST.get("BUY_ID_CODE")  # 开户银行账号   1       字符型
+        REM = request.POST.get("REM")  # 发票备注   1
+
+        print(UNI_NO_BUY)  #纳税人识别码
+        print(BUY_ID_CODE)  #开户银行账户
+        print(BUY_KH_BANK)  #开户账号
+        print(BUY_TEL)  #电话号码
+        print(BUY_ADR) #地址
+        # 判断单号的合法性
+        if ZL_NO[:3]!='LZS' or len(ZL_NO)!=10:
+            return http.HttpResponseForbidden('开票单号输入不合法,单号必须是LZS开头且长度必须是10位')
+        # 校验日期格式
+        try:
+            datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')
+        except Exception:
+            return http.HttpResponseForbidden('日期格式输入不正确')
+        if  ZL_NO is None:
+            return http.HttpResponseForbidden('请输入开票单号')
+            # 判断金额输入是否正确
+        if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(AMT)) is None:
+            return http.HttpResponseForbidden('金额输入不正确')
+        if ZHANG_ID is None:
+            return http.HttpResponseForbidden('请输入开票方式')
+        # 判断立账方式是否有效
+        if int(ZHANG_ID) != 1 and int(ZHANG_ID) != 2:
+            return http.HttpResponseForbidden('立账方式只能是1(开票),2(不开票)')
+        # 判断开票单号是否存在
+        if int(ZHANG_ID) == 2:
+            row_ZL_NO = examine_ood('MF_LZ', 'LZ_NO', ZL_NO, 'LZ_ID', 'LZ')
+            print(row_ZL_NO)
+            if row_ZL_NO > 0:
+                return http.HttpResponseForbidden('销货开票单号已存在')
+
+        # 判断客户资料是否存在,不存在则创建
+        row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, '1', datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'))
+
+        # 判断用户是否存在,不存在则创建
+        row_usr = usr_data(USR, USR_NAME, datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'))
+
+        with connection.cursor() as cursor:
+            #直接开发票
+            if int(ZHANG_ID) == 2:
+                # cursor.execute("""UPDATE TF_PSS SET AMT_FP=%s,AMTN_NET_FP=%s WHERE PS_NO=%s""",[AMT, AMT, 'PC' + ZL_NO[2::]])
+                sid = transaction.savepoint()  # 开启事物
+                try:
+                    # 插入销货单表头
+                    cursor.execute("""INSERT INTO MF_PSS(PS_ID,PS_NO,PS_DD,CUS_NO,ZHANG_ID,USR,CHK_MAN,CLS_DATE,SYS_DATE,AMT,EXC_RTO,LZ_CLS_ID,CLSLZ,TAX_ID,YD_ID)
+                    VALUES('SA',%s,%s,%s,3,%s,%s,%s,%s,%s,1,'F','F',1,'T')""",
+                    [ 'SA' + ZL_NO[2::], datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), CUS_NO,USR,USR,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),
+                    datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),AMT])
+                    #插入销货单表身
+                    cursor.execute("""INSERT INTO TF_PSS(PS_ID,PS_NO,PS_DD,WH,PRD_NO,PRD_NAME,QTY,UP,AMT,AMTN_NET,TAX_RTO,ITM,UNIT,CSTN_SAL,PRE_ITM)
+                    VALUES('SA',%s,%s,'0000','AQ002','安装费用',1,1,%s,%s,5,1,1,%s,1)""",['SA' + ZL_NO[2::], datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), AMT,AMT,AMT])
+                    #插入发票
+                    cursor.execute("""INSERT INTO INV_NO (BIL_NO,INV_NO,BIL_ID,INV_ID,CUS_NO,TITLE_BUY,TITLE_PAY,AMT,TAX_ID1,TAX_ID2,INV_TT,INV_DD,UNI_NO_BUY,BUY_ADR,BUY_TEL,BUY_KH_BANK,BUY_ID_CODE,REM)
+                    VALUES(%s,%s,'LZ',21,%s,%s,%s,%s,1,1,1,%s,%s,%s,%s,%s,%s,%s)""",[ZL_NO, INV_NO, CUS_NO, CUS_NO_NAME, CUS_NO_NAME, AMT,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),
+                    UNI_NO_BUY, BUY_ADR, BUY_TEL, BUY_KH_BANK, BUY_ID_CODE, REM])
+                    #插入立账单
+                    cursor.execute("""INSERT INTO MF_ARP(ARP_ID,OPN_ID,ARP_NO,BIL_NO,CUS_NO,PAY_DD,INV_NO,AMT,AMTN,AMTN_NET,EXC_RTO,CLOSE_ID,BIL_ID,SYS_DATE,BIL_DD)VALUES
+                    (1,2,%s,%s,%s,%s,%s,%s,%s,%s,1,'F','LZ',%s,%s)""",['AR' + ZL_NO[2::], ZL_NO, CUS_NO,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),
+                    INV_NO,AMT,AMT,AMT,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')])
+                    #插入开票单表头
+                    cursor.execute("""INSERT INTO MF_LZ(LZ_ID,LZ_NO,PAY_DD,LZ_DD,CUS_NO,INV_NO,EXC_RTO,USR,CHK_MAN,AMT,AMTN_NET,ARP_NO,CLS_DATE,TAX_ID,ZHANG_ID,SYS_DATE,VOH_CHK,TURN_ID,INV_BIL_ID,INV_BIL_NO,FLG_VOH)VALUES
+                    ('LZ',%s,%s,%s,%s,%s,1,%s,%s,%s,%s,%s,%s,'1',3,%s,1,1,'LZ',%s,'F')""",
+                    [ZL_NO,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),CUS_NO,INV_NO,USR,USR, AMT,AMT, 'AR' + ZL_NO[2::],datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),
+                     datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),ZL_NO])
+                    # 插入开票单表身
+                    cursor.execute("""INSERT INTO TF_LZ(LZ_ID,LZ_NO,ITM,CK_NO,AMT,AMTN_NET,PRD_NO,EST_ITM,PAY_DD,TAX_RTO,QTY,UP,BIL_ID,UNIT,PRD_NAME,CUS_NO,UP_ZG,PRE_ITM)VALUES
+                    ('LZ',%s,1,%s,%s,%s,'AQ002',1,%s,5,1,1,'SA',1,'安装费用',%s,1,1)""",[ZL_NO, 'SA' + ZL_NO[2::],AMT,AMT,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), CUS_NO])
+                    # 修改销货单开票金额
+                    cursor.execute("""UPDATE TF_PSS SET AMT_FP=ISNULL(AMT_FP,0)+%s,AMTN_NET_FP=ISNULL(AMTN_NET_FP,0)+%s WHERE PS_NO=%s AND PS_ID='SA'""",[AMT, AMT, 'SA' + ZL_NO[2::]])
+                except Exception:
+                    transaction.savepoint_rollback(sid)  # 语句执行错误,进行语句回滚
+                    return http.HttpResponseForbidden("删除新增销货开票作业sql语句执行错误")
+                transaction.savepoint_commit(sid)  # 提交事物
+        context = {
+            'a': 'post新增销货开票作业'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def put(self, request):
+
+        # 获取传过来的参数
+        req_data = json.loads(request.body.decode())
+
+        ZL_NO = req_data.get("ZL_NO")  # 单据号码    1
+        LZ_DD = req_data.get("LZ_DD")  # 单据日期    1
+        INV_NO = req_data.get("INV_NO")  # 发票号码    1
+        # INV_DD = req_data.get("INV_DD")  # 发票日期     1
+        ZHANG_ID = req_data.get("ZHANG_ID")  # 立账方式   1
+        # TAX_ID = req_data.get("TAX_ID")  # 扣税类别   1
+        AMT = req_data.get("AMT")  # 开票金额        1                  不需要
+        CUS_NO = req_data.get("CUS_NO")  # 开票客户编码    1
+        CUS_NO_NAME = req_data.get("CUS_NO_NAME")  # 开票客户名称     1
+        UNI_NO_BUY = req_data.get("UNI_NO_BUY")  # 纳税人识别码   1
+        BUY_ADR = req_data.get("BUY_ADR")  # 开票客户地址   1
+        BUY_TEL = req_data.get("BUY_TEL")  # 开票客户电话   1
+        BUY_KH_BANK = req_data.get("BUY_KH_BANK")  # 开户账号   1
+        USR = req_data.get("USR")  # 制单人编码   1
+        USR_NAME = req_data.get("USR_NAME")  # 制单人姓名   1
+        BUY_ID_CODE = req_data.get("BUY_ID_CODE")  # 开户银行账号   1
+        REM = req_data.get("REM")  # 发票备注   1
+        UP_DD = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')  # 修改时间
+        print(UNI_NO_BUY)  # 纳税人识别码
+        print(BUY_ID_CODE)  # 开户银行账户
+        print(BUY_KH_BANK)  # 开户账号
+        print(BUY_TEL)  # 电话号码
+        print(BUY_ADR)  # 地址
+        # {
+        #     "ZL_NO": "LZS9A300001",
+        #     "LZ_DD": "2019-10-30",
+        #     "INV_NO": "000001111122222",
+        #     "ZHANG_ID": "2",
+        #     "AMT": 89,
+        #     "CUS_NO": "AB0001",
+        #     "CUS_NO_NAME": "天心软件",
+        #     "UNI_NO_BUY": "443222222222222222",
+        #     "BUY_ADR": "广州天河华港上午大厦",
+        #     "BUY_TEL": "13444567876",
+        #     "BUY_KH_BANK": "01",
+        #     "USR": "A10000",
+        #     "USR_NAME": "楠楠",
+        #     "BUY_ID_CODE": "43112919941002",
+        #     "REM": "我的备注"
+        # }
+
+        # 判断单号的合法性
+        if ZL_NO[:3] != 'LZS' or len(ZL_NO) != 10:
+            return http.HttpResponseForbidden('开票单号输入不合法,单号必须是LZS开头且长度必须是10位')
+        # 校验日期格式
+        try:
+            datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')
+        except Exception:
+            return http.HttpResponseForbidden('日期格式输入不正确')
+        if ZL_NO is None:
+            return http.HttpResponseForbidden('请输入开票单号')
+            # 判断金额输入是否正确
+        if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(AMT)) is None:
+            return http.HttpResponseForbidden('金额输入不正确')
+        if ZHANG_ID is None:
+            return http.HttpResponseForbidden('请输入开票方式')
+        # 判断立账方式是否有效
+        if int(ZHANG_ID) != 1 and int(ZHANG_ID) != 2:
+            return http.HttpResponseForbidden('立账方式只能是1(开票),2(不开票)')
+        row_TC_MON = examine_ood('TC_MON', 'RP_NO', 'AR' + ZL_NO[2::], 'RP_ID', '1')
+        # 判断是否产生付款单
+        if row_TC_MON>0:
+            return http.HttpResponseForbidden('已经产生付款单部允许修改')
+        # 判断进货单号是存在
+        if int(ZHANG_ID) == 1:
+            row_ZL_NO = examine_ood('MF_PSS', 'PS_NO', 'SA' + ZL_NO[2::], 'PS_ID', 'SA')
+            if row_ZL_NO <= 0:
+                return http.HttpResponseForbidden('销货单号不存在')
+        # 判断开票单号是否存在
+        if int(ZHANG_ID) > 2:
+            row_ZL_NO = examine_ood('MF_LZ', 'LZ_NO', ZL_NO, 'LZ_ID', 'LZ')
+            if row_ZL_NO <= 0:
+                return http.HttpResponseForbidden('销货开票单号不存在')
+        # 判断厂商是否存在,不存在则自动创建
+        row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, '1', datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'))
+
+        # 判断用户是否存在,不存在则创建
+        row_usr = usr_data(USR, USR_NAME, datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'))
+        with connection.cursor() as cursor:
+            #进货开票
+            if int(ZHANG_ID)==2:
+                sid = transaction.savepoint()  # 开启事物
+                try:
+                    # 修改进货单表头
+                    cursor.execute("""UPDATE MF_PSS SET PS_DD=%s,CUS_NO=%s,ZHANG_ID=%s,AMT=%s,MODIFY_DD=%s,MODIFY_MAN=USR WHERE PS_NO=%s AND PS_ID='SA'""",
+                    [datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), CUS_NO,ZHANG_ID,AMT,UP_DD,'SA'+ZL_NO[2::]])
+                    #修改进货单表身
+                    cursor.execute("""UPDATE TF_PSS SET PS_DD=%s,UP=%s,AMTN_NET=%s,CSTN_SAL=%s,AMT=%s,AMT_FP=%s,AMTN_NET_FP=%s WHERE PS_NO=%s AND PS_ID='SA'""",
+                    [datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), AMT, AMT, AMT, AMT, AMT, AMT, 'SA' + ZL_NO[2::]])
+                    # 修改发票记录
+                    cursor.execute(
+                        """UPDATE INV_NO SET INV_NO=%s,CUS_NO=%s,TITLE_BUY=%s,TITLE_PAY=%s,AMT=%s,INV_DD=%s,UNI_NO_BUY=%s,BUY_ADR=%s,BUY_TEL=%s,BUY_KH_BANK=%s,BUY_ID_CODE=%s,REM=%s WHERE BIL_NO=%s AND BIL_ID='LZ'""",
+                        [INV_NO, CUS_NO, CUS_NO_NAME, CUS_NO_NAME, AMT, LZ_DD, UNI_NO_BUY, BUY_ADR, BUY_TEL, BUY_KH_BANK,BUY_ID_CODE, REM, ZL_NO])
+                    # 修改立账单MF_MRP
+                    cursor.execute("""UPDATE MF_ARP SET CUS_NO=%s,PAY_DD=%s,INV_NO=%s,AMT=%s,AMTN=%s,AMTN_NET=%s,SYS_DATE=%s WHERE ARP_NO=%s AND BIL_ID='LZ'""",
+                        [CUS_NO, datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),INV_NO, AMT, AMT, AMT, datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), 'AR' + ZL_NO[2::]])
+                    # 插入进货开票表头
+                    cursor.execute("""UPDATE MF_LZ SET PAY_DD=%s,LZ_DD=%s,CUS_NO=%s,INV_NO=%s,AMT=%s,AMTN_NET=%s,MODIFY_DD=%s,MODIFY_MAN=USR WHERE LZ_NO=%s AND LZ_ID='LZ'""",
+                        [datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),CUS_NO, INV_NO, AMT, AMT, UP_DD, ZL_NO])
+                    # 修改进货开票表身
+                    cursor.execute("""UPDATE TF_LZ SET AMT=%s,AMTN_NET=%s,CUS_NO=%s WHERE LZ_NO=%s AND LZ_ID='LZ'""",[AMT, AMT, CUS_NO, ZL_NO])
+                    # 修改开完发票回写进货单表身已开金额
+                    cursor.execute("""UPDATE TF_PSS SET AMT_FP=%s,AMTN_NET_FP=%s WHERE PS_NO=%s AND PS_ID='SA'""",[AMT, AMT, 'SA' + ZL_NO[2::]])
+                except Exception:
+                    transaction.savepoint_rollback(sid)  # 语句执行错误,进行语句回滚
+                    return http.HttpResponseForbidden("修改销货开票作业sql语句执行错误")
+                transaction.savepoint_commit(sid)  # 提交事物
+        context = {
+            'a': 'put修改销货开票作业'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def delete(self, request):
+        # 获取传过来的参数
+        req_data = json.loads(request.body.decode())
+        ZL_NO = req_data.get("ZL_NO")  # 单据号码
+        ZHANG_ID = req_data.get("ZHANG_ID")  # 立账方式
+        # {
+        #     "ZL_NO": "LZS9B01001",
+        #     "ZHANG_ID": "2"
+        # }
+        if ZL_NO is None:
+            return http.HttpResponseForbidden('请传入开票单号')
+        if ZHANG_ID is None:
+            return http.HttpResponseForbidden('请传入开票类型')
+        # 判断立账方式是否有效
+        if int(ZHANG_ID) != 1 and int(ZHANG_ID) != 2:
+            return http.HttpResponseForbidden('立账方式只能是1(开票),2(不开票)')
+        # 判断是否产生付款单
+        row_TC_MON = examine_ood('TC_MON', 'RP_NO', 'AR' + ZL_NO[2::], 'RP_ID', '1')
+        if row_TC_MON > 0:
+            return http.HttpResponseForbidden('已经产生付款单不允许修改')
+        # 判断进货单号是存在
+        if int(ZHANG_ID) == 1:
+            row_ZL_NO = examine_ood('MF_PSS', 'PS_NO', 'SA' + ZL_NO[2::], 'PS_ID', 'SA')
+            if row_ZL_NO <= 0:
+                return http.HttpResponseForbidden('进货单号不存在')
+        # 判断开票单号是否存在
+        if int(ZHANG_ID) == 2:
+            row_ZL_NO = examine_ood('MF_LZ', 'LZ_NO', ZL_NO, 'LZ_ID', 'LZ')
+            if row_ZL_NO <= 0:
+                return http.HttpResponseForbidden('开票单号不存在')
+
+        with connection.cursor() as cursor:
+            if int(ZHANG_ID) == 2:
+                # 判断是否产生后续单据
+                sql = "SELECT COUNT(*) FROM %s WHERE %s='%s'" % ('TC_MON', 'ARP_NO', 'AR' + ZL_NO[2::])
+                row_ZL_NO = cursor.execute(sql).fetchall()[0][0]
+                if row_ZL_NO > 0:
+                    return http.HttpResponseForbidden('开票单或进货单已产生后续收付款单')
+                sid = transaction.savepoint()  # 开启事物
+                try:
+                    # 删除进货来票作业表头
+                    cursor.execute("""DELETE FROM TF_LZ WHERE  LZ_NO=%s AND LZ_ID='LZ'""", [ZL_NO])
+                    # 删除进货开票作业表身
+                    cursor.execute("""DELETE FROM MF_LZ WHERE  LZ_NO=%s AND LZ_ID='LZ'""", [ZL_NO])
+                    # 删除立账金额单据
+                    cursor.execute("""DELETE FROM MF_ARP WHERE BIL_NO=%s AND BIL_ID='LZ'""", [ZL_NO])
+                    # 删除发票单据
+                    cursor.execute("""DELETE FROM INV_NO  WHERE BIL_NO=%s AND BIL_ID='LZ'""", [ZL_NO])
+                    # 删除进货单表身单据
+                    cursor.execute("""DELETE FROM MF_PSS WHERE PS_NO=%s AND PS_ID='SA'""", ['SA' + ZL_NO[2::]])
+                    # 删除进货单表头单据
+                    cursor.execute("""DELETE FROM TF_PSS WHERE PS_NO=%s AND PS_ID='SA'""", ['SA' + ZL_NO[2::]])
+                except Exception:
+                    transaction.savepoint_rollback(sid)  # 语句执行错误,进行语句回滚
+                    return http.HttpResponseForbidden("删除销货销货开票作业sql语句执行错误")
+                transaction.savepoint_commit(sid)  # 提交事物
+        context = {
+            'a': 'delete删除销货开票作业'
+        }
+        return http.JsonResponse(context)
+
+# 销货收款
+class proceedsView(View):
+
+    @transaction.atomic
+    def get(self, request):
+        context = {
+            'a': 'get销货收款作业'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def post(self, request):
+        # 获取参数
+        RP_NO = request.POST.get("RP_NO")  # 付款单号         字符类型
+        RP_DD = request.POST.get("RP_DD")  # 付款日期            字符类型
+        CUS_NO = request.POST.get("CUS_NO")  # 付款客户编码        字符类型
+        AMTN_BC = request.POST.get("AMTN_BC")  # 付款金额            数字类型
+        CACC_NO = request.POST.get("CACC_NO")  # 付款银行编码          字符类型
+        USR = request.POST.get("USR")  # 制单人编码                   字符类型
+        USR_NAME = request.POST.get("USR_NAME")  # 制单人姓名         字符类型
+        MF_LZ1 = request.POST.get("MF_LZ1")  # 进货开票单号         字符类型
+
+        # 判断单号的合法性
+        if RP_NO[:3] != 'RTS' or len(RP_NO) != 10:
+            return http.HttpResponseForbidden('收款单号输入不合法,单号必须是RTS开头且长度必须是10位')
+        # 校验日期格式
+        try:
+            datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+        except Exception:
+            return http.HttpResponseForbidden('日期格式输入不正确')
+        if RP_NO is None:
+            return http.HttpResponseForbidden('请输入收款单号')
+        # //判断有没有输入银行账号
+        sum_CACC_NO = et_CACC_NO(CACC_NO)
+        if sum_CACC_NO == 'NO':
+            return http.HttpResponseForbidden('请检查银行账号是否存在或者是否输入正确')
+            # 判断金额输入是否正确
+        if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(AMTN_BC)) is None:
+            return http.HttpResponseForbidden('金额输入不正确')
+        # 判断单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO, 'RP_ID', '1')
+        if row_ZL_NO > 0:
+            return http.HttpResponseForbidden('付款单号已存在')
+        # 判断账号类别
+        sid = transaction.savepoint()  # 开启事物
+        try:
+            tp_CACC_NO = if_account(CACC_NO)
+        except Exception:
+            transaction.savepoint_rollback(sid)
+            return http.HttpResponseForbidden("查询账户类型语句执行异常")
+        transaction.savepoint_commit(sid)
+        # 判断用户是否存在,不存在则创建
+        row_usr = usr_data(USR, USR_NAME, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
+
+        with connection.cursor() as cursor:
+            # 判断开票单号是否存在
+            MF_LZ1_NO = cursor.execute("""SELECT COUNT(*) FROM MF_ARP WHERE ARP_NO=%s""", ['AR' + MF_LZ1[2::]]).fetchall()[0][0]
+            if MF_LZ1_NO<=0:
+                return http.HttpResponseForbidden('开票单号不存在')
+            # 获取银行账号的会计科目
+            Acc_No_km = cursor.execute("""SELECT ISNULL(Acc_No,'') FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
+            if Acc_No_km == '':
+                return http.HttpResponseForbidden('银行会计科目不存在')
+            sid = transaction.savepoint()  # 开启事物
+            try:
+                # 银行账户
+                if int(tp_CACC_NO) == 1:
+                    # 插入收款单表头
+                    cursor.execute("""INSERT INTO TF_MON(IRP_ID,RP_NO,ITM,RP_ID,CLS_ID,RP_DD,CUS_NO,INCLUDESON,AMTN_BB,AMTN_CLS,BC_NO,BACC_NO,EXC_RTO,DEP,USR,CHK_MAN,CLS_DATE,SYS_DATE,
+                    IEA_ID,IOR_ID,SK_TYPE)VALUES('F',%s,1,1,'T',%s,%s,'F',%s,%s,%s,%s,1,'0000',%s,%s,%s,%s,'F','F',1)""",[RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO,
+                    AMTN_BC, AMTN_BC,'BT' + RP_NO[2::], CACC_NO, USR, USR, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),datetime.datetime.strptime(RP_DD, '%Y-%m-%d')])
+                # 现金账户
+                if int(tp_CACC_NO) == 2:
+                    # 插入收款单表头
+                    cursor.execute("""INSERT INTO TF_MON(IRP_ID,RP_NO,ITM,RP_ID,CLS_ID,RP_DD,CUS_NO,INCLUDESON,AMTN_BC,AMTN_CLS,BC_NO,CACC_NO,EXC_RTO,DEP,USR,CHK_MAN,CLS_DATE,SYS_DATE,
+                     IEA_ID,IOR_ID,SK_TYPE)VALUES('F',%s,1,1,'T',%s,%s,'F',%s,%s,%s,%s,1,'0000',%s,%s,%s,%s,'F','F',1)""",[RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO,
+                     AMTN_BC, AMTN_BC, 'BT' + RP_NO[2::], CACC_NO, USR, USR,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),datetime.datetime.strptime(RP_DD, '%Y-%m-%d')])
+                #插入收款单表身
+                cursor.execute("""INSERT INTO TC_MON(RP_ID,RP_NO,ITM,ITM2,ARP_NO,AMTN_CLS,ARP_OPN_ID,RP_DD,CUS_NO,PRE_ITM)values
+                (1,%s,1,1,%s,%s,2,%s,%s,1)""",[RP_NO, 'AR' + MF_LZ1[2::], AMTN_BC, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO])
+
+                #插入收款单回写金额表
+                cursor.execute("""INSERT INTO MF_MON(RP_ID,RP_NO,RP_DD,DEP,AMTN,AMTN_ARP,AMTN_REST,FJ_NUM)VALUES
+                (1,%s,%s,'0000',%s,%s,%s,0)""",[RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC, AMTN_BC, AMTN_BC])
+
+                #插入账户收支单表头
+                cursor.execute("""INSERT INTO MF_BAC(BB_ID,BB_NO,BB_DD,BACC_NO,ACC_NO,DEP,BIL_NO,EXC_RTO,AMTN,USR,CHK_MAN,OPN_ID,CLS_DATE,SYS_DATE,BIL_ID_N,BIL_NO_N)VALUES
+                ('BT',%s,%s,%s,%s,'0000',%s,1,%s,%s,%s,'F',%s,%s,'RT',%s)""",['BT' + RP_NO[2::], datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CACC_NO, Acc_No_km,
+                'PT' + RP_NO, float(AMTN_BC), USR, USR, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), RP_NO])
+
+                # 插入账户收支单表身
+                cursor.execute("""INSERT INTO TF_BAC(BB_ID,BB_NO,ITM,BB_DD,EXC_RTO,AMTN,DEP,CUS_NO,ADD_ID,PRE_ITM)values
+                ('BT',%s,1,%s,1,%s,'0000',%s,'+',1)""",['BT' + RP_NO[2::], datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC, CUS_NO])
+
+                # 回写立账单的数据
+                cursor.execute("""UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0)-%s WHERE BIL_NO=%s""",[AMTN_BC, AMTN_BC, MF_LZ1])
+                # AMTN_RCV   已冲金额     ISNULL(AMTN_RCV,0)+%s
+                # AMT   未冲金额  ISNULL(AMT,0)-%s
+                # BIL_NO  开票单号
+
+                # 如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
+                row_AMT = cursor.execute("SELECT ISNULL(AMT,0) FROM MF_ARP WHERE BIL_NO=%s",[MF_LZ1]).fetchall()[0][0]
+                if row_AMT <= 0:
+                    cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='T' WHERE BIL_NO=%s""", [MF_LZ1])
+                    cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='T',CLSLZ='T' WHERE PS_NO=%s""", ['SA' + MF_LZ1[2::]])
+            except Exception:
+                transaction.savepoint_rollback(sid)
+                return http.HttpResponseForbidden("新增收款单sql语句执行异常")
+            transaction.savepoint_commit(sid)
+        context = {
+            'a': 'post新增收款作业'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def put(self, request):
+
+        req_data = json.loads(request.body.decode())
+        # 获取参数
+        RP_NO = req_data.get("RP_NO")  # 付款单号         字符类型
+        RP_DD = req_data.get("RP_DD")  # 付款日期            字符类型
+        AMTN_BC = req_data.get("AMTN_BC")  # 付款金额            数字类型
+        CACC_NO = req_data.get("CACC_NO")  # 付款银行编码          字符类型
+        MF_LZ1 = req_data.get("MF_LZ1")  # 进货开票单号         字符类型
+        UP_DD = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')  # 修改时间
+
+        # {
+        #     "RP_NO":"RTX9A300002",
+        #     "RP_DD":"2019-10-30",
+        #     "AMTN_BC":199,
+        #     "CACC_NO":"01",
+        #     "MF_LZ1":"LZS9A300001"
+        # }
+        # 校验日期格式
+        try:
+            datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+        except Exception:
+            return http.HttpResponseForbidden('日期格式输入不正确')
+        if RP_NO is None:
+            return http.HttpResponseForbidden('请输入收款单号')
+        # //判断有没有输入银行账号
+        sum_CACC_NO = et_CACC_NO(CACC_NO)
+        if sum_CACC_NO == 'NO':
+            return http.HttpResponseForbidden('请检查银行账号是否存在或者是否输入正确')
+            # 判断金额输入是否正确
+        if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(AMTN_BC)) is None:
+            return http.HttpResponseForbidden('金额输入不正确')
+        # 判断单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO, 'RP_ID', '1')
+        if row_ZL_NO <= 0:
+            return http.HttpResponseForbidden('收款单号不存在')
+        # 判断账号类别
+        sid = transaction.savepoint()  # 开启事物
+        try:
+            tp_CACC_NO = if_account(CACC_NO)
+        except Exception:
+            transaction.savepoint_rollback(sid)
+            return http.HttpResponseForbidden("查询账户类型语句执行异常")
+        transaction.savepoint_commit(sid)
+        with connection.cursor() as cursor:
+            # 判断开票单号是否存在
+            MF_LZ1_NO = cursor.execute("""SELECT COUNT(*) FROM TC_MON WHERE ARP_NO=%s""", ['AR' + MF_LZ1[2::]]).fetchall()[0][0]
+
+            if MF_LZ1_NO <= 0:
+                return http.HttpResponseForbidden('开票单号不存在')
+            # 获取银行账号的会计科目
+            Acc_No_km = cursor.execute("""SELECT Acc_No FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
+            if Acc_No_km == '':
+                return http.HttpResponseForbidden('银行会计科目不存在')
+
+            # 缓存之前冲款的金额用于回写立账冲款数据
+            row_AMTN = cursor.execute("""SELECT AMTN_BC FROM TF_MON WHERE RP_NO=%s AND RP_ID='1'""", [RP_NO]).fetchall()[0][0]
+            sid = transaction.savepoint()  # 开启事物
+            try:
+                # 银行账户
+                if int(tp_CACC_NO) == 1:
+                    # 修改付款单表头
+                    cursor.execute(
+                        """UPDATE TF_MON SET RP_DD=%s,AMTN_BB=%s,BACC_NO=%s,MODIFY_DD=%s,MODIFY_MAN=USR,AMTN_CLS=%s WHERE RP_NO=%s AND RP_ID='1'""",
+                        [RP_DD, AMTN_BC, CACC_NO, UP_DD,AMTN_BC, RP_NO])
+                # 现金账户
+                if int(tp_CACC_NO) == 2:
+                    # 修改付款单表头
+                    cursor.execute(
+                        """UPDATE TF_MON SET RP_DD=%s,AMTN_BC=%s,CACC_NO=%s,MODIFY_DD=%s,MODIFY_MAN=USR,AMTN_CLS=%s WHERE RP_NO=%s AND RP_ID='1'""",
+                        [RP_DD, AMTN_BC, CACC_NO, UP_DD, AMTN_BC, RP_NO])
+                # 修改付款单表身
+                cursor.execute("""UPDATE TC_MON SET RP_DD=%s,AMTN_CLS=%s WHERE RP_NO=%s AND RP_ID='1'""",[RP_DD, AMTN_BC, RP_NO])
+
+                # 修改回冲金额表
+                cursor.execute("""UPDATE MF_MON SET AMTN=AMTN+%s-%s,AMTN_REST=AMTN+%s-%s WHERE RP_NO=%s AND RP_ID='1'""",
+                               [AMTN_BC, float(row_AMTN), AMTN_BC, float(row_AMTN), RP_NO])
+
+                # 修改账户收支单表头
+                cursor.execute("""UPDATE MF_BAC SET BB_DD=%s,BACC_NO=%s,ACC_NO=%s,AMTN=%s WHERE BB_NO=%s AND BB_ID='BT'""",
+                               [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CACC_NO, Acc_No_km, -float(AMTN_BC),'BT' + RP_NO[2::]])
+
+                # 修改账户收支单表身
+                cursor.execute("""UPDATE TF_BAC SET BB_DD=%s,AMTN=%s WHERE BB_NO=%s AND BB_ID='BT'""",
+                               [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC, 'BT' + RP_NO[2::]])
+
+                # 回写立账单的数据需要减去之前冲款的金额  row_AMTN
+                cursor.execute("""UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s-%s,AMT=ISNULL(AMT,0)-%s+%s WHERE BIL_NO=%s AND BIL_ID='LZ'""",[AMTN_BC, float(row_AMTN), AMTN_BC, float(row_AMTN), MF_LZ1])
+
+                # 如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
+                row_AMT = cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s AND BIL_ID='LZ'",
+                               [MF_LZ1]).fetchall()[0][0]
+                if row_AMT > 0:
+                    cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='F' WHERE BIL_NO=%s AND BIL_ID='LZ'""", [MF_LZ1])
+                    cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='F',CLSLZ='T' WHERE PS_NO=%s AND PS_ID='SA'""",['SA' + MF_LZ1[2::]])
+            except Exception:
+                transaction.savepoint_rollback(sid)
+                return http.HttpResponseForbidden("修改收款单sql语句执行异常")
+            transaction.savepoint_commit(sid)
+        context = {
+            'a': 'put修改收款作业'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def delete(self, request):
+        # 获取参数
+        req_data = json.loads(request.body.decode())
+        RP_NO = req_data.get("RP_NO")  # 付款单号         字符类型
+        if RP_NO is None:
+            return http.HttpResponseForbidden('请输入收款单号')
+        # 判断单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO, 'RP_ID', '1')
+        if row_ZL_NO <= 0:
+            return http.HttpResponseForbidden('收款单号不存在')
+
+        with connection.cursor() as cursor:
+
+            # 获取原单付款单总金额用于扣减预付款单总金额
+            AMTN_BC = cursor.execute("""SELECT ISNULL(AMTN_CLS,0) FROM TF_MON WHERE RP_NO=%s AND RP_ID='1'""", [RP_NO]).fetchall()[0][0]
+            # 获取开票单号
+            MF_LZ1 = cursor.execute("""SELECT ARP_NO FROM TC_MON WHERE RP_NO=%s AND RP_ID='1'""", [RP_NO]).fetchall()[0][0]
+            MF_LZ1 = 'LZ' + MF_LZ1[2::]
+        # 缓存之前冲款的金额用于回写立账冲款数据
+            row_AMTN = cursor.execute("""SELECT AMTN_BC FROM TF_MON WHERE RP_NO=%s AND RP_ID='1'""", [RP_NO]).fetchall()[0][0]
+            sid = transaction.savepoint()  # 开启事物
+            try:
+                # 删除付款单表头
+                cursor.execute("""DELETE FROM TC_MON WHERE  RP_NO=%s AND RP_ID='1'""", [RP_NO])
+                # 删除付款单表身
+                cursor.execute("""DELETE FROM TF_MON WHERE  RP_NO=%s AND RP_ID='1'""", [RP_NO])
+                # 修改回冲金额表
+                cursor.execute("""DELETE FROM MF_MON WHERE RP_NO=%s AND RP_ID='1'""", [RP_NO])
+                # 删除账户收支单表头
+                cursor.execute("""DELETE FROM MF_BAC WHERE  BB_NO=%s AND BB_ID='BT'""", ['BT' + RP_NO[2::]])
+                # 删除账户收支单表身
+                cursor.execute("""DELETE FROM TF_BAC WHERE  BB_NO=%s AND BB_ID='BT'""", ['BT' + RP_NO[2::]])
+                # 如果金额立账金额等于传过来的金额那么就直接删除
+                row_AMTN_MF_ARP = cursor.execute("""SELECT AMTN FROM MF_ARP WHERE BIL_NO=%s""", [MF_LZ1]).fetchall()[0][0]
+                if float(AMTN_BC) == float(row_AMTN_MF_ARP):
+                    cursor.execute(
+                        """UPDATE MF_ARP SET AMTN_RCV=0,AMT=0 WHERE BIL_NO=%s""", [MF_LZ1])
+                    # 回写立账单的数据需要减去之前冲款的金额  row_AMTN
+                else:
+                    cursor.execute(
+                        """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)-%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0) WHERE BIL_NO=%s""",[AMTN_BC, MF_LZ1])
+                # 结案掉立账单, 还有进货的立账结案标识
+                cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='F' WHERE BIL_NO=%s""", [MF_LZ1])
+                cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='F',CLSLZ='T' WHERE PS_NO=%s""", ['SA' + MF_LZ1[2::]])
+            except Exception:
+                transaction.savepoint_rollback(sid)
+                return http.HttpResponseForbidden("删除收款单sql语句执行异常")
+            transaction.savepoint_commit(sid)
+        context = {
+            'a': 'delete删除收款作业'
+        }
+        return http.JsonResponse(context)
+
+#预收款
+class predictProceedsView(View):
+
+    @transaction.atomic
+    def get(self, request):
+        print('请求内容')
+        context = {
+            'a': 'get预计收款作业'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def post(self, request):
+        # 获取参数
+        RP_NO = request.POST.get("RP_NO")  # 预付款单号         字符类型   ----------------1
+        RP_DD = request.POST.get("RP_DD")  # 预付款日期            字符类型  --------------------1
+        CUS_NO = request.POST.get("CUS_NO")  # 预付款客户编码        字符类型  -------------------------1
+        CUS_NO_NAME = request.POST.get("CUS_NO_NAME")  # 预付款客户名称       字符类型  ---------------------1
+        AMTN_BC = request.POST.get("AMTN_BC")  # 预付款金额            数字类型  ---------------------------1
+        CACC_NO = request.POST.get("CACC_NO")  # 预付款银行编码          字符类型    ------------1
+        USR = request.POST.get("USR")  # 制单人编码                   字符类型   ------------------1
+        USR_NAME = request.POST.get("USR_NAME")  # 制单人姓名         字符类型   -----------------------1
+
+        # 判断单号的合法性
+        if RP_NO[:4] != 'RTFS' or len(RP_NO) != 11:
+            return http.HttpResponseForbidden('预收款单号输入不合法,单号必须是RTFS开头且长度必须是11位')
+        # 校验日期格式
+        try:
+            datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+        except Exception:
+            return http.HttpResponseForbidden('日期格式输入不正确')
+        if RP_NO is None:
+            return http.HttpResponseForbidden('请输入预收款单号')
+        # //判断有没有输入银行账号
+        sum_CACC_NO = et_CACC_NO(CACC_NO)
+        if sum_CACC_NO == 'NO':
+            return http.HttpResponseForbidden('请检查银行账号是否存在或者是否输入正确')
+            # 判断金额输入是否正确
+        if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(AMTN_BC)) is None:
+            return http.HttpResponseForbidden('金额输入不正确')
+        # 判断单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO, 'RP_ID', '1')
+        if row_ZL_NO > 0:
+            return http.HttpResponseForbidden('预付款单号已存在')
+
+        # 判断用户是否存在,不存在则创建
+        row_usr = usr_data(USR, USR_NAME, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
+
+        # 判断客户资料是否存在,不存在则创建
+        row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, '1', datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
+        # 判断账号类别
+        sid = transaction.savepoint()  # 开启事物
+        try:
+            tp_CACC_NO = if_account(CACC_NO)
+        except Exception:
+            transaction.savepoint_rollback(sid)
+            return http.HttpResponseForbidden("查询账户类型语句执行异常")
+        transaction.savepoint_commit(sid)
+        if tp_CACC_NO == 'NO':
+            return http.HttpResponseForbidden('银行账户异常')
+        with connection.cursor() as cursor:
+            # 获取银行账号的会计科目
+            Acc_No_km = cursor.execute("""SELECT ISNULL(Acc_No,'') FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
+            print(Acc_No_km)
+            if Acc_No_km=='':
+                return http.HttpResponseForbidden('银行会计科目不存在')
+            sid = transaction.savepoint()  # 开启事物
+            try:
+                #银行账户
+                if int(tp_CACC_NO) == 1:
+                    # 插入预收款表头
+                    cursor.execute("""INSERT INTO TF_MON(IRP_ID,RP_NO,ITM,RP_ID,CLS_ID,RP_DD,CUS_NO,INCLUDESON,AMTN_BB,AMTN_CLS,BC_NO,BACC_NO,EXC_RTO,DEP,USR,CHK_MAN,CLS_DATE,SYS_DATE,IEA_ID,IOR_ID,SK_TYPE)VALUES
+                                  ('T',%s,1,1,'F',%s,%s,'F',%s,0,%s,%s,1,'0000',%s,%s,%s,%s,'F','F',1)""",
+                                   [RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO, AMTN_BC,'BT' + RP_NO[2::],
+                                    CACC_NO, USR, USR, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),
+                                    datetime.datetime.strptime(RP_DD, '%Y-%m-%d')])
+                # 现金账户
+                if int(tp_CACC_NO) == 2:
+                    #插入预收款表头
+                    cursor.execute("""INSERT INTO TF_MON(IRP_ID,RP_NO,ITM,RP_ID,CLS_ID,RP_DD,CUS_NO,INCLUDESON,AMTN_BC,AMTN_CLS,BC_NO,CACC_NO,EXC_RTO,DEP,USR,CHK_MAN,CLS_DATE,SYS_DATE,IEA_ID,IOR_ID,SK_TYPE)VALUES
+                                    ('T',%s,1,1,'F',%s,%s,'F',%s,0,%s,%s,1,'0000',%s,%s,%s,%s,'F','F',1)""",
+                                   [RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO, AMTN_BC, 'BT' + RP_NO[2::],
+                                    CACC_NO, USR, USR, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),
+                                    datetime.datetime.strptime(RP_DD, '%Y-%m-%d')])
+                #插入语收款立账金额
+                cursor.execute("""INSERT INTO MF_MON(RP_ID,RP_NO,RP_DD,DEP,AMTN,AMTN_ARP,AMTN_REST,FJ_NUM)VALUES
+                                          (1,%s,%s,'0000',%s,0,0,0)""",
+                               [RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC])
+                # 插入账户收支单表头
+                cursor.execute("""INSERT INTO MF_BAC(BB_ID,BB_NO,BB_DD,BACC_NO,ACC_NO,DEP,BIL_NO,EXC_RTO,AMTN,USR,CHK_MAN,OPN_ID,CLS_DATE,SYS_DATE,BIL_ID_N,BIL_NO_N)VALUES
+                                ('BT',%s,%s,%s,%s,'0000',%s,1,%s,%s,%s,'F',%s,%s,'RT',%s)""",
+                               ['BT' + RP_NO[2::], datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CACC_NO , Acc_No_km,'BT' + RP_NO,
+                                float(AMTN_BC), USR, USR, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),
+                                datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),
+                                RP_NO])
+                # 插入收支单表身
+                cursor.execute("""INSERT INTO TF_BAC(BB_ID,BB_NO,ITM,BB_DD,EXC_RTO,AMTN,DEP,CUS_NO,ADD_ID,PRE_ITM)values
+                                ('BT',%s,1,%s,1,%s,%s,'51','+',1)""",
+                               ['BT' + RP_NO[2::], datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC, CUS_NO])
+            except Exception:
+                transaction.savepoint_rollback(sid)
+                return http.HttpResponseForbidden("预收款单新增sql语句执行异常")
+            transaction.savepoint_commit(sid)
+        context = {
+            'a': 'post新增预计收款作业'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def put(self, request):
+
+        # 获取参数
+        req_data = json.loads(request.body.decode())
+        RP_NO = req_data.get("RP_NO")  # 预付款单号         字符类型   ----------------1
+        RP_DD = req_data.get("RP_DD")  # 预付款日期            字符类型  --------------------1
+        CUS_NO = req_data.get("CUS_NO")  # 预付款客户编码        字符类型  -------------------------1
+        CUS_NO_NAME = req_data.get("CUS_NO_NAME")  # 预付款客户名称       字符类型  ---------------------1
+        AMTN_BC = req_data.get("AMTN_BC")  # 预付款金额            数字类型  ---------------------------1
+        CACC_NO = req_data.get("CACC_NO")  # 预付款银行编码          字符类型    ------------1
+        UP_DD = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')  # 修改时间
+        # {
+        #     "RP_NO":"RTFS9B01002",
+        #     "RP_DD":"2019-11-01",
+        #     "CUS_NO":"AB0001",
+        #     "CUS_NO_NAME":"天心软件",
+        #     "AMTN_BC":159,
+        #     "CACC_NO":"01"
+        # }
+        # 判断单号的合法性
+        if RP_NO[:4] != 'RTFS' or len(RP_NO) != 11:
+            return http.HttpResponseForbidden('预收款单号输入不合法,单号必须是RTFS开头且长度必须是11位')
+        # 校验日期格式
+        try:
+            datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+        except Exception:
+            return http.HttpResponseForbidden('日期格式输入不正确')
+        if RP_NO is None:
+            return http.HttpResponseForbidden('请输入预收款单号')
+        # //判断有没有输入银行账号
+        sum_CACC_NO = et_CACC_NO(CACC_NO)
+        if sum_CACC_NO == 'NO':
+            return http.HttpResponseForbidden('请检查银行账号是否存在或者是否输入正确')
+            # 判断金额输入是否正确
+        if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(AMTN_BC)) is None:
+            return http.HttpResponseForbidden('金额输入不正确')
+        # 判断单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO,'RP_ID','1')
+        if row_ZL_NO == 0:
+            return http.HttpResponseForbidden('预付款单号不存在')
+
+        # 判断单号是不是已经产生付款单
+        row_ZL_NO = examine_ood('TF_MON1', 'IRP_NO', RP_NO, 'RP_ID', '1')
+        if row_ZL_NO > 0:
+            return http.HttpResponseForbidden('预付款单已经产生付款单')
+        # 判断账号类别
+        sid = transaction.savepoint()  # 开启事物
+        try:
+            tp_CACC_NO = if_account(CACC_NO)
+        except Exception:
+            transaction.savepoint_rollback(sid)
+            return http.HttpResponseForbidden("查询账户类型语句执行异常")
+        transaction.savepoint_commit(sid)
+        if tp_CACC_NO == 'NO':
+            return http.HttpResponseForbidden('银行账户异常')
+        # 判断客户资料是否存在,不存在则创建
+        row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, '2', datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
+
+        with connection.cursor() as cursor:
+            # 获取银行账号的会计科目
+            Acc_No_km = cursor.execute("""SELECT Acc_No FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
+            if Acc_No_km=='':
+                return http.HttpResponseForbidden('银行会计科目不存在')
+            sid = transaction.savepoint()  # 开启事物
+            try:
+                # 银行账户
+                if int(tp_CACC_NO) == 1:
+                    #修改预付款单
+                    cursor.execute("""UPDATE TF_MON SET RP_DD=%s,CUS_NO=%s,AMTN_BB=%s,BC_NO=%s,BACC_NO=%s,MODIFY_DD=%s,MODIFY_MAN=USR WHERE RP_NO=%s""",
+                    [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO, AMTN_BC, 'BT' + RP_NO[2::], CACC_NO, UP_DD, RP_NO])
+                # 现金账户
+                if int(tp_CACC_NO) == 2:
+                    # 修改预付款单
+                    cursor.execute(
+                        """UPDATE TF_MON SET RP_DD=%s,CUS_NO=%s,AMTN_BC=%s,BC_NO=%s,CACC_NO=%s,MODIFY_DD=%s,MODIFY_MAN=USR WHERE RP_NO=%s""",
+                        [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO, AMTN_BC, 'BT' + RP_NO[2::], CACC_NO,
+                         UP_DD, RP_NO])
+                # 修改立账单金额
+                cursor.execute("""UPDATE MF_MON SET RP_DD=%s,AMTN=%s WHERE RP_NO=%s""",[datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC, RP_NO])
+
+                # 修改账户收支单表头
+                cursor.execute("""UPDATE MF_BAC SET BB_DD=%s,BACC_NO=%s,ACC_NO=%s,BIL_NO=%s,AMTN=%s WHERE BB_NO=%s""",
+                [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CACC_NO, Acc_No_km, 'BT' + RP_NO,float(AMTN_BC), 'BT' + RP_NO[2::]])
+                #修改账户收支单表身
+                cursor.execute("""UPDATE TF_BAC SET BB_DD=%s,AMTN=%s,CUS_NO=%s WHERE BB_NO=%s""",
+                               [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), AMTN_BC, CUS_NO, 'BT' + RP_NO[2::]])
+            except Exception:
+                transaction.savepoint_rollback(sid)
+                return http.HttpResponseForbidden("预收款单修改sql语句执行异常")
+            transaction.savepoint_commit(sid)
+        context = {
+            'a': 'put修改预计收款作业'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def delete(self, request):
+        # 获取参数
+        req_data = json.loads(request.body.decode())
+        RP_NO = req_data.get("RP_NO")  # 预付款单号
+        # {
+        #     "RP_NO": "RTX9A300003"
+        # }
+        # 判断单号的合法性
+        if RP_NO[:4] != 'RTFS' or len(RP_NO) != 11:
+            return http.HttpResponseForbidden('预收款单号输入不合法,单号必须是RTFS开头且长度必须是11位')
+        if RP_NO is None:
+            return http.HttpResponseForbidden('请输入预收款单号')
+        # 判断单号是不是已经产生付款单
+        row_ZL_NO = examine_ood('TF_MON1', 'IRP_NO', RP_NO, 'RP_ID', '1')
+        if row_ZL_NO > 0:
+            return http.HttpResponseForbidden('预付款单已经产生付款单')
+        # 判断单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO, 'RP_ID', '1')
+        if row_ZL_NO == 0:
+            return http.HttpResponseForbidden('预付款单号不存在')
+        with connection.cursor() as cursor:
+            sid = transaction.savepoint()  # 开启事物
+            try:
+                # 删除付款单
+                cursor.execute("""DELETE FROM TF_MON WHERE RP_NO=%s AND RP_ID='1'""", [RP_NO])
+                # 删除金额立账单
+                cursor.execute("""DELETE FROM MF_MON WHERE RP_NO=%s  AND RP_ID='1'""", [RP_NO])
+                # 删除账户收支单表头
+                cursor.execute("""DELETE FROM MF_BAC WHERE BB_NO=%s""", ['BT' + RP_NO[2::]])
+                # 删除账户收支单表身
+                cursor.execute("""DELETE FROM TF_BAC WHERE BB_NO=%s""", ['BT' + RP_NO[2::]])
+            except Exception:
+                transaction.savepoint_rollback(sid)
+                return http.HttpResponseForbidden("预收款单删除sql语句执行异常")
+            transaction.savepoint_commit(sid)
+        context = {
+            'a': 'delete删除预计收款作业'
+        }
+        return http.JsonResponse(context)
+
+#预收冲款
+class predictPaymentView(View):
+
+    @transaction.atomic
+    def get(self, request):
+        sid = transaction.savepoint()  # 开启事物
+        try:
+            print(12312)
+        except Exception:
+            transaction.savepoint_rollback(sid)
+            return http.HttpResponseForbidden("预收款单删除sql语句执行异常")
+        transaction.savepoint_commit(sid)
+        context = {
+            'a': 'get预收冲应冲作业'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def post(self, request):
+        req_data = json.loads(request.body.decode())
+        # print(req_data)
+        # # 获取参数
+        RP_NO = req_data.get("RP_NO")  # 付款单号         字符类型
+        IRP_NO = req_data.get("IRP_NO")  # 预付款单号         字符类型
+        RP_DD = req_data.get("RP_DD")  # 付款日期         字符类型
+        CUS_NO = req_data.get("CUS_NO")  # 付款客户         字符类型
+        USR = req_data.get("USR")  # 制单人         字符类型
+        list = req_data.get("list")  # 付款单号         字符类型
+        # {
+        #     "RP_NO": "RTFS9B01003",
+        #     "IRP_NO": "RTFS9B01002",
+        #     "RP_DD": "2019-11-01",
+        #     "CUS_NO": "AB0001",
+        #     "USR": "A10000",
+        #     "list": [
+        #         {"DH": "LZS9A310002",
+        #          "ATM": 400
+        #          },
+        #         {"DH": "LZS9B01001",
+        #          "ATM": 600
+        #          }
+        #     ]
+        # }
+        # 判断是否输入收款单号
+        if RP_NO is None:
+            return http.HttpResponseForbidden('请输入收款单号')
+        # 判断是否输入预收款单号
+        if IRP_NO is None:
+            return http.HttpResponseForbidden('请输入预收款单号')
+        # 判断单号的合法性
+        if RP_NO[:4] != 'RTFC' or len(RP_NO) != 11:
+            return http.HttpResponseForbidden('收款单号输入不合法,单号必须是RTYC开头且长度必须是11位')
+        # 校验日期格式
+        try:
+            datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+        except Exception:
+            return http.HttpResponseForbidden('日期格式输入不正确')
+        # 判断单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO, 'RP_ID', '1')
+        if row_ZL_NO > 0:
+            return http.HttpResponseForbidden('收款单号已存在')
+        # 判断预收款单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', IRP_NO, 'RP_ID', '1')
+        if row_ZL_NO <= 0:
+            return http.HttpResponseForbidden('预冲款单号不存在')
+        # 获取总金额
+        sum_ATM = 0  # 冲款金额
+        yf_sum = 0  # 获取单据应付款总金额
+
+        for i in list:
+
+            # 判断立账单号是否合法
+            if i["DH"][:3] != 'LZS' or len(i["DH"]) != 10:
+                return http.HttpResponseForbidden('开票单号输入不合法,单号必须是LZS开头且长度必须是10位')
+            # 判断金额输入是否正确
+            if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(i["ATM"])) is None:
+                return http.HttpResponseForbidden('金额输入不正确')
+            sum_ATM = round(sum_ATM + float(i["ATM"]), 4)
+                # 判断开票单号是否存在
+            row_MF_LZ = examine_ood('MF_LZ', 'LZ_NO', i["DH"], 'LZ_ID', 'LZ')
+            if row_MF_LZ <= 0:
+                return http.HttpResponseForbidden('开票单号不存在')
+            with connection.cursor() as cursor:
+                # 获取单据应付款总金额
+                yf_sum =round(yf_sum + cursor.execute("""SELECT AMTN FROM MF_ARP WHERE BIL_NO=%s""", [i["DH"]]).fetchall()[0][0], 4)
+        if sum_ATM>yf_sum:
+            return http.HttpResponseForbidden('冲款金额大于应付金额')
+        with connection.cursor() as cursor:
+            sid = transaction.savepoint()  # 开启事物
+            try:
+                # 插入回冲预收款扣款表
+                # cursor.execute("SELECT COUNT(*) FROM CUST WHERE CUS_NO=%s", [CUS_NO])
+                cursor.execute("""INSERT INTO TF_MON1(RP_ID,RP_NO,ITM,IRP_NO,RP_ID1,IRPITM,IRPITM2,AMTN_CLS)VALUES
+                                (1,%s,1,%s,1,1,0,%s)""", [RP_NO, IRP_NO, sum_ATM])
+                # 插入付款单表头
+                cursor.execute("""INSERT INTO TF_MON(IRP_ID,RP_NO,ITM,RP_ID,CLS_ID,RP_DD,CUS_NO,INCLUDESON,AMTN_CLS,AMTN_IRP,EXC_RTO,DEP,USR,CHK_MAN,CLS_DATE,SYS_DATE,IEA_ID,IOR_ID,SK_TYPE)VALUES
+                ('F',%s,1,1,'F',%s,%s,'F',%s,%s,1,'0000',%s,%s,%s,%s,'F','F',1)""",[RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO, sum_ATM, sum_ATM, USR, USR,
+                datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),datetime.datetime.strptime(RP_DD, '%Y-%m-%d')])
+                # 插入付款单表身,先遍历出每一项的单号和金额,然后在插入
+                itm = 0  # 定义项次
+                for i in list:
+                    itm += 1
+                    # print(i["DH"], i["ATM"])  # 得到单号和金额
+                    # print(itm)
+                    cursor.execute("""INSERT INTO TC_MON(RP_ID,RP_NO,ITM,ITM2,ARP_NO,AMTN_CLS,ARP_OPN_ID,RP_DD,CUS_NO,PRE_ITM)values
+                    (1,%s,1,%s,%s,%s,2,%s,%s,%s)""", [RP_NO, itm, 'AR' + i["DH"][2::], i["ATM"],datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), CUS_NO,itm])
+                    # 更新立账金额 回写立账单的数据
+                    cursor.execute(
+                        """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0)-%s WHERE BIL_NO=%s""",
+                        [i["ATM"], i["ATM"], i["DH"]])
+                    # 如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
+                    row_AMT = cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s",
+                                             [i["DH"]]).fetchall()[0][0]
+                    if row_AMT <= 0:
+                        cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='T' WHERE BIL_NO=%s""", [i["DH"]])
+                        cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='T',CLSLZ='T' WHERE PS_NO=%s AND PS_ID='SA'""",
+                        ['SA' + i["DH"][2::]])
+                # 插入预付款已冲金额表  ------
+                cursor.execute(
+                    """INSERT INTO MF_MON(RP_NO,RP_DD,RP_ID,DEP,AMTN,AMTN_ARP,AMTN_REST,FJ_NUM)VALUES(%s,%s,1,'0000',0,%s,%s,0)""",
+                    [RP_NO, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), yf_sum, sum_ATM])
+                # 更新预付款单已付金额
+                cursor.execute(
+                    """UPDATE TF_MON SET AMTN_CLS=ISNULL(AMTN_CLS,0)+%s WHERE RP_NO=%s AND RP_ID='1'""",
+                    [sum_ATM, IRP_NO])
+                # 获取预付款单的预付金额和已冲金额,进行对比,如果两个值相同,那么就结案掉预付款单
+                row_AMTN_MF_MON = cursor.execute(
+                """SELECT ISNULL(AMTN_BC,0) AS AMTN_BC, ISNULL(AMTN_CLS,0) AS AMTN_CLS FROM TF_MON  WHERE RP_NO=%s AND RP_ID='1'""",[IRP_NO]).fetchall()
+                if float(row_AMTN_MF_MON[0][0]) == float(row_AMTN_MF_MON[0][1]):
+                    cursor.execute("""UPDATE TF_MON SET CLS_ID='T' WHERE IRP_NO=%s AND RP_ID='1'""", [IRP_NO])
+            except Exception:
+                transaction.savepoint_rollback(sid)
+                return http.HttpResponseForbidden("预收款冲应收单新增sql语句执行异常")
+            transaction.savepoint_commit(sid)
+        context = {
+            'a': 'post预收冲应冲作业'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def put(self, request):
+        req_data = json.loads(request.body.decode())
+        # # 获取参数
+        RP_NO = req_data.get("RP_NO")  # 付款单号         字符类型
+        IRP_NO = req_data.get("IRP_NO")  # 预付款单号         字符类型
+        RP_DD = req_data.get("RP_DD")  # 付款日期         字符类型
+        list = req_data.get("list")  # 付款单号         字符类型
+        UP_DD = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')  # 修改时间
+        # {
+        #     "RP_NO": "RTFC9B01003",
+        #     "IRP_NO": "RTFS9B01002",
+        #     "RP_DD": "2019-11-01",
+        #     "list": [
+        #         {"DH": "LZS9B01002",
+        #          "ATM": "200"
+        #          },
+        #         {"DH": "LZS9B01001",
+        #          "ATM": 200
+        #          }
+        #     ]
+        # }
+        if RP_NO is None:
+            return http.HttpResponseForbidden('请输入收款单号')
+        # 判断是否输入预收款单号
+        if IRP_NO is None:
+            return http.HttpResponseForbidden('请输入预收款单号')
+        # 判断单号的合法性
+        if RP_NO[:4] != 'RTFC' or len(RP_NO) != 11:
+            return http.HttpResponseForbidden('收款单号输入不合法,单号必须是RTYC开头且长度必须是11位')
+        # 校验日期格式
+        try:
+            datetime.datetime.strptime(RP_DD, '%Y-%m-%d')
+        except Exception:
+            return http.HttpResponseForbidden('日期格式输入不正确')
+        # 判断单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO, 'RP_ID', '1')
+        if row_ZL_NO <= 0:
+            return http.HttpResponseForbidden('付款单不存在')
+        # 判断预收款单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', IRP_NO, 'RP_ID', '1')
+        if row_ZL_NO <= 0:
+            return http.HttpResponseForbidden('预冲款单号不存在')
+        # 获取总金额
+        sum_ATM = 0  # 冲款金额
+        yf_sum = 0  # 获取单据应付款总金额
+        for i in list:
+            # 判断立账单号是否合法
+            if i["DH"][:3] != 'LZS' or len(i["DH"]) != 10:
+                return http.HttpResponseForbidden('开票单号输入不合法,单号必须是LZS开头且长度必须是10位')
+            # 判断金额输入是否正确
+            if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(i["ATM"])) is None:
+                return http.HttpResponseForbidden('金额输入不正确')
+            sum_ATM = round(sum_ATM + float(i["ATM"]), 4)
+            # 判断开票单号是否存在
+            row_MF_LZ = examine_ood('MF_LZ', 'LZ_NO', i["DH"], 'LZ_ID', 'LZ')
+            if row_MF_LZ <= 0:
+                return http.HttpResponseForbidden('开票单号不存在')
+            with connection.cursor() as cursor:
+                # 获取单据应付款总金额
+                yf_sum = round(
+                    yf_sum + cursor.execute("""SELECT AMTN FROM MF_ARP WHERE BIL_NO=%s""", [i["DH"]]).fetchall()[0][0],
+                    4)
+        if sum_ATM > yf_sum:
+            return http.HttpResponseForbidden('冲款金额大于应收金额')
+        with connection.cursor() as cursor:
+            sid = transaction.savepoint()  # 开启事物
+            try:
+                # 修改回冲预付款扣款表
+                cursor.execute("""UPDATE  TF_MON1 SET AMTN_CLS=%s WHERE RP_NO=%s AND RP_ID='1'""", [sum_ATM, RP_NO])
+                # 修改付款单表头
+                cursor.execute(
+                    """UPDATE TF_MON SET RP_DD=%s,AMTN_CLS=%s,AMTN_IRP=%s,MODIFY_DD=%s,MODIFY_MAN=USR WHERE RP_NO=%s AND RP_ID='1'""",
+                    [datetime.datetime.strptime(RP_DD, '%Y-%m-%d'), sum_ATM, sum_ATM, UP_DD, RP_NO])
+                itm = 0  # 定义项次
+                YD_ATY = 0  # 原来单总金额
+                for i in list:
+                    itm += 1
+                    print(i["DH"], i["ATM"])  # 得到单号和金额
+                    QTY_TC_MON = cursor.execute("""SELECT ISNULL(AMTN_CLS,0) FROM TC_MON WHERE ARP_NO=%s""",
+                                                ['AR' + i["DH"][2::]]).fetchall()[0][0]
+                    YD_ATY = round((YD_ATY + QTY_TC_MON), 4)
+                    print(i["ATM"])
+                    cursor.execute("""UPDATE TC_MON SET AMTN_CLS=%s WHERE ARP_NO=%s AND RP_ID='1'""",
+                                   [i["ATM"], 'AR' + i["DH"][2::]])
+                    # 更新立账金额
+                    # 回写立账单的数据
+                    # 获取原单已冲金额未冲金额
+                    # AMTN_RCV 已经冲金额   AMT未冲金额========================================================================================
+                    ATM_MF_ARP = cursor.execute("""SELECT ISNULL(AMTN_RCV,0),ISNULL(AMT,0) FROM MF_ARP  WHERE BIL_NO=%s""",[i["DH"]]).fetchall()
+                    AMTN_RCV = ATM_MF_ARP[0][0]  # 原单已经冲金额
+                    AMT = ATM_MF_ARP[0][1]  # 原单未冲金额
+                    cursor.execute(
+                        """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)+%s-%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0)-%s-%s WHERE BIL_NO=%s""",
+                        [i["ATM"], AMTN_RCV, i["ATM"], AMT, i["DH"]])
+                    # 如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
+                    row_AMT = cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s",[i["DH"]]).fetchall()[0][0]
+                    if row_AMT <= 0:
+                        cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='F' WHERE BIL_NO=%s""", [i["DH"]])
+                        cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='F',CLSLZ='F' WHERE PS_NO=%s AND PS_ID='SA'""",['SA' + i["DH"][2::]])
+                # 更新预付款已冲金额表
+                cursor.execute("""UPDATE MF_MON SET AMTN_REST=%s WHERE RP_NO=%s AND RP_ID='1'""", [sum_ATM, RP_NO])
+                # 更新预付款单已付金额
+                cursor.execute(
+                    """UPDATE TF_MON SET AMTN_CLS=ISNULL(AMTN_CLS,0)+%s-%s WHERE RP_NO=%s AND RP_ID='1'""",[sum_ATM, YD_ATY, IRP_NO])
+                # 获取预付款单的预付金额和已冲金额,进行对比,如果两个值相同,那么就结案掉预付款单
+                row_AMTN_MF_MON = cursor.execute(
+                    """SELECT ISNULL(AMTN_BC,0) AS AMTN_BC, ISNULL(AMTN_CLS,0) AS AMTN_CLS FROM TF_MON  WHERE RP_NO=%s AND RP_ID='1'""",[IRP_NO]).fetchall()
+
+                if float(row_AMTN_MF_MON[0][0]) == float(row_AMTN_MF_MON[0][1]):
+                    cursor.execute("""UPDATE TF_MON SET CLS_ID='F' WHERE IRP_NO=%s AND RP_ID='1'""", [IRP_NO])
+            except Exception:
+                transaction.savepoint_rollback(sid)
+                return http.HttpResponseForbidden("预收款冲应收单修改sql语句执行异常")
+            transaction.savepoint_commit(sid)
+
+        context = {
+            'a': 'put预收冲应冲作业'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def delete(self, request):
+        req_data = json.loads(request.body.decode())
+        # # 获取参数
+        RP_NO = req_data.get("RP_NO")  # 付款单号         字符类型
+        # {
+        #     "RP_NO": "RTFS9B01002"
+        # }
+        # 判断是否输入单号
+        if RP_NO is None:
+            return http.HttpResponseForbidden('请输入收款单号')
+        # 判断单号的合法性
+        if RP_NO[:4] != 'RTFC' or len(RP_NO) != 11:
+            return http.HttpResponseForbidden('收款单号输入不合法,单号必须是RTYC开头且长度必须是11位')
+        # 判断单号是否存在
+        row_ZL_NO = examine_ood('TF_MON', 'RP_NO', RP_NO, 'RP_ID', '1')
+        if row_ZL_NO <= 0:
+            return http.HttpResponseForbidden('收款单号不存在')
+        with connection.cursor() as cursor:
+            sid = transaction.savepoint()  # 开启事物
+            try:
+                # 获取原单付款单总金额用于扣减预付款单总金额
+                sum_TF_MON = cursor.execute("""SELECT ISNULL(AMTN_CLS,0) FROM TF_MON WHERE RP_NO=%s AND RP_ID='1'""",[RP_NO]).fetchall()[0][0]
+                # 获取预付款单单号
+                TF_MON_NO = cursor.execute("""SELECT IRP_NO FROM TF_MON1 WHERE RP_NO=%s AND RP_ID='1'""", [RP_NO]).fetchall()[0][0]
+                # 修改预付款扣款金额
+                cursor.execute("""UPDATE TF_MON SET AMTN_CLS=ISNULL(AMTN_CLS,0)-%s WHERE RP_NO=%s AND RP_ID='1'""",[sum_TF_MON, TF_MON_NO])
+                # 以列表的形式获取付款单的立账单号
+                TC_MON_RP_NO = cursor.execute("""SELECT ARP_NO FROM TC_MON WHERE RP_NO=%s AND RP_ID='1'""",[RP_NO]).fetchall()
+                # 遍历列表得到每一张立账单号
+                for i in TC_MON_RP_NO:
+                    print(i[0])  # 立账单号
+                    # 更新立账金额
+                    # 回写立账单的数据
+                    # 获取原单已冲金额未冲金额
+                    # AMTN_RCV 已经冲金额   AMT未冲金额===========================================================
+                    ATM_MF_ARP = cursor.execute("""SELECT ISNULL(AMTN_RCV,0),ISNULL(AMT,0) FROM MF_ARP  WHERE ARP_NO=%s""",[i[0]]).fetchall()
+                    AMTN_RCV = ATM_MF_ARP[0][0]  # 原单已经冲金额
+                    AMT = ATM_MF_ARP[0][1]  # 原单未冲金额
+                    cursor.execute(
+                        """UPDATE MF_ARP SET AMTN_RCV=ISNULL(AMTN_RCV,0)-%s,AMT=ISNULL(AMTN,0)-ISNULL(AMTN_RCV,0)-%s WHERE ARP_NO=%s""",[AMTN_RCV, AMT, i[0]])
+                    # 如果单据已经冲完,结案掉立账单,还有进货的立账结案标识
+                    row_AMT = cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE ARP_NO=%s",[i[0]]).fetchall()[0][0]
+                    if row_AMT <= 0:
+                        cursor.execute("""UPDATE MF_ARP SET CLOSE_ID='F' WHERE ARP_NO=%s""", [i[0]])
+                        cursor.execute("""UPDATE MF_PSS SET LZ_CLS_ID='F',CLSLZ='F' WHERE PS_NO=%s""", ['SA' + i[0][2::]])
+                # 删除扣款单
+                cursor.execute("""DELETE FROM TF_MON1 WHERE RP_NO=%s AND RP_ID='1'""", [RP_NO])
+                # 删除付款单表头
+                cursor.execute("""DELETE FROM TF_MON WHERE RP_NO=%s AND RP_ID='1'""", [RP_NO])
+                # 删除付款单表身
+                cursor.execute("""DELETE FROM TC_MON WHERE RP_NO=%s  AND RP_ID='1'""", [RP_NO])
+                # 删除付款记录
+                cursor.execute("""DELETE FROM MF_MON WHERE RP_NO=%s AND RP_ID='1'""", [RP_NO])
+            except Exception:
+                transaction.savepoint_rollback(sid)
+                return http.HttpResponseForbidden("预收款冲应收单删除sql语句执行异常")
+            transaction.savepoint_commit(sid)
+        context = {
+            'a': 'delete预收冲应冲作业'
+        }
         return http.JsonResponse(context)

二進制
awj/awj/apps/stockinvoice/__pycache__/__init__.cpython-36.pyc


二進制
awj/awj/apps/stockinvoice/__pycache__/admin.cpython-36.pyc


二進制
awj/awj/apps/stockinvoice/__pycache__/apps.cpython-36.pyc


二進制
awj/awj/apps/stockinvoice/__pycache__/models.cpython-36.pyc


二進制
awj/awj/apps/stockinvoice/__pycache__/urls.cpython-36.pyc


二進制
awj/awj/apps/stockinvoice/__pycache__/views.cpython-36.pyc


+ 3 - 3
awj/awj/apps/stockinvoice/admin.py

@@ -1,3 +1,3 @@
-from django.contrib import admin
-
-# Register your models here.
+from django.contrib import admin
+
+# Register your models here.

+ 5 - 5
awj/awj/apps/stockinvoice/apps.py

@@ -1,5 +1,5 @@
-from django.apps import AppConfig
-
-
-class StockinvoiceConfig(AppConfig):
-    name = 'stockinvoice'
+from django.apps import AppConfig
+
+
+class StockinvoiceConfig(AppConfig):
+    name = 'stockinvoice'

二進制
awj/awj/apps/stockinvoice/migrations/__pycache__/__init__.cpython-36.pyc


+ 3 - 3
awj/awj/apps/stockinvoice/models.py

@@ -1,3 +1,3 @@
-from django.db import models
-
-# Create your models here.
+from django.db import models
+
+# Create your models here.

+ 3 - 3
awj/awj/apps/stockinvoice/tests.py

@@ -1,3 +1,3 @@
-from django.test import TestCase
-
-# Create your tests here.
+from django.test import TestCase
+
+# Create your tests here.

+ 5 - 5
awj/awj/apps/stockinvoice/urls.py

@@ -1,6 +1,6 @@
-from django.conf.urls import url
-from . import views
-
-urlpatterns = [
-    url(r'^invoice/$',views.InvoiceView.as_view())
+from django.conf.urls import url
+from . import views
+
+urlpatterns = [
+    url(r'^invoice/$',views.InvoiceView.as_view())
 ]

+ 445 - 402
awj/awj/apps/stockinvoice/views.py

@@ -1,402 +1,445 @@
-import json
-
-from django import http
-from django.shortcuts import render
-
-# Create your views here.
-from django.views import View
-from django.db import connection, transaction
-import datetime
-
-from utils.cust_data import customer_data
-from utils.examine_ood import examine_ood
-from utils.invoice_dh import invoice_dh
-from utils.usr_data import usr_data
-
-
-class InvoiceView(View):
-    def get(self,request):
-        CUS_NO='AB0001'
-        CUS_NO_NAME='天心客户'
-        LZ_DD='2019-10-20'
-        print(111111)
-        with connection.cursor() as cursor:
-            # 判断客户资料是否存在,不存在则创建
-            row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, '1', datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'))
-        context={
-            'a':123
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def post(self,request):
-        #1,获取参数
-        ZL_NO = request.POST.get("ZL_NO")   #单据号码    1         字符型
-        LZ_DD = request.POST.get("LZ_DD")   #单据日期    1         字符型
-        INV_NO = request.POST.get("INV_NO")   #发票号码    1       字符型
-        # INV_DD = request.POST.get("INV_DD")   #发票日期     1      字符型               不需要
-        ZHANG_ID = request.POST.get("ZHANG_ID")   #立账方式   1    字符型  2开票 1直接立账
-        # TAX_ID = request.POST.get("TAX_ID")   #扣税类别   1         字符型                    不需要
-        AMT = request.POST.get("AMT")   #开票金额        1          数字型
-        CUS_NO = request.POST.get("CUS_NO")   #开票客户编码    1    字符型
-        CUS_NO_NAME = request.POST.get("CUS_NO_NAME")   #开票客户名称     1       字符型
-        UNI_NO_PAY = request.POST.get("UNI_NO_PAY")   #纳税人识别码   1           字符型
-        SAL_ADR = request.POST.get("SAL_ADR")   #开票客户地址   1                 字符型
-        SAL_TEL = request.POST.get("SAL_TEL")   #开票客户电话   1                 字符型
-        SAL_KH_BANK = request.POST.get("SAL_KH_BANK")  # 开户账号   1            字符型
-        USR = request.POST.get("USR")   #制单人编码   1                           字符型
-        USR_NAME = request.POST.get("USR_NAME")   #制单人姓名   1                字符型
-        SAL_ID_CODE = request.POST.get("SAL_ID_CODE")   #开户银行账号   1       字符型
-        REM = request.POST.get("REM")   #发票备注   1                            字符型
-        # print(SAL_KH_BANK)
-        # print(SAL_ID_CODE)
-        # print(REM)
-        # print(ZL_NO)   #单据号码    1
-        # print(LZ_DD)   #单据日期    1
-        # print(INV_NO)   #发票号码    1
-        # print(INV_DD)    #发票日期     1
-        # print(ZHANG_ID)    #立账方式   1
-        # # print(TAX_ID)     #扣税类别   1
-        # print(AMT)       #开票金额        1
-        # print(CUS_NO)   #开票客户编码    1
-        # print(CUS_NO_NAME)      #开票客户名称     1
-        # print(UNI_NO_PAY)      #纳税人识别码   1
-        # print(SAL_ADR)     #开票客户地址   1
-        # print(SAL_TEL)       #开票客户电话   1
-        # print(USR)      #制单人编码   1
-        # print(USR_NAME)     #制单人姓名   1
-
-        # 判断立账方式是否有效
-        if int(ZHANG_ID) != 1 and int(ZHANG_ID) != 2:
-            return http.HttpResponseForbidden('立账方式只能是1(开票),2(不开票)')
-
-        # 判断进货单号是存在
-        PS_NO='PC' + ZL_NO[2::]
-        if int(ZHANG_ID) == 1:
-            row_ZL_NO = examine_ood('MF_PSS', 'PS_NO', PS_NO,'PS_ID','PC')
-            if row_ZL_NO > 0:
-                return http.HttpResponseForbidden('进货单号已存在')
-
-        # 判断开票单号是否存在
-        if int(ZHANG_ID) == 2:
-            row_ZL_NO = examine_ood('MF_LZ1', 'LZ_NO', ZL_NO,'LZ_ID','LP')
-            print(row_ZL_NO)
-            if row_ZL_NO > 0:
-                return http.HttpResponseForbidden('开票单号已存在')
-
-        #判断客户资料是否存在,不存在则创建
-        row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, '2',datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'))
-
-        # 判断用户是否存在,不存在则创建
-        row_usr = usr_data(USR,USR_NAME,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'))
-
-        with connection.cursor() as cursor:
-            #直接开发票
-            if int(ZHANG_ID) == 2:
-                sid = transaction.savepoint()  #开启事物
-            # 插入进货单表头-----------------------改CUR_ID  RMB
-                try:
-                    cursor.execute("""INSERT INTO MF_PSS(PS_ID,PS_NO,PS_DD,CUS_NO,ZHANG_ID,USR,CHK_MAN,CLS_DATE,SYS_DATE,AMT,EXC_RTO,LZ_CLS_ID,CLSLZ,TAX_ID)
-                    VALUES('PC',%s,%s,%s,3,%s,%s,%s,%s,%s,
-                    1,'F','F',1)""", ['PC'+ZL_NO[2::], datetime.datetime.strptime(LZ_DD,'%Y-%m-%d'),CUS_NO,USR,USR,datetime.datetime.strptime(LZ_DD,'%Y-%m-%d'),
-                    datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),AMT])
-                #插入进货单表身
-                    cursor.execute("""INSERT INTO TF_PSS(PS_ID,PS_NO,PS_DD,WH,PRD_NO,QTY,UP,AMT,AMTN_NET,TAX_RTO,ITM,UNIT,CSTN_SAL,PRE_ITM)
-                VALUES('PC',%s,%s,'0000','AQ001',1,%s,%s,%s,5,1,1,%s,1)""", ['PC'+ZL_NO[2::], datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),AMT,AMT,AMT,AMT])
-
-                #增加发票记录
-                    cursor.execute("""INSERT INTO INV_NO (BIL_NO,INV_NO,BIL_ID,INV_ID,CUS_NO,TITLE_BUY,TITLE_PAY,AMT,TAX_ID1,TAX_ID2,INV_TT,INV_DD,UNI_NO_PAY,SAL_ADR,SAL_TEL,SAL_KH_BANK,SAL_ID_CODE,REM)
-                    VALUES(%s,%s,'LP',21,%s,%s,%s,%s,1,1,1,%s,%s,%s,%s,%s,%s,%s)""",[ZL_NO, INV_NO, CUS_NO, CUS_NO_NAME, CUS_NO_NAME, AMT,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),
-                     UNI_NO_PAY,SAL_ADR,SAL_TEL,SAL_KH_BANK,SAL_ID_CODE,REM])
-
-                #插入立账单MF_MRP------------------改CUR_ID   RMB
-                    cursor.execute("""INSERT INTO MF_ARP(ARP_ID,OPN_ID,ARP_NO,BIL_NO,CUS_NO,PAY_DD,INV_NO,AMT,AMTN,AMTN_NET,EXC_RTO,CLOSE_ID,BIL_ID,SYS_DATE,BIL_DD)VALUES
-                    (2,2,%s,%s,%s,%s,%s,%s,%s,%s,1,'F','LP',%s,%s)""", [ 'AP'+ZL_NO[2::],ZL_NO,CUS_NO,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),INV_NO
-                    ,AMT,AMT,AMT,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')])
-
-                #插入进货开票表头--------------改CUR_ID    RMB
-                    cursor.execute("""INSERT INTO MF_LZ1(LZ_ID,LZ_NO,PAY_DD,LZ_DD,CUS_NO,INV_NO,EXC_RTO,USR,CHK_MAN,AMT,AMTN_NET,ARP_NO,CLS_DATE,TAX_ID,ZHANG_ID,
-                SYS_DATE,VOH_CHK,TURN_ID,INV_BIL_ID,INV_BIL_NO,FLG_VOH)VALUES
-                ('LP',%s,%s,%s,%s,%s,1,%s,%s,
-                %s,%s,%s,%s,'1',3,%s,1,1,'LP',%s,'F')""", [ZL_NO, datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')
-                ,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),CUS_NO,INV_NO,USR,USR,AMT,AMT,'AP'+ZL_NO[2::],datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')
-                ,ZL_NO])
-
-                #插入进货开票表身
-                    cursor.execute("""INSERT INTO TF_LZ1(LZ_ID,LZ_NO,ITM,PS_NO,AMT,AMTN_NET,PRD_NO,EST_ITM,PAY_DD,TAX_RTO,QTY,UP,BIL_ID,UNIT,PRD_NAME,CUS_NO,UP_ZG,PRE_ITM)VALUES
-                ('LP',%s,1,%s,%s,%s,'AQ001',1,%s,5,1,1,'PC',1,'服務費用',%s,1,1)""", [ZL_NO,'PC'+ZL_NO[2::],AMT,AMT,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),CUS_NO])
-
-                #开完发票回写进货单表身已开金额
-                    cursor.execute("""UPDATE TF_PSS SET AMT_FP=%s,AMTN_NET_FP=%s WHERE PS_NO=%s""", [AMT,AMT,'PC'+ZL_NO[2::]])
-                except Exception:
-                    transaction.savepoint_rollback(sid)   #语句执行错误,进行语句回滚
-                    return http.HttpResponseForbidden("增加开票作业sql语句执行错误")
-                transaction.savepoint_commit(sid)   #提交事物
-            # 不开发票直接产生进货单,并且立账
-            if int(ZHANG_ID) == 1:
-                sid = transaction.savepoint()  #开启事物
-                try:
-                    # 插入进货单表头-----------------------改CUR_ID  RMB
-                    cursor.execute("""INSERT INTO MF_PSS(PS_ID,PS_NO,PS_DD,CUS_NO,ZHANG_ID,USR,CHK_MAN,CLS_DATE,SYS_DATE,AMT,EXC_RTO,LZ_CLS_ID,CLSLZ,TAX_ID,ARP_NO)
-                        VALUES('PC',%s,%s,%s,1,%s,%s,%s,%s,%s,
-                        1,'F','F',1,%s)""",
-                                   ['PC' + ZL_NO[2::], datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), CUS_NO, USR, USR,
-                                    datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),
-                                    datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), AMT,'AP' + ZL_NO[2::]])
-                    # 插入进货单表身
-                    cursor.execute("""INSERT INTO TF_PSS(PS_ID,PS_NO,PS_DD,WH,PRD_NO,QTY,UP,AMT,AMTN_NET,TAX_RTO,ITM,UNIT,CSTN_SAL,PRE_ITM)
-                    VALUES('PC',%s,%s,'0000','AQ001',1,%s,%s,%s,5,1,1,%s,1)""",
-                                   ['PC' + ZL_NO[2::], datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), AMT, AMT, AMT, AMT])
-                    # 插入立账单MF_MRP------------------改CUR_ID   RMB
-                    cursor.execute("""INSERT INTO MF_ARP(ARP_ID,OPN_ID,ARP_NO,BIL_NO,CUS_NO,PAY_DD,INV_NO,AMT,AMTN,AMTN_NET,EXC_RTO,CLOSE_ID,BIL_ID,SYS_DATE,BIL_DD)VALUES
-                                    (2,2,%s,%s,%s,%s,%s,%s,%s,%s,1,'F','PC',%s,%s)""",
-                                   ['AP' + ZL_NO[2::], 'PC' + ZL_NO[2::], CUS_NO, datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), INV_NO
-                                       , AMT, AMT, AMT, datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),
-                                    datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')])
-                except Exception:
-                    transaction.savepoint_rollback(sid)   #语句执行错误,进行语句回滚
-                    return http.HttpResponseForbidden("新增进货单sql语句执行错误")
-                transaction.savepoint_commit(sid)   #提交事物
-        context = {
-            'a': 'POST提交'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def put(self, request):
-
-        # 获取传过来的参数
-        req_data = json.loads(request.body.decode())
-
-        ZL_NO = req_data.get("ZL_NO")  # 单据号码    1
-        LZ_DD = req_data.get("LZ_DD")  # 单据日期    1
-        INV_NO = req_data.get("INV_NO")  # 发票号码    1
-        INV_DD = req_data.get("INV_DD")  # 发票日期     1
-        ZHANG_ID = req_data.get("ZHANG_ID")  # 立账方式   1
-        # TAX_ID = req_data.get("TAX_ID")  # 扣税类别   1
-        AMT = req_data.get("AMT")  # 开票金额        1                  不需要
-        CUS_NO = req_data.get("CUS_NO")  # 开票客户编码    1
-        CUS_NO_NAME = req_data.get("CUS_NO_NAME")  # 开票客户名称     1
-        UNI_NO_PAY = req_data.get("UNI_NO_PAY")  # 纳税人识别码   1
-        SAL_ADR = req_data.get("SAL_ADR")  # 开票客户地址   1
-        SAL_TEL = req_data.get("SAL_TEL")  # 开票客户电话   1
-        SAL_KH_BANK = req_data.get("SAL_KH_BANK")  # 开户账号   1
-        USR = req_data.get("USR")  # 制单人编码   1
-        USR_NAME = req_data.get("USR_NAME")  # 制单人姓名   1
-        SAL_ID_CODE = req_data.get("SAL_ID_CODE")  # 开户银行账号   1
-        REM = req_data.get("REM")  # 发票备注   1
-        UP_DD = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')  # 修改时间
-
-        # {
-        #     "ZL_NO": "LP9A170002",
-        #     "LZ_DD": "2019-10-17",
-        #     "INV_NO": "000001111122222",
-        #     "INV_DD": "2019-10-17",
-        #     "ZHANG_ID": "3",
-        #     "TAX_ID": "1",
-        #     "AMT": 100,
-        #     "CUS_NO": "AQ123456",
-        #     "CUS_NO_NAME": "天心软件",
-        #     "UNI_NO_PAY": "443222222222222222",
-        #     "SAL_ADR": "广州天河华港上午大厦",
-        #     "SAL_TEL": "13444567876",
-        #     "SAL_KH_BANK": "01",
-        #     "USR": "A10000",
-        #     "USR_NAME": "楠楠",
-        #     "SAL_ID_CODE": "43112919941002",
-        #     "REM": "我的备注",
-        # }
-        # 判断立账方式是否有效
-        if int(ZHANG_ID) != 1 and int(ZHANG_ID) != 2:
-            return http.HttpResponseForbidden('立账方式只能是1(开票),2(不开票)')
-        # 判断进货单号是存在
-        if int(ZHANG_ID) == 1:
-            row_ZL_NO = examine_ood('MF_PSS', 'PS_NO', 'PC' + ZL_NO[2::],'PS_ID','PC')
-            if row_ZL_NO <= 0:
-                return http.HttpResponseForbidden('进货单号不存在')
-        # 判断开票单号是否存在
-        if int(ZHANG_ID) > 2:
-            row_ZL_NO = examine_ood('MF_LZ1', 'LZ_NO', ZL_NO,'LZ_ID','LP')
-            if row_ZL_NO <= 0:
-                return http.HttpResponseForbidden('开票单号不存在')
-        #判断厂商是否存在,不存在则自动创建
-        row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, '2',datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'))
-
-        # 判断用户是否存在,不存在则创建
-        row_usr = usr_data(USR, USR_NAME,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'))
-
-        with connection.cursor() as cursor:
-            #进货开票
-            if int(ZHANG_ID)==2:
-                sid = transaction.savepoint()  # 开启事物
-                try:
-                    # 修改进货单表头
-                    # PS_NO  单号  单号不能改用作条件
-                    # PS_DD  日期
-                    # CUS_NO 客户编码
-                    # ZHANG_ID  立账方式
-                    # USR  用户
-                    # CHK_MAN   审核人
-                    # AMT  金额
-                    cursor.execute("""UPDATE MF_PSS SET PS_DD=%s,CUS_NO=%s,ZHANG_ID=%s,AMT=%s,MODIFY_DD=%s,MODIFY_MAN=USR WHERE PS_NO=%s AND PS_ID='PC'""", [datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), CUS_NO,ZHANG_ID,AMT,UP_DD,'PC'+ZL_NO[2::]])
-
-                    # 修改进货单表身
-                    # PS_DD日期
-                    #UP  单价
-                    #AMT 金额
-                    # AMTN_NET  金额
-                    # CSTN_SAL  立账金额
-                    cursor.execute("""UPDATE TF_PSS SET PS_DD=%s,UP=%s,AMTN_NET=%s,CSTN_SAL=%s,AMT=%s,AMT_FP=%s,AMTN_NET_FP=%s WHERE PS_NO=%s AND PS_ID='PC'""", [datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), AMT,AMT,AMT,AMT,AMT, AMT,'PC'+ZL_NO[2::]])
-
-                    # 修改发票记录
-                    cursor.execute("""UPDATE INV_NO SET INV_NO=%s,CUS_NO=%s,TITLE_BUY=%s,TITLE_PAY=%s,AMT=%s,INV_DD=%s,UNI_NO_PAY=%s,SAL_ADR=%s,SAL_TEL=%s,SAL_KH_BANK=%s,SAL_ID_CODE=%s,REM=%s WHERE BIL_NO=%s AND BIL_ID='LP'""",
-                                   [INV_NO, CUS_NO,CUS_NO_NAME,CUS_NO_NAME,AMT,INV_DD,UNI_NO_PAY,SAL_ADR,SAL_TEL,SAL_KH_BANK,SAL_ID_CODE,REM,ZL_NO])
-                    # BIL_NO   开票单号  ZL_NO
-                    # INV_NO 开票号码       INV_NO
-                    #  CUS_NO 开票客户编码   CUS_NO
-                    # TITLE_BUY  客户名   CUS_NO_NAME
-                    # TITLE_PAY  客户名   CUS_NO_NAME
-                    # AMT    金额    AMT
-                    #INV_DD  日期  INV_DD
-                    #UNI_NO_PAY       UNI_NO_PAY
-                    # SAL_ADR      SAL_ADR
-                    #SAL_TEL       SAL_TEL
-                    # SAL_KH_BANK      SAL_KH_BANK
-                    # SAL_ID_CODE       SAL_ID_CODE
-                    #REM        REM
-
-                    # 修改立账单MF_MRP
-                    cursor.execute("""UPDATE MF_ARP SET CUS_NO=%s,PAY_DD=%s,INV_NO=%s,AMT=%s,AMTN=%s,AMTN_NET=%s,SYS_DATE=%s WHERE ARP_NO=%s AND BIL_ID='LP'""", [CUS_NO, datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),
-                      INV_NO,AMT,AMT,AMT,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),'AP' + ZL_NO[2::]])
-                    # ARP_NO  立账单号  'AP' + ZL_NO[2::]
-                    # CUS_NO   客户代号  CUS_NO
-                    # PAY_DD  立账日期   datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')
-                    #INV_NO   发票号码   INV_NO
-                    # AMT  金额   AMT
-                    # AMTN        AMT
-                    # AMTN_NET    AMT
-                    # SYS_DATE   录入日期  datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')
-
-                    # 插入进货开票表头
-                    cursor.execute("""UPDATE MF_LZ1 SET PAY_DD=%s,LZ_DD=%s,CUS_NO=%s,INV_NO=%s,AMT=%s,AMTN_NET=%s,MODIFY_DD=%s,MODIFY_MAN=USR WHERE LZ_NO=%s AND LZ_ID='LP'""",
-                                   [datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),CUS_NO,INV_NO,AMT,AMT,UP_DD,ZL_NO])
-                    # LZ_NO  单号  ZL_NO
-                    # PAY_DD 日期    datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')
-                    # LZ_DD  日期    datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')
-                    # CUS_NO  客户编码    CUS_NO
-                    # INV_NO  发票号码    INV_NO
-                    # AMT 金额  AMT
-                    # AMTN_NET    金额  AMT
-
-                    # 修改进货开票表身
-                    cursor.execute("""UPDATE TF_LZ1 SET AMT=%s,AMTN_NET=%s,CUS_NO=%s WHERE LZ_NO=%s AND LZ_ID='LP'""", [AMT, AMT,CUS_NO,ZL_NO])
-                    # LZ_NO  单号  ZL_NO
-                    # AMT    金额   AMT
-                    # AMTN_NET    金额  AMT
-                    # CUS_NO  客户  CUS_NO
-                    # 修改开完发票回写进货单表身已开金额
-                    cursor.execute("""UPDATE TF_PSS SET AMT_FP=%s,AMTN_NET_FP=%s WHERE PS_NO=%s AND PS_ID='PC'""",[AMT, AMT, 'PC' + ZL_NO[2::]])
-                except Exception:
-                    transaction.savepoint_rollback(sid)  # 语句执行错误,进行语句回滚
-                    return http.HttpResponseForbidden("修改进货开票sql语句执行错误")
-                transaction.savepoint_commit(sid)  # 提交事物
-            # 不开票
-            if int(ZHANG_ID)==1:
-                sid = transaction.savepoint()  # 开启事物
-                try:
-                    cursor.execute(
-                        """UPDATE MF_PSS SET PS_DD=%s,CUS_NO=%s,ZHANG_ID=%s,AMT=%s,MODIFY_DD=%s,MODIFY_MAN=USR WHERE PS_NO=%s AND PS_ID='PC'""",
-                        [datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), CUS_NO, ZHANG_ID, AMT, UP_DD, 'PC' + ZL_NO[2::]])
-                    # 修改进货单表身
-                    # PS_DD日期
-                    # UP  单价
-                    # AMT 金额
-                    # AMTN_NET  金额
-                    # CSTN_SAL  立账金额
-                    cursor.execute("""UPDATE TF_PSS SET PS_DD=%s,UP=%s,AMTN_NET=%s,CSTN_SAL=%s,AMT=%s WHERE PS_NO=%s AND PS_ID='PC'""",
-                                   [datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), AMT, AMT, AMT, AMT, 'PC' + ZL_NO[2::]])
-                    # 修改立账金额
-                    cursor.execute(
-                        """UPDATE MF_ARP SET CUS_NO=%s,PAY_DD=%s,AMT=%s,AMTN=%s,AMTN_NET=%s,SYS_DATE=%s WHERE ARP_NO=%s AND BIL_ID='PC'""",
-                        [CUS_NO, datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), AMT, AMT, AMT, datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), 'AP' + ZL_NO[2::]])
-                except Exception:
-                    transaction.savepoint_rollback(sid)  # 语句执行错误,进行语句回滚
-                    return http.HttpResponseForbidden("修改进货单sql语句执行错误")
-                transaction.savepoint_commit(sid)  # 提交事物
-        context = {
-            'a': 'PUT提交'
-        }
-        return http.JsonResponse(context)
-
-    @transaction.atomic
-    def delete(self, request):
-
-        # 获取传过来的参数
-        req_data = json.loads(request.body.decode())
-        ZL_NO = req_data.get("ZL_NO")  # 单据号码
-        ZHANG_ID = req_data.get("ZHANG_ID")  #立账方式
-
-        # 判断立账方式是否有效
-        if int(ZHANG_ID) != 1 and int(ZHANG_ID) != 2:
-            return http.HttpResponseForbidden('立账方式只能是1(开票),2(不开票)')
-        # 判断进货单号是存在
-        if int(ZHANG_ID) == 1:
-            row_ZL_NO = examine_ood('MF_PSS', 'PS_NO', 'PC' + ZL_NO[2::],'PS_ID','PC')
-            if row_ZL_NO <= 0:
-                return http.HttpResponseForbidden('进货单号不存在')
-        # 判断开票单号是否存在
-        if int(ZHANG_ID) == 2:
-            row_ZL_NO = examine_ood('MF_LZ1', 'LZ_NO', ZL_NO,'LZ_ID','LP')
-            if row_ZL_NO <= 0:
-                return http.HttpResponseForbidden('开票单号不存在')
-
-        with connection.cursor() as cursor:
-
-            if int(ZHANG_ID)==2:
-                sid = transaction.savepoint()  # 开启事物
-                try:
-                    # 判断是否产生后续单据
-                    sql = "SELECT COUNT(*) FROM %s WHERE %s='%s'" % ('TC_MON', 'ARP_NO', 'AP' + ZL_NO[2::])
-                    row_ZL_NO = cursor.execute(sql).fetchall()[0][0]
-                    if row_ZL_NO > 0:
-                        return http.HttpResponseForbidden('开票单或进货单已产生后续收付款单')
-                    # 删除进货来票作业表头
-                    cursor.execute("""DELETE FROM TF_LZ1 WHERE  LZ_NO=%s AND LZ_ID='LP'""", [ZL_NO])
-                    # 删除进货开票作业表身
-                    cursor.execute("""DELETE FROM MF_LZ1 WHERE  LZ_NO=%s AND LZ_ID='LP'""", [ZL_NO])
-                    #删除立账金额单据
-                    cursor.execute("""DELETE FROM MF_ARP WHERE BIL_NO=%s AND BIL_ID='LP'""", [ZL_NO])
-                    #删除发票单据
-                    cursor.execute("""DELETE FROM INV_NO  WHERE BIL_NO=%s AND BIL_ID='LP'""", [ZL_NO])
-                    # 删除进货单表身单据
-                    cursor.execute("""DELETE FROM MF_PSS WHERE PS_NO=%s AND PS_ID='PC'""", ['PC' + ZL_NO[2::]])
-                    # 删除进货单表头单据
-                    cursor.execute("""DELETE FROM TF_PSS WHERE PS_NO=%s AND PS_ID='PC'""", ['PC' + ZL_NO[2::]])
-                except Exception:
-                    transaction.savepoint_rollback(sid)  # 语句执行错误,进行语句回滚
-                    return http.HttpResponseForbidden("删除开票作业sql语句执行错误")
-                transaction.savepoint_commit(sid)  # 提交事物
-            if int(ZHANG_ID)==1:
-
-                sid = transaction.savepoint()  # 开启事物
-                try:
-                    # 判断是否产生后续单据
-                    sql = "SELECT COUNT(*) FROM %s WHERE %s='%s'" % ('TC_MON', 'ARP_NO', 'AP' + ZL_NO[2::])
-                    row_ZL_NO = cursor.execute(sql).fetchall()[0][0]
-                    if row_ZL_NO > 0:
-                        return http.HttpResponseForbidden('开票单或进货单已产生后续收付款单')
-                    cursor.execute("""DELETE FROM MF_PSS WHERE PS_NO=%s AND PS_ID='PC'""", ['PC' + ZL_NO[2::]])
-                    # 删除进货单表头单据
-                    cursor.execute("""DELETE FROM TF_PSS WHERE PS_NO=%s AND PS_ID='PC'""", ['PC' + ZL_NO[2::]])
-                    # 删除进货单表身单据
-                    cursor.execute("""DELETE FROM MF_ARP WHERE BIL_NO=%s AND BIL_ID='PC'""", ['PC' + ZL_NO[2::]])
-                except Exception:
-                    transaction.savepoint_rollback(sid)  # 语句执行错误,进行语句回滚
-                    return http.HttpResponseForbidden("删除进货单sql语句执行错误")
-                transaction.savepoint_commit(sid)  # 提交事物
-        context = {
-            'a': 'DELETE提交'
-        }
-        return http.JsonResponse(context)
-
-
+import json
+
+import re
+from django import http
+from django.shortcuts import render
+
+# Create your views here.
+from django.views import View
+from django.db import connection, transaction
+import datetime
+
+from utils.cust_data import customer_data
+from utils.examine_ood import examine_ood
+from utils.invoice_dh import invoice_dh
+from utils.usr_data import usr_data
+
+class InvoiceView(View):
+    def get(self,request):
+        CUS_NO='wwwdasdaqeq'
+        CUS_NO_NAME='sadasda'
+        LZ_DD='2019-10-15'
+        with connection.cursor() as cursor:
+            # 判断客户资料是否存在,不存在则创建
+            row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, '1', datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'))
+        context={
+            'a':123
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def post(self,request):
+        #1,获取参数
+        ZL_NO = request.POST.get("ZL_NO")   #单据号码    1         字符型
+        LZ_DD = request.POST.get("LZ_DD")   #单据日期    1         字符型
+        INV_NO = request.POST.get("INV_NO")   #发票号码    1       字符型
+        # INV_DD = request.POST.get("INV_DD")   #发票日期     1      字符型               不需要
+        ZHANG_ID = request.POST.get("ZHANG_ID")   #立账方式   1    字符型  2开票 1直接立账
+        # TAX_ID = request.POST.get("TAX_ID")   #扣税类别   1         字符型                    不需要
+        AMT = request.POST.get("AMT")   #开票金额        1          数字型
+        CUS_NO = request.POST.get("CUS_NO")   #开票客户编码    1    字符型
+        CUS_NO_NAME = request.POST.get("CUS_NO_NAME")   #开票客户名称     1       字符型
+        UNI_NO_PAY = request.POST.get("UNI_NO_PAY")   #纳税人识别码   1           字符型
+        SAL_ADR = request.POST.get("SAL_ADR")   #开票客户地址   1                 字符型
+        SAL_TEL = request.POST.get("SAL_TEL")   #开票客户电话   1                 字符型
+        SAL_KH_BANK = request.POST.get("SAL_KH_BANK")  # 开户账号   1            字符型
+        USR = request.POST.get("USR")   #制单人编码   1                           字符型
+        USR_NAME = request.POST.get("USR_NAME")   #制单人姓名   1                字符型
+        SAL_ID_CODE = request.POST.get("SAL_ID_CODE")   #开户银行账号   1       字符型
+        REM = request.POST.get("REM")   #发票备注   1                            字符型
+        # print(SAL_KH_BANK)
+        # print(SAL_ID_CODE)
+        # print(REM)
+        # print(ZL_NO)   #单据号码    1
+        # print(LZ_DD)   #单据日期    1
+        # print(INV_NO)   #发票号码    1
+        # print(INV_DD)    #发票日期     1
+        # print(ZHANG_ID)    #立账方式   1
+        # # print(TAX_ID)     #扣税类别   1
+        # print(AMT)       #开票金额        1
+        # print(CUS_NO)   #开票客户编码    1
+        # print(CUS_NO_NAME)      #开票客户名称     1
+        # print(UNI_NO_PAY)      #纳税人识别码   1
+        # print(SAL_ADR)     #开票客户地址   1
+        # print(SAL_TEL)       #开票客户电话   1
+        # print(USR)      #制单人编码   1
+        # print(USR_NAME)     #制单人姓名   1
+        # 判断单号的合法性
+        print(ZL_NO[:3])
+        print(len(ZL_NO))
+        if ZL_NO[:3] != 'LPF' or len(ZL_NO) != 10:
+            return http.HttpResponseForbidden('开票单号输入不合法,单号必须是LPF开头且长度必须是10位')
+        # 校验日期格式
+        try:
+            datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')
+        except Exception:
+            return http.HttpResponseForbidden('日期格式输入不正确')
+        if ZL_NO is None:
+            return http.HttpResponseForbidden('请输入开票单号')
+            # 判断金额输入是否正确
+        if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(AMT)) is None:
+            return http.HttpResponseForbidden('金额输入不正确')
+        if ZHANG_ID is None:
+            return http.HttpResponseForbidden('请输入开票方式')
+        # 判断立账方式是否有效
+        if int(ZHANG_ID) != 1 and int(ZHANG_ID) != 2:
+            return http.HttpResponseForbidden('立账方式只能是1(开票),2(不开票)')
+
+        # 判断进货单号是存在
+        PS_NO='PC' + ZL_NO[2::]
+        if int(ZHANG_ID) == 1:
+            row_ZL_NO = examine_ood('MF_PSS', 'PS_NO', PS_NO,'PS_ID','PC')
+            if row_ZL_NO > 0:
+                return http.HttpResponseForbidden('进货单号已存在')
+
+        # 判断开票单号是否存在
+        if int(ZHANG_ID) == 2:
+            row_ZL_NO = examine_ood('MF_LZ1', 'LZ_NO', ZL_NO,'LZ_ID','LP')
+            print(row_ZL_NO)
+            if row_ZL_NO > 0:
+                return http.HttpResponseForbidden('开票单号已存在')
+
+        #判断客户资料是否存在,不存在则创建
+        row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, '2',datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'))
+
+        # 判断用户是否存在,不存在则创建
+        row_usr = usr_data(USR,USR_NAME,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'))
+
+        with connection.cursor() as cursor:
+            #直接开发票
+            if int(ZHANG_ID) == 2:
+                sid = transaction.savepoint()  #开启事物
+            # 插入进货单表头-----------------------改CUR_ID  RMB
+                try:
+                    cursor.execute("""INSERT INTO MF_PSS(PS_ID,PS_NO,PS_DD,CUS_NO,ZHANG_ID,USR,CHK_MAN,CLS_DATE,SYS_DATE,AMT,EXC_RTO,LZ_CLS_ID,CLSLZ,TAX_ID)
+                    VALUES('PC',%s,%s,%s,3,%s,%s,%s,%s,%s,
+                    1,'F','F',1)""", ['PC'+ZL_NO[2::], datetime.datetime.strptime(LZ_DD,'%Y-%m-%d'),CUS_NO,USR,USR,datetime.datetime.strptime(LZ_DD,'%Y-%m-%d'),
+                    datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),AMT])
+                #插入进货单表身
+                    cursor.execute("""INSERT INTO TF_PSS(PS_ID,PS_NO,PS_DD,WH,PRD_NO,QTY,UP,AMT,AMTN_NET,TAX_RTO,ITM,UNIT,CSTN_SAL,PRE_ITM)
+                VALUES('PC',%s,%s,'0000','AQ001',1,%s,%s,%s,5,1,1,%s,1)""", ['PC'+ZL_NO[2::], datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),AMT,AMT,AMT,AMT])
+
+                #增加发票记录
+                    cursor.execute("""INSERT INTO INV_NO (BIL_NO,INV_NO,BIL_ID,INV_ID,CUS_NO,TITLE_BUY,TITLE_PAY,AMT,TAX_ID1,TAX_ID2,INV_TT,INV_DD,UNI_NO_PAY,SAL_ADR,SAL_TEL,SAL_KH_BANK,SAL_ID_CODE,REM)
+                    VALUES(%s,%s,'LP',21,%s,%s,%s,%s,1,1,1,%s,%s,%s,%s,%s,%s,%s)""",[ZL_NO, INV_NO, CUS_NO, CUS_NO_NAME, CUS_NO_NAME, AMT,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),
+                     UNI_NO_PAY,SAL_ADR,SAL_TEL,SAL_KH_BANK,SAL_ID_CODE,REM])
+
+                #插入立账单MF_MRP------------------改CUR_ID   RMB
+                    cursor.execute("""INSERT INTO MF_ARP(ARP_ID,OPN_ID,ARP_NO,BIL_NO,CUS_NO,PAY_DD,INV_NO,AMT,AMTN,AMTN_NET,EXC_RTO,CLOSE_ID,BIL_ID,SYS_DATE,BIL_DD)VALUES
+                    (2,2,%s,%s,%s,%s,%s,%s,%s,%s,1,'F','LP',%s,%s)""", [ 'AP'+ZL_NO[2::],ZL_NO,CUS_NO,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),INV_NO
+                    ,AMT,AMT,AMT,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')])
+
+                #插入进货开票表头--------------改CUR_ID    RMB
+                    cursor.execute("""INSERT INTO MF_LZ1(LZ_ID,LZ_NO,PAY_DD,LZ_DD,CUS_NO,INV_NO,EXC_RTO,USR,CHK_MAN,AMT,AMTN_NET,ARP_NO,CLS_DATE,TAX_ID,ZHANG_ID,
+                SYS_DATE,VOH_CHK,TURN_ID,INV_BIL_ID,INV_BIL_NO,FLG_VOH)VALUES
+                ('LP',%s,%s,%s,%s,%s,1,%s,%s,
+                %s,%s,%s,%s,'1',3,%s,1,1,'LP',%s,'F')""", [ZL_NO, datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')
+                ,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),CUS_NO,INV_NO,USR,USR,AMT,AMT,'AP'+ZL_NO[2::],datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')
+                ,ZL_NO])
+
+                #插入进货开票表身
+                    cursor.execute("""INSERT INTO TF_LZ1(LZ_ID,LZ_NO,ITM,PS_NO,AMT,AMTN_NET,PRD_NO,EST_ITM,PAY_DD,TAX_RTO,QTY,UP,BIL_ID,UNIT,PRD_NAME,CUS_NO,UP_ZG,PRE_ITM)VALUES
+                ('LP',%s,1,%s,%s,%s,'AQ001',1,%s,5,1,1,'PC',1,'服務費用',%s,1,1)""", [ZL_NO,'PC'+ZL_NO[2::],AMT,AMT,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),CUS_NO])
+
+                #开完发票回写进货单表身已开金额
+                    cursor.execute("""UPDATE TF_PSS SET AMT_FP=%s,AMTN_NET_FP=%s WHERE PS_NO=%s""", [AMT,AMT,'PC'+ZL_NO[2::]])
+                except Exception:
+                    transaction.savepoint_rollback(sid)   #语句执行错误,进行语句回滚
+                    return http.HttpResponseForbidden("增加开票作业sql语句执行错误")
+                transaction.savepoint_commit(sid)   #提交事物
+            # 不开发票直接产生进货单,并且立账
+            if int(ZHANG_ID) == 1:
+                sid = transaction.savepoint()  #开启事物
+                try:
+                    # 插入进货单表头-----------------------改CUR_ID  RMB
+                    cursor.execute("""INSERT INTO MF_PSS(PS_ID,PS_NO,PS_DD,CUS_NO,ZHANG_ID,USR,CHK_MAN,CLS_DATE,SYS_DATE,AMT,EXC_RTO,LZ_CLS_ID,CLSLZ,TAX_ID,ARP_NO)
+                        VALUES('PC',%s,%s,%s,1,%s,%s,%s,%s,%s,
+                        1,'F','F',1,%s)""",
+                                   ['PC' + ZL_NO[2::], datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), CUS_NO, USR, USR,
+                                    datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),
+                                    datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), AMT,'AP' + ZL_NO[2::]])
+                    # 插入进货单表身
+                    cursor.execute("""INSERT INTO TF_PSS(PS_ID,PS_NO,PS_DD,WH,PRD_NO,QTY,UP,AMT,AMTN_NET,TAX_RTO,ITM,UNIT,CSTN_SAL,PRE_ITM)
+                    VALUES('PC',%s,%s,'0000','AQ001',1,%s,%s,%s,5,1,1,%s,1)""",
+                                   ['PC' + ZL_NO[2::], datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), AMT, AMT, AMT, AMT])
+                    # 插入立账单MF_MRP------------------改CUR_ID   RMB
+                    cursor.execute("""INSERT INTO MF_ARP(ARP_ID,OPN_ID,ARP_NO,BIL_NO,CUS_NO,PAY_DD,INV_NO,AMT,AMTN,AMTN_NET,EXC_RTO,CLOSE_ID,BIL_ID,SYS_DATE,BIL_DD)VALUES
+                                    (2,2,%s,%s,%s,%s,%s,%s,%s,%s,1,'F','PC',%s,%s)""",
+                                   ['AP' + ZL_NO[2::], 'PC' + ZL_NO[2::], CUS_NO, datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), INV_NO
+                                       , AMT, AMT, AMT, datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),
+                                    datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')])
+                except Exception:
+                    transaction.savepoint_rollback(sid)   #语句执行错误,进行语句回滚
+                    return http.HttpResponseForbidden("新增进货单sql语句执行错误")
+                transaction.savepoint_commit(sid)   #提交事物
+        context = {
+            'a': 'POST提交'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def put(self, request):
+
+        # 获取传过来的参数
+        req_data = json.loads(request.body.decode())
+
+        ZL_NO = req_data.get("ZL_NO")  # 单据号码    1
+        LZ_DD = req_data.get("LZ_DD")  # 单据日期    1
+        INV_NO = req_data.get("INV_NO")  # 发票号码    1
+        INV_DD = req_data.get("INV_DD")  # 发票日期     1
+        ZHANG_ID = req_data.get("ZHANG_ID")  # 立账方式   1
+        # TAX_ID = req_data.get("TAX_ID")  # 扣税类别   1
+        AMT = req_data.get("AMT")  # 开票金额        1                  不需要
+        CUS_NO = req_data.get("CUS_NO")  # 开票客户编码    1
+        CUS_NO_NAME = req_data.get("CUS_NO_NAME")  # 开票客户名称     1
+        UNI_NO_PAY = req_data.get("UNI_NO_PAY")  # 纳税人识别码   1
+        SAL_ADR = req_data.get("SAL_ADR")  # 开票客户地址   1
+        SAL_TEL = req_data.get("SAL_TEL")  # 开票客户电话   1
+        SAL_KH_BANK = req_data.get("SAL_KH_BANK")  # 开户账号   1
+        USR = req_data.get("USR")  # 制单人编码   1
+        USR_NAME = req_data.get("USR_NAME")  # 制单人姓名   1
+        SAL_ID_CODE = req_data.get("SAL_ID_CODE")  # 开户银行账号   1
+        REM = req_data.get("REM")  # 发票备注   1
+        UP_DD = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')  # 修改时间
+
+        # {
+        #     "ZL_NO": "LP9A170002",
+        #     "LZ_DD": "2019-10-17",
+        #     "INV_NO": "000001111122222",
+        #     "INV_DD": "2019-10-17",
+        #     "ZHANG_ID": "3",
+        #     "TAX_ID": "1",
+        #     "AMT": 100,
+        #     "CUS_NO": "AQ123456",
+        #     "CUS_NO_NAME": "天心软件",
+        #     "UNI_NO_PAY": "443222222222222222",
+        #     "SAL_ADR": "广州天河华港上午大厦",
+        #     "SAL_TEL": "13444567876",
+        #     "SAL_KH_BANK": "01",
+        #     "USR": "A10000",
+        #     "USR_NAME": "楠楠",
+        #     "SAL_ID_CODE": "43112919941002",
+        #     "REM": "我的备注",
+        # }
+        # 判断单号的合法性
+        if ZL_NO[:3] != 'LPF' or len(ZL_NO) != 10:
+            return http.HttpResponseForbidden('开票单号输入不合法,单号必须是LPF开头且长度必须是10位')
+        # 校验日期格式
+        try:
+            datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')
+        except Exception:
+            return http.HttpResponseForbidden('日期格式输入不正确')
+        if ZL_NO is None:
+            return http.HttpResponseForbidden('请输入开票单号')
+            # 判断金额输入是否正确
+        if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(str(AMT)) is None:
+            return http.HttpResponseForbidden('金额输入不正确')
+        if ZHANG_ID is None:
+            return http.HttpResponseForbidden('请输入开票方式')
+        # 判断立账方式是否有效
+        if int(ZHANG_ID) != 1 and int(ZHANG_ID) != 2:
+            return http.HttpResponseForbidden('立账方式只能是1(开票),2(不开票)')
+        # 判断进货单号是存在
+        if int(ZHANG_ID) == 1:
+            row_ZL_NO = examine_ood('MF_PSS', 'PS_NO', 'PC' + ZL_NO[2::],'PS_ID','PC')
+            if row_ZL_NO <= 0:
+                return http.HttpResponseForbidden('进货单号不存在')
+        # 判断开票单号是否存在
+        if int(ZHANG_ID) > 2:
+            row_ZL_NO = examine_ood('MF_LZ1', 'LZ_NO', ZL_NO,'LZ_ID','LP')
+            if row_ZL_NO <= 0:
+                return http.HttpResponseForbidden('开票单号不存在')
+        #判断厂商是否存在,不存在则自动创建
+        row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, '2',datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'))
+
+        # 判断用户是否存在,不存在则创建
+        row_usr = usr_data(USR, USR_NAME,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'))
+
+        with connection.cursor() as cursor:
+            #进货开票
+            if int(ZHANG_ID)==2:
+                sid = transaction.savepoint()  # 开启事物
+                try:
+                    # 修改进货单表头
+                    # PS_NO  单号  单号不能改用作条件
+                    # PS_DD  日期
+                    # CUS_NO 客户编码
+                    # ZHANG_ID  立账方式
+                    # USR  用户
+                    # CHK_MAN   审核人
+                    # AMT  金额
+                    cursor.execute("""UPDATE MF_PSS SET PS_DD=%s,CUS_NO=%s,ZHANG_ID=%s,AMT=%s,MODIFY_DD=%s,MODIFY_MAN=USR WHERE PS_NO=%s AND PS_ID='PC'""", [datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), CUS_NO,ZHANG_ID,AMT,UP_DD,'PC'+ZL_NO[2::]])
+
+                    # 修改进货单表身
+                    # PS_DD日期
+                    #UP  单价
+                    #AMT 金额
+                    # AMTN_NET  金额
+                    # CSTN_SAL  立账金额
+                    cursor.execute("""UPDATE TF_PSS SET PS_DD=%s,UP=%s,AMTN_NET=%s,CSTN_SAL=%s,AMT=%s,AMT_FP=%s,AMTN_NET_FP=%s WHERE PS_NO=%s AND PS_ID='PC'""", [datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), AMT,AMT,AMT,AMT,AMT, AMT,'PC'+ZL_NO[2::]])
+
+                    # 修改发票记录
+                    cursor.execute("""UPDATE INV_NO SET INV_NO=%s,CUS_NO=%s,TITLE_BUY=%s,TITLE_PAY=%s,AMT=%s,INV_DD=%s,UNI_NO_PAY=%s,SAL_ADR=%s,SAL_TEL=%s,SAL_KH_BANK=%s,SAL_ID_CODE=%s,REM=%s WHERE BIL_NO=%s AND BIL_ID='LP'""",
+                                   [INV_NO, CUS_NO,CUS_NO_NAME,CUS_NO_NAME,AMT,INV_DD,UNI_NO_PAY,SAL_ADR,SAL_TEL,SAL_KH_BANK,SAL_ID_CODE,REM,ZL_NO])
+                    # BIL_NO   开票单号  ZL_NO
+                    # INV_NO 开票号码       INV_NO
+                    #  CUS_NO 开票客户编码   CUS_NO
+                    # TITLE_BUY  客户名   CUS_NO_NAME
+                    # TITLE_PAY  客户名   CUS_NO_NAME
+                    # AMT    金额    AMT
+                    #INV_DD  日期  INV_DD
+                    #UNI_NO_PAY       UNI_NO_PAY
+                    # SAL_ADR      SAL_ADR
+                    #SAL_TEL       SAL_TEL
+                    # SAL_KH_BANK      SAL_KH_BANK
+                    # SAL_ID_CODE       SAL_ID_CODE
+                    #REM        REM
+
+                    # 修改立账单MF_MRP
+                    cursor.execute("""UPDATE MF_ARP SET CUS_NO=%s,PAY_DD=%s,INV_NO=%s,AMT=%s,AMTN=%s,AMTN_NET=%s,SYS_DATE=%s WHERE ARP_NO=%s AND BIL_ID='LP'""", [CUS_NO, datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),
+                      INV_NO,AMT,AMT,AMT,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),'AP' + ZL_NO[2::]])
+                    # ARP_NO  立账单号  'AP' + ZL_NO[2::]
+                    # CUS_NO   客户代号  CUS_NO
+                    # PAY_DD  立账日期   datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')
+                    #INV_NO   发票号码   INV_NO
+                    # AMT  金额   AMT
+                    # AMTN        AMT
+                    # AMTN_NET    AMT
+                    # SYS_DATE   录入日期  datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')
+
+                    # 插入进货开票表头
+                    cursor.execute("""UPDATE MF_LZ1 SET PAY_DD=%s,LZ_DD=%s,CUS_NO=%s,INV_NO=%s,AMT=%s,AMTN_NET=%s,MODIFY_DD=%s,MODIFY_MAN=USR WHERE LZ_NO=%s AND LZ_ID='LP'""",
+                                   [datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),CUS_NO,INV_NO,AMT,AMT,UP_DD,ZL_NO])
+                    # LZ_NO  单号  ZL_NO
+                    # PAY_DD 日期    datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')
+                    # LZ_DD  日期    datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')
+                    # CUS_NO  客户编码    CUS_NO
+                    # INV_NO  发票号码    INV_NO
+                    # AMT 金额  AMT
+                    # AMTN_NET    金额  AMT
+
+                    # 修改进货开票表身
+                    cursor.execute("""UPDATE TF_LZ1 SET AMT=%s,AMTN_NET=%s,CUS_NO=%s WHERE LZ_NO=%s AND LZ_ID='LP'""", [AMT, AMT,CUS_NO,ZL_NO])
+                    # LZ_NO  单号  ZL_NO
+                    # AMT    金额   AMT
+                    # AMTN_NET    金额  AMT
+                    # CUS_NO  客户  CUS_NO
+                    # 修改开完发票回写进货单表身已开金额
+                    cursor.execute("""UPDATE TF_PSS SET AMT_FP=%s,AMTN_NET_FP=%s WHERE PS_NO=%s AND PS_ID='PC'""",[AMT, AMT, 'PC' + ZL_NO[2::]])
+                except Exception:
+                    transaction.savepoint_rollback(sid)  # 语句执行错误,进行语句回滚
+                    return http.HttpResponseForbidden("修改进货开票sql语句执行错误")
+                transaction.savepoint_commit(sid)  # 提交事物
+            # 不开票
+            if int(ZHANG_ID)==1:
+                sid = transaction.savepoint()  # 开启事物
+                try:
+                    cursor.execute(
+                        """UPDATE MF_PSS SET PS_DD=%s,CUS_NO=%s,ZHANG_ID=%s,AMT=%s,MODIFY_DD=%s,MODIFY_MAN=USR WHERE PS_NO=%s AND PS_ID='PC'""",
+                        [datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), CUS_NO, ZHANG_ID, AMT, UP_DD, 'PC' + ZL_NO[2::]])
+                    # 修改进货单表身
+                    # PS_DD日期
+                    # UP  单价
+                    # AMT 金额
+                    # AMTN_NET  金额
+                    # CSTN_SAL  立账金额
+                    cursor.execute("""UPDATE TF_PSS SET PS_DD=%s,UP=%s,AMTN_NET=%s,CSTN_SAL=%s,AMT=%s WHERE PS_NO=%s AND PS_ID='PC'""",
+                                   [datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), AMT, AMT, AMT, AMT, 'PC' + ZL_NO[2::]])
+                    # 修改立账金额
+                    cursor.execute(
+                        """UPDATE MF_ARP SET CUS_NO=%s,PAY_DD=%s,AMT=%s,AMTN=%s,AMTN_NET=%s,SYS_DATE=%s WHERE ARP_NO=%s AND BIL_ID='PC'""",
+                        [CUS_NO, datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), AMT, AMT, AMT, datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), 'AP' + ZL_NO[2::]])
+                except Exception:
+                    transaction.savepoint_rollback(sid)  # 语句执行错误,进行语句回滚
+                    return http.HttpResponseForbidden("修改进货单sql语句执行错误")
+                transaction.savepoint_commit(sid)  # 提交事物
+        context = {
+            'a': 'PUT提交'
+        }
+        return http.JsonResponse(context)
+
+    @transaction.atomic
+    def delete(self, request):
+
+        # 获取传过来的参数
+        req_data = json.loads(request.body.decode())
+        ZL_NO = req_data.get("ZL_NO")  # 单据号码
+        ZHANG_ID = req_data.get("ZHANG_ID")  #立账方式
+
+        # {
+        #     "ZL_NO": "LPF9A170002",
+        #     "ZHANG_ID": "2"
+        # }
+
+        # 判断立账方式是否有效
+        if ZL_NO is None:
+            return http.HttpResponseForbidden('请传入开票单号')
+        if ZHANG_ID is None:
+            return http.HttpResponseForbidden('请传入开票类型')
+        if int(ZHANG_ID) != 1 and int(ZHANG_ID) != 2:
+            return http.HttpResponseForbidden('立账方式只能是1(开票),2(不开票)')
+        # 判断是否产生付款单
+        row_TC_MON = examine_ood('TC_MON', 'RP_NO', 'AP' + ZL_NO[2::], 'RP_ID', '2')
+        if row_TC_MON > 0:
+            return http.HttpResponseForbidden('已经产生付款单不允许修改')
+        # 判断进货单号是存在
+        if int(ZHANG_ID) == 1:
+            row_ZL_NO = examine_ood('MF_PSS', 'PS_NO', 'PC' + ZL_NO[2::],'PS_ID','PC')
+            if row_ZL_NO <= 0:
+                return http.HttpResponseForbidden('进货单号不存在')
+        # 判断开票单号是否存在
+        if int(ZHANG_ID) == 2:
+            row_ZL_NO = examine_ood('MF_LZ1', 'LZ_NO', ZL_NO,'LZ_ID','LP')
+            if row_ZL_NO <= 0:
+                return http.HttpResponseForbidden('开票单号不存在')
+
+        with connection.cursor() as cursor:
+
+            if int(ZHANG_ID)==2:
+                sid = transaction.savepoint()  # 开启事物
+                try:
+                    # 判断是否产生后续单据
+                    sql = "SELECT COUNT(*) FROM %s WHERE %s='%s'" % ('TC_MON', 'ARP_NO', 'AP' + ZL_NO[2::])
+                    row_ZL_NO = cursor.execute(sql).fetchall()[0][0]
+                    if row_ZL_NO > 0:
+                        return http.HttpResponseForbidden('开票单或进货单已产生后续收付款单')
+                    # 删除进货来票作业表头
+                    cursor.execute("""DELETE FROM TF_LZ1 WHERE  LZ_NO=%s AND LZ_ID='LP'""", [ZL_NO])
+                    # 删除进货开票作业表身
+                    cursor.execute("""DELETE FROM MF_LZ1 WHERE  LZ_NO=%s AND LZ_ID='LP'""", [ZL_NO])
+                    #删除立账金额单据
+                    cursor.execute("""DELETE FROM MF_ARP WHERE BIL_NO=%s AND BIL_ID='LP'""", [ZL_NO])
+                    #删除发票单据
+                    cursor.execute("""DELETE FROM INV_NO  WHERE BIL_NO=%s AND BIL_ID='LP'""", [ZL_NO])
+                    # 删除进货单表身单据
+                    cursor.execute("""DELETE FROM MF_PSS WHERE PS_NO=%s AND PS_ID='PC'""", ['PC' + ZL_NO[2::]])
+                    # 删除进货单表头单据
+                    cursor.execute("""DELETE FROM TF_PSS WHERE PS_NO=%s AND PS_ID='PC'""", ['PC' + ZL_NO[2::]])
+                except Exception:
+                    transaction.savepoint_rollback(sid)  # 语句执行错误,进行语句回滚
+                    return http.HttpResponseForbidden("删除开票作业sql语句执行错误")
+                transaction.savepoint_commit(sid)  # 提交事物
+            if int(ZHANG_ID)==1:
+
+                sid = transaction.savepoint()  # 开启事物
+                try:
+                    # 判断是否产生后续单据
+                    sql = "SELECT COUNT(*) FROM %s WHERE %s='%s'" % ('TC_MON', 'ARP_NO', 'AP' + ZL_NO[2::])
+                    row_ZL_NO = cursor.execute(sql).fetchall()[0][0]
+                    if row_ZL_NO > 0:
+                        return http.HttpResponseForbidden('开票单或进货单已产生后续收付款单')
+                    cursor.execute("""DELETE FROM MF_PSS WHERE PS_NO=%s AND PS_ID='PC'""", ['PC' + ZL_NO[2::]])
+                    # 删除进货单表头单据
+                    cursor.execute("""DELETE FROM TF_PSS WHERE PS_NO=%s AND PS_ID='PC'""", ['PC' + ZL_NO[2::]])
+                    # 删除进货单表身单据
+                    cursor.execute("""DELETE FROM MF_ARP WHERE BIL_NO=%s AND BIL_ID='PC'""", ['PC' + ZL_NO[2::]])
+                except Exception:
+                    transaction.savepoint_rollback(sid)  # 语句执行错误,进行语句回滚
+                    return http.HttpResponseForbidden("删除进货单sql语句执行错误")
+                transaction.savepoint_commit(sid)  # 提交事物
+        context = {
+            'a': 'DELETE提交'
+        }
+        return http.JsonResponse(context)
+
+

+ 1 - 4
awj/awj/apps/stockinvoice/xixi.py

@@ -1,4 +1 @@
-
-a=1
-if int(1)!=2:
-    print(3)
+

二進制
awj/awj/setting/__pycache__/__init__.cpython-36.pyc


二進制
awj/awj/setting/__pycache__/dev.cpython-36.pyc


+ 204 - 204
awj/awj/setting/dev.py

@@ -1,204 +1,204 @@
-"""
-Django settings for awj project.
-
-Generated by 'django-admin startproject' using Django 1.11.11.
-
-For more information on this file, see
-https://docs.djangoproject.com/en/1.11/topics/settings/
-
-For the full list of settings and their values, see
-https://docs.djangoproject.com/en/1.11/ref/settings/
-"""
-
-import os
-
-# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
-BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-
-
-# Quick-start development settings - unsuitable for production
-# See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/
-
-# SECURITY WARNING: keep the secret key used in production secret!
-SECRET_KEY = '=&u2a!cp6*4i=$140mw^m_+2%ko82r+o*camh&=12mg2s+m%y0'
-
-# SECURITY WARNING: don't run with debug turned on in production!
-DEBUG = True
-
-ALLOWED_HOSTS = []
-
-
-# Application definition
-import sys
-#告诉系统apps作为了子应用的新的导包路径
-sys.path.insert(1,os.path.join(BASE_DIR,'apps'))
-INSTALLED_APPS = [
-    'django.contrib.admin',
-    'django.contrib.auth',
-    'django.contrib.contenttypes',
-    'django.contrib.sessions',
-    'django.contrib.messages',
-    'django.contrib.staticfiles',
-    'stockinvoice.apps.StockinvoiceConfig', #开票作业
-    'PaymentOperation.apps.PaymentoperationConfig',  #付款作业
-    'salesinvoice.apps.SalesinvoiceConfig'  #付款作业
-]
-
-MIDDLEWARE = [
-    'django.middleware.security.SecurityMiddleware',
-    'django.contrib.sessions.middleware.SessionMiddleware',
-    'django.middleware.common.CommonMiddleware',
-    # 'django.middleware.csrf.CsrfViewMiddleware',
-    'django.contrib.auth.middleware.AuthenticationMiddleware',
-    'django.contrib.messages.middleware.MessageMiddleware',
-    'django.middleware.clickjacking.XFrameOptionsMiddleware',
-    'utils.middleware.middleware',#用户验证中间件
-]
-
-ROOT_URLCONF = 'awj.urls'
-
-TEMPLATES = [
-    {
-        'BACKEND': 'django.template.backends.django.DjangoTemplates',
-        'DIRS': [],
-        'APP_DIRS': True,
-        'OPTIONS': {
-            'context_processors': [
-                'django.template.context_processors.debug',
-                'django.template.context_processors.request',
-                'django.contrib.auth.context_processors.auth',
-                'django.contrib.messages.context_processors.messages',
-            ],
-        },
-    },
-]
-
-WSGI_APPLICATION = 'awj.wsgi.application'
-
-
-# Database
-# https://docs.djangoproject.com/en/1.11/ref/settings/#databases
-
-# DATABASES = {
-#     'default': {
-#         'ENGINE': 'django.db.backends.sqlite3',
-#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
-#     }
-# }
-# 配置连接数据库
-
-DATABASES = {
-    # 'default': {
-    #     'ENGINE': 'django.db.backends.sqlite3',
-    #     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
-    # }
-    'default': {
-        'NAME': 'DB_2019',
-        'ENGINE': 'sql_server.pyodbc',
-        'HOST': '127.0.0.1',
-        'USER': 'sa',
-        'PASSWORD': '123456',
-        'PORT': '1433',  # Set to empty string for default. Not used with sqlite3.
-        'OPTIONS': {
-            'host_is_server': True,
-            'dsn': 'rencuiliang',##需要在电脑上使用odbc创建数据源odbc_jlad
-        },
-    }
-}
-
-# DATABASES = {
-#     'default': {
-#         'ENGINE': 'sql_server.pyodbc',
-#         'HOST': '127.0.0.1',
-#         'PORT': '',
-#         'NAME': 'DB_2019',
-#         'USER': 'sa',
-#         'PASSWORD': '123456',
-#         'OPTIONS': {
-#             'driver': 'SQL Sserver Native Client 10.0',
-#             'MARS_Connection': True,
-#         }
-#     }
-# }
-
-DATABASE_CONNECTION_POOLING = False
-
-# Password validation
-# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators
-
-AUTH_PASSWORD_VALIDATORS = [
-    {
-        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
-    },
-    {
-        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
-    },
-    {
-        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
-    },
-    {
-        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
-    },
-]
-
-
-# Internationalization
-# https://docs.djangoproject.com/en/1.11/topics/i18n/
-
-LANGUAGE_CODE = 'en-us'
-
-TIME_ZONE = 'UTC'
-
-USE_I18N = True
-
-USE_L10N = True
-
-USE_TZ = True
-
-
-# Static files (CSS, JavaScript, Images)
-# https://docs.djangoproject.com/en/1.11/howto/static-files/
-
-STATIC_URL = '/static/'
-
-#配置访问日志
-LOGGING = {
-    'version': 1,
-    'disable_existing_loggers': False,  # 是否禁用已经存在的日志器
-    'formatters': {  # 日志信息显示的格式
-        'verbose': {
-            'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'
-        },
-        'simple': {
-            'format': '%(levelname)s %(module)s %(lineno)d %(message)s'
-        },
-    },
-    'filters': {  # 对日志进行过滤
-        'require_debug_true': {  # django在debug模式下才输出日志
-            '()': 'django.utils.log.RequireDebugTrue',
-        },
-    },
-    'handlers': {  # 日志处理方法
-        'console': {  # 向终端中输出日志
-            'level': 'INFO',
-            'filters': ['require_debug_true'],
-            'class': 'logging.StreamHandler',
-            'formatter': 'simple'
-        },
-        'file': {  # 向文件中输出日志
-            'level': 'INFO',
-            'class': 'logging.handlers.RotatingFileHandler',
-            'filename': os.path.join(os.path.dirname(BASE_DIR), 'logs/hwj.log'),  # 日志文件的位置
-            'maxBytes': 100 * 1024 * 1024,#输出日志大小,以字节为单位,也就是一个文件只能存放这个打数据的,超过会新增
-            'backupCount': 10,#最多超过生成10个文件
-            'formatter': 'verbose'
-        },
-    },
-    'loggers': {  # 日志器
-        'django': {  # 定义了一个名为django的日志器
-            'handlers': ['console', 'file'],  # 可以同时向终端与文件中输出日志
-            'propagate': True,  # 是否继续传递日志信息
-            'level': 'INFO',  # 日志器接收的最低日志级别,INFO < debug < warn < error
-        },
-    }
-}
+"""
+Django settings for awj project.
+
+Generated by 'django-admin startproject' using Django 1.11.11.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/1.11/topics/settings/
+
+For the full list of settings and their values, see
+https://docs.djangoproject.com/en/1.11/ref/settings/
+"""
+
+import os
+
+# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
+BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+
+
+# Quick-start development settings - unsuitable for production
+# See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/
+
+# SECURITY WARNING: keep the secret key used in production secret!
+SECRET_KEY = '=&u2a!cp6*4i=$140mw^m_+2%ko82r+o*camh&=12mg2s+m%y0'
+
+# SECURITY WARNING: don't run with debug turned on in production!
+DEBUG = True
+
+ALLOWED_HOSTS = ['*']
+
+
+# Application definition
+import sys
+#告诉系统apps作为了子应用的新的导包路径
+sys.path.insert(1,os.path.join(BASE_DIR,'apps'))
+INSTALLED_APPS = [
+    'django.contrib.admin',
+    'django.contrib.auth',
+    'django.contrib.contenttypes',
+    'django.contrib.sessions',
+    'django.contrib.messages',
+    'django.contrib.staticfiles',
+    'stockinvoice.apps.StockinvoiceConfig', #开票作业
+    'PaymentOperation.apps.PaymentoperationConfig',  #付款作业
+    'salesinvoice.apps.SalesinvoiceConfig'  #付款作业
+]
+
+MIDDLEWARE = [
+    'django.middleware.security.SecurityMiddleware',
+    'django.contrib.sessions.middleware.SessionMiddleware',
+    'django.middleware.common.CommonMiddleware',
+    # 'django.middleware.csrf.CsrfViewMiddleware',
+    'django.contrib.auth.middleware.AuthenticationMiddleware',
+    'django.contrib.messages.middleware.MessageMiddleware',
+    'django.middleware.clickjacking.XFrameOptionsMiddleware',
+    'utils.middleware.middleware',#用户验证中间件
+]
+
+ROOT_URLCONF = 'awj.urls'
+
+TEMPLATES = [
+    {
+        'BACKEND': 'django.template.backends.django.DjangoTemplates',
+        'DIRS': [],
+        'APP_DIRS': True,
+        'OPTIONS': {
+            'context_processors': [
+                'django.template.context_processors.debug',
+                'django.template.context_processors.request',
+                'django.contrib.auth.context_processors.auth',
+                'django.contrib.messages.context_processors.messages',
+            ],
+        },
+    },
+]
+
+WSGI_APPLICATION = 'awj.wsgi.application'
+
+
+# Database
+# https://docs.djangoproject.com/en/1.11/ref/settings/#databases
+
+# DATABASES = {
+#     'default': {
+#         'ENGINE': 'django.db.backends.sqlite3',
+#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
+#     }
+# }
+# 配置连接数据库
+
+# DATABASES = {
+#     # 'default': {
+#     #     'ENGINE': 'django.db.backends.sqlite3',
+#     #     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
+#     # }
+#     'default': {
+#         'NAME': 'DB_2019',
+#         'ENGINE': 'sql_server.pyodbc',
+#         'HOST': '127.0.0.1',
+#         'USER': 'sa',
+#         'PASSWORD': '123456',
+#         'PORT': '1433',  # Set to empty string for default. Not used with sqlite3.
+#         'OPTIONS': {
+#             'host_is_server': True,
+#             'dsn': 'rencuiliang',##需要在电脑上使用odbc创建数据源odbc_jlad
+#         },
+#     }
+# }
+
+DATABASES = {
+    'default': {
+        'ENGINE': 'sql_server.pyodbc',
+        'NAME': 'DB_2019',
+        'USER': 'sa',
+        'PASSWORD': '123456',
+        'HOST': '127.0.0.1',
+        'PORT': '1433',
+        'OPTIONS': {
+            'driver': 'SQL Server Native Client 10.0',
+        },
+    },
+}
+
+
+DATABASE_CONNECTION_POOLING = True
+
+# Password validation
+# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators
+
+AUTH_PASSWORD_VALIDATORS = [
+    {
+        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
+    },
+    {
+        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
+    },
+    {
+        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
+    },
+    {
+        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
+    },
+]
+
+
+# Internationalization
+# https://docs.djangoproject.com/en/1.11/topics/i18n/
+
+LANGUAGE_CODE = 'en-us'
+
+TIME_ZONE = 'UTC'
+
+USE_I18N = True
+
+USE_L10N = True
+
+USE_TZ = True
+
+
+# Static files (CSS, JavaScript, Images)
+# https://docs.djangoproject.com/en/1.11/howto/static-files/
+
+STATIC_URL = '/static/'
+
+#配置访问日志
+LOGGING = {
+    'version': 1,
+    'disable_existing_loggers': False,  # 是否禁用已经存在的日志器
+    'formatters': {  # 日志信息显示的格式
+        'verbose': {
+            'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'
+        },
+        'simple': {
+            'format': '%(levelname)s %(module)s %(lineno)d %(message)s'
+        },
+    },
+    'filters': {  # 对日志进行过滤
+        'require_debug_true': {  # django在debug模式下才输出日志
+            '()': 'django.utils.log.RequireDebugTrue',
+        },
+    },
+    'handlers': {  # 日志处理方法
+        'console': {  # 向终端中输出日志
+            'level': 'INFO',
+            'filters': ['require_debug_true'],
+            'class': 'logging.StreamHandler',
+            'formatter': 'simple'
+        },
+        'file': {  # 向文件中输出日志
+            'level': 'INFO',
+            'class': 'logging.handlers.RotatingFileHandler',
+            'filename': os.path.join(os.path.dirname(BASE_DIR), 'logs/hwj.log'),  # 日志文件的位置
+            'maxBytes': 100 * 1024 * 1024,#输出日志大小,以字节为单位,也就是一个文件只能存放这个打数据的,超过会新增
+            'backupCount': 10,#最多超过生成10个文件
+            'formatter': 'verbose'
+        },
+    },
+    'loggers': {  # 日志器
+        'django': {  # 定义了一个名为django的日志器
+            'handlers': ['console', 'file'],  # 可以同时向终端与文件中输出日志
+            'propagate': True,  # 是否继续传递日志信息
+            'level': 'INFO',  # 日志器接收的最低日志级别,INFO < debug < warn < error
+        },
+    }
+}

+ 5 - 5
awj/awj/setting/lianxi.py

@@ -1,6 +1,6 @@
-a ='2019-10-17'
-import datetime
-
-detester = '2019-10-17'
-date = datetime.datetime.strptime(detester,'%Y-%m-%d')
+a ='2019-10-17'
+import datetime
+
+detester = '2019-10-17'
+date = datetime.datetime.strptime(detester,'%Y-%m-%d')
 print(date)

+ 25 - 25
awj/awj/urls.py

@@ -1,25 +1,25 @@
-"""awj URL Configuration
-
-The `urlpatterns` list routes URLs to views. For more information please see:
-    https://docs.djangoproject.com/en/1.11/topics/http/urls/
-Examples:
-Function views
-    1. Add an import:  from my_app import views
-    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
-Class-based views
-    1. Add an import:  from other_app.views import Home
-    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
-Including another URLconf
-    1. Import the include() function: from django.conf.urls import url, include
-    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
-"""
-from django.conf.urls import url,include
-from django.contrib import admin
-
-urlpatterns = [
-    url(r'^admin/', admin.site.urls),
-    url(r'^', include('stockinvoice.urls')),
-    url(r'^', include('PaymentOperation.urls')),
-    url(r'^', include('salesinvoice.urls')),
-    # path('stockinvoice',include('stockinvoice.urls',namespace="stockinvoice"))
-]
+"""awj URL Configuration
+
+The `urlpatterns` list routes URLs to views. For more information please see:
+    https://docs.djangoproject.com/en/1.11/topics/http/urls/
+Examples:
+Function views
+    1. Add an import:  from my_app import views
+    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
+Class-based views
+    1. Add an import:  from other_app.views import Home
+    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
+Including another URLconf
+    1. Import the include() function: from django.conf.urls import url, include
+    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
+"""
+from django.conf.urls import url,include
+from django.contrib import admin
+
+urlpatterns = [
+    url(r'^admin/', admin.site.urls),
+    url(r'^', include('stockinvoice.urls')),
+    url(r'^', include('PaymentOperation.urls')),
+    url(r'^', include('salesinvoice.urls')),
+    # path('stockinvoice',include('stockinvoice.urls',namespace="stockinvoice"))
+]

二進制
awj/awj/utils/__pycache__/__init__.cpython-36.pyc


二進制
awj/awj/utils/__pycache__/cust_data.cpython-36.pyc


二進制
awj/awj/utils/__pycache__/et_CACC_NO.cpython-36.pyc


二進制
awj/awj/utils/__pycache__/examine_ood.cpython-36.pyc


二進制
awj/awj/utils/__pycache__/if_account.cpython-36.pyc


二進制
awj/awj/utils/__pycache__/invoice_dh.cpython-36.pyc


二進制
awj/awj/utils/__pycache__/middleware.cpython-36.pyc


二進制
awj/awj/utils/__pycache__/usr_data.cpython-36.pyc


+ 19 - 14
awj/awj/utils/cust_data.py

@@ -1,14 +1,19 @@
-from django.db import connection
-
-def customer_data(CUS_NO,CUS_NO_NAME,OBJ_ID,DATE):
-    """
-    :param CUS_NO: 客户/厂商编码
-    :param CUS_NO_NAME: 客户/厂商名称
-    :param OBJ_ID: 客户厂商类别(1:客户,2:厂商)
-    :return:
-    """
-    with connection.cursor() as cursor:
-        row_cus_no = cursor.execute("SELECT COUNT(*) FROM CUST WHERE CUS_NO=%s", [CUS_NO]).fetchall()[0][0]
-        if row_cus_no == 0:
-            cursor.execute("INSERT INTO CUST(CUS_NO,[NAME],OBJ_ID,USR1,CHK_MAN,CLS_DATE,SYS_DATE,DEP)VALUES (%s,%s,%s,%s,%s,%s,%s,'0000')", [CUS_NO, CUS_NO_NAME,OBJ_ID,'ADMIN','ADMIN',DATE,DATE])
-    return "ok"
+from django.db import connection
+
+def customer_data(CUS_NO,CUS_NO_NAME,OBJ_ID,DATE):
+    """
+    :param CUS_NO: 客户/厂商编码
+    :param CUS_NO_NAME: 客户/厂商名称
+    :param OBJ_ID: 客户厂商类别(1:客户,2:厂商)
+    :return:
+    """
+    with connection.cursor() as cursor:
+        row_cus_no = cursor.execute("SELECT COUNT(*) FROM CUST WHERE CUS_NO=%s", [CUS_NO]).fetchall()[0][0]
+        if row_cus_no == 0:
+            cursor.execute("""
+            INSERT INTO CUST(CUS_NO,[NAME],OBJ_ID,USR1,CHK_MAN,CLS_DATE,SYS_DATE,DEP,CLS_MTH,CLS_DD,MM_END,CHK_DD,CRD_ID,ID1_TAX
+,CLS2,CUS_LEVEL,CHK_CRD,SO_CRD,CHK_FAX,CHK_CUS_IDX,CY_ID,CHK_INCLUDE,CHK_IRP,CHK_PAY1,PAY_FLAG,CHK_PAY2,CHK_PAY3,CHK_QK,CHK_IRP2,CHK_BARCODE,DATEFLAG_FQSK,
+CHK_KD,CHK_ZHANG_ID2,CHK_TYPE_MINXF,CHK_CK
+)VALUES (%s,%s,%s,%s,%s,%s,%s,'0000',1,2,30,30,1,1,1,'F',1,'F','F',1,'F','F','F','F',1,'F','F','1','F',1,1,'F','T',1,'T')
+            """, [CUS_NO, CUS_NO_NAME,int(OBJ_ID),'ADMIN','ADMIN',DATE,DATE])
+    return "ok"

+ 19 - 0
awj/awj/utils/et_CACC_NO.py

@@ -0,0 +1,19 @@
+from django import http
+from django.db import connection
+
+# 用于判断银行账号是否存在
+
+def et_CACC_NO(CACC_NO):
+    """
+    :return:
+    """
+    if len(CACC_NO)<=0:
+        return 'NO'
+
+    sql = "SELECT COUNT(*) FROM BACC WHERE BACC_NO=%s" % (CACC_NO)
+    with connection.cursor() as cursor:
+        # 判断单号是否重复
+        SUM_CACC_NO = cursor.execute(sql).fetchall()[0][0]
+    if SUM_CACC_NO <=0:
+        return 'NO'
+

+ 18 - 18
awj/awj/utils/examine_ood.py

@@ -1,19 +1,19 @@
-from django.db import connection
-
-# 用于判断进货开票单是否存在
-
-def examine_ood(TB,TYPE,OOD,BIL_NO,BLI_NAME):
-    """
-
-    :param TB: 表名
-    :param TYPE: 字段名
-    :param OOD: 单号
-    :param BIL_NO: 单据id
-    :param BLI_NAME: 单据id值
-    :return:
-    """
-    sql = "SELECT COUNT(*) FROM %s WHERE %s='%s' AND %s='%s'" % (TB, TYPE, OOD,BIL_NO,BLI_NAME)
-    with connection.cursor() as cursor:
-        # 判断单号是否重复
-        row_ZL_NO = cursor.execute(sql).fetchall()[0][0]
+from django.db import connection
+
+# 用于判断进货开票单是否存在
+
+def examine_ood(TB,TYPE,OOD,BIL_NO,BLI_NAME):
+    """
+
+    :param TB: 表名
+    :param TYPE: 字段名
+    :param OOD: 单号
+    :param BIL_NO: 单据id
+    :param BLI_NAME: 单据id值
+    :return:
+    """
+    sql = "SELECT COUNT(*) FROM %s WHERE %s='%s' AND %s='%s'" % (TB, TYPE, OOD,BIL_NO,BLI_NAME)
+    with connection.cursor() as cursor:
+        # 判断单号是否重复
+        row_ZL_NO = cursor.execute(sql).fetchall()[0][0]
         return row_ZL_NO

+ 23 - 0
awj/awj/utils/if_account.py

@@ -0,0 +1,23 @@
+from django import http
+from django.db import connection
+
+# 用于判断银行账号是否存在
+
+def if_account(CACC_NO):
+    """
+    :return:
+    """
+    if len(CACC_NO)<=0:
+        return 'NO'
+
+    sql = "SELECT Bacc_Type FROM BACC WHERE BACC_NO=%s" % (CACC_NO)
+    with connection.cursor() as cursor:
+        # 判断单号是否重复
+        IF_CACC_NO = cursor.execute(sql).fetchall()[0][0]
+    print(type(IF_CACC_NO))
+    if int(IF_CACC_NO) ==1:
+        return '1'
+    elif int(IF_CACC_NO) ==2:
+        return '2'
+    else:
+        return 'NO'

+ 22 - 22
awj/awj/utils/invoice_dh.py

@@ -1,23 +1,23 @@
-from django import http
-
-from utils.examine_ood import examine_ood
-
-
-def invoice_dh(ZHANG_ID,ZL_NO,BIL_NO,BLI_NAME):
-    if int(ZHANG_ID) != 1 and int(ZHANG_ID) != 2:
-        return http.HttpResponseForbidden('立账方式只能是1(开票),2(不开票)')
-    # 判断进货单号是存在
-    if int(ZHANG_ID) == 1:
-        row_ZL_NO = examine_ood('MF_PSS', 'PS_NO', 'PC' + ZL_NO[2::],BIL_NO,BLI_NAME)
-        if row_ZL_NO == 0:
-            return http.HttpResponseForbidden('进货单号不存在')
-    # 判断开票单号是否存在
-    if int(ZHANG_ID) == 2:
-        row_ZL_NO = examine_ood('MF_LZ1', 'LZ_NO', ZL_NO,BIL_NO,BLI_NAME)
-        if row_ZL_NO == 0:
-            return http.HttpResponseForbidden('开票单号不存在')
-    # 判断是否产生后续单据
-    row_ZL_NO = examine_ood('TC_MON', 'ARP_NO', 'AP'+ZL_NO[2::],BIL_NO,BLI_NAME)
-    print(row_ZL_NO)
-    if row_ZL_NO > 0:
+from django import http
+
+from utils.examine_ood import examine_ood
+
+
+def invoice_dh(ZHANG_ID,ZL_NO,BIL_NO,BLI_NAME):
+    if int(ZHANG_ID) != 1 and int(ZHANG_ID) != 2:
+        return http.HttpResponseForbidden('立账方式只能是1(开票),2(不开票)')
+    # 判断进货单号是存在
+    if int(ZHANG_ID) == 1:
+        row_ZL_NO = examine_ood('MF_PSS', 'PS_NO', 'PC' + ZL_NO[2::],BIL_NO,BLI_NAME)
+        if row_ZL_NO == 0:
+            return http.HttpResponseForbidden('进货单号不存在')
+    # 判断开票单号是否存在
+    if int(ZHANG_ID) == 2:
+        row_ZL_NO = examine_ood('MF_LZ1', 'LZ_NO', ZL_NO,BIL_NO,BLI_NAME)
+        if row_ZL_NO == 0:
+            return http.HttpResponseForbidden('开票单号不存在')
+    # 判断是否产生后续单据
+    row_ZL_NO = examine_ood('TC_MON', 'ARP_NO', 'AP'+ZL_NO[2::],BIL_NO,BLI_NAME)
+    print(row_ZL_NO)
+    if row_ZL_NO > 0:
         return http.HttpResponseForbidden('开票单或进货单已产生后续收付款单')

+ 33 - 23
awj/awj/utils/middleware.py

@@ -1,24 +1,34 @@
-import json
-
-from django import http
-
-
-def middleware(response):
-    def inner(request):
-        print('执行之前代码')
-        # 获取参数
-        req_data = json.loads(request.body.decode())
-        user = req_data.get("user")  # 用户名
-        password = req_data.get("name")  # 用户名
-        user_ok='123'
-        password_ok='123'
-        if user!=user_ok or password!=password_ok:
-            print(2222)
-            return http.HttpResponseForbidden('账号密码不正确')
-        print(type(user))
-        print(password)
-        print(request.method)
-        res = response(request)
-        print('执行之后代码')
-        return res
+import json
+
+from django import http
+
+def middleware(response):
+    def inner(request):
+        user_ok = '123'
+        password_ok = '123'
+        if request.method=='POST':
+            user = request.POST.get("user")
+            password = request.POST.get("password")
+            if user is None:
+                return http.HttpResponseForbidden('请输入用户名')
+            if password is None:
+                return http.HttpResponseForbidden('请输入密码')
+            if user!=user_ok or password!=password_ok:
+                return http.HttpResponseForbidden('账号密码不正确')
+            res = response(request)
+        else:
+            if len(request.body.decode())==0:
+                return http.HttpResponseForbidden('请传入用户名和密码')
+            req_data = json.loads(request.body.decode())
+            user = req_data.get("user")  # 用户名
+            password = req_data.get("password")  # 密码
+            if user is None:
+                return http.HttpResponseForbidden('请输入用户名')
+            if password is None:
+                return http.HttpResponseForbidden('请输入密码')
+            if user!=user_ok or password!=password_ok:
+                return http.HttpResponseForbidden('账号密码不正确')
+            # print(request.method)
+            res = response(request)
+        return res
     return inner

+ 13 - 13
awj/awj/utils/usr_data.py

@@ -1,14 +1,14 @@
-from django.db import connection
-
-def usr_data(USR,USR_NAME,DATE):
-    """
-
-    :param USR: 用户代号
-    :param USR_NAME: 用户名
-    :return:
-    """
-    with connection.cursor() as cursor:
-        row_usr = cursor.execute("SELECT COUNT(*) FROM SALM WHERE SAL_NO=%s", [USR]).fetchall()[0][0]
-        if row_usr == 0:
-            cursor.execute("INSERT INTO SALM(SAL_NO,[NAME],USR,CHK_MAN,CLS_DATE,SYS_DATE)VALUES (%s,%s,'ADMIN','ADMIN',%s,%s)", [USR, USR_NAME,DATE,DATE])
+from django.db import connection
+
+def usr_data(USR,USR_NAME,DATE):
+    """
+
+    :param USR: 用户代号
+    :param USR_NAME: 用户名
+    :return:
+    """
+    with connection.cursor() as cursor:
+        row_usr = cursor.execute("SELECT COUNT(*) FROM SALM WHERE SAL_NO=%s", [USR]).fetchall()[0][0]
+        if row_usr == 0:
+            cursor.execute("INSERT INTO SALM(SAL_NO,[NAME],USR,SYS_DATE)VALUES (%s,%s,%s,%s)", [USR, USR_NAME,USR_NAME,DATE])
     return "ok"

+ 25 - 16
awj/awj/wsgi.py

@@ -1,16 +1,25 @@
-"""
-WSGI config for awj project.
-
-It exposes the WSGI callable as a module-level variable named ``application``.
-
-For more information on this file, see
-https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/
-"""
-
-import os
-
-from django.core.wsgi import get_wsgi_application
-
-os.environ.setdefault("DJANGO_SETTINGS_MODULE", "awj.settings")
-
-application = get_wsgi_application()
+"""
+WSGI config for awj project.
+
+It exposes the WSGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/
+"""
+
+import os
+
+import sys
+
+from setting.dev import BASE_DIR
+
+sys.path.append('e:/12446/PycharmProjects/wangli/wanjia/awj')
+
+from django.core.wsgi import get_wsgi_application
+
+os.environ.setdefault("DJANGO_SETTINGS_MODULE", "awj.settings.dev")
+
+application = get_wsgi_application()
+
+
+

+ 2851 - 1411
awj/logs/hwj.log

@@ -1,1411 +1,2851 @@
-INFO 2019-10-17 10:11:05,598 basehttp 124 "GET /areas/ HTTP/1.1" 200 10
-INFO 2019-10-17 13:26:27,171 autoreload 597 Watching for file changes with StatReloader
-INFO 2019-10-17 13:27:09,435 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\setting\dev.py changed, reloading.
-INFO 2019-10-17 13:27:10,260 autoreload 597 Watching for file changes with StatReloader
-INFO 2019-10-17 13:27:35,090 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\setting\dev.py changed, reloading.
-INFO 2019-10-17 13:27:35,938 autoreload 597 Watching for file changes with StatReloader
-INFO 2019-10-17 13:28:06,660 autoreload 597 Watching for file changes with StatReloader
-INFO 2019-10-17 13:28:39,906 autoreload 597 Watching for file changes with StatReloader
-WARNING 2019-10-17 14:12:35,299 log 228 Not Found: /areas/
-WARNING 2019-10-17 14:12:35,300 basehttp 154 "GET /areas/ HTTP/1.1" 404 1955
-WARNING 2019-10-17 14:12:37,216 log 228 Not Found: /areas/
-WARNING 2019-10-17 14:12:37,216 basehttp 154 "GET /areas/ HTTP/1.1" 404 1955
-INFO 2019-10-17 14:15:22,231 basehttp 154 "GET /areas/ HTTP/1.1" 200 10
-INFO 2019-10-17 14:15:45,505 basehttp 154 "GET /areas/ HTTP/1.1" 200 10
-ERROR 2019-10-17 14:21:46,626 log 228 Internal Server Error: /areas/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 11, in get
-    with connection.cursor() as cursor:
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 255, in cursor
-    return self._cursor()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 232, in _cursor
-    self.ensure_connection()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 216, in ensure_connection
-    self.connect()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 196, in connect
-    self.init_connection_state()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 365, in init_connection_state
-    "The database driver doesn't support modern datatime types.")
-django.core.exceptions.ImproperlyConfigured: The database driver doesn't support modern datatime types.
-ERROR 2019-10-17 14:21:46,628 basehttp 154 "GET /areas/ HTTP/1.1" 500 99869
-ERROR 2019-10-17 14:22:09,101 log 228 Internal Server Error: /areas/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 11, in get
-    with connection.cursor() as cursor:
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 255, in cursor
-    return self._cursor()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 232, in _cursor
-    self.ensure_connection()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 216, in ensure_connection
-    self.connect()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 196, in connect
-    self.init_connection_state()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 365, in init_connection_state
-    "The database driver doesn't support modern datatime types.")
-django.core.exceptions.ImproperlyConfigured: The database driver doesn't support modern datatime types.
-ERROR 2019-10-17 14:22:09,103 basehttp 154 "GET /areas/ HTTP/1.1" 500 99864
-ERROR 2019-10-17 14:23:11,195 log 228 Internal Server Error: /areas/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 11, in get
-    with connection.cursor() as cursor:
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 255, in cursor
-    return self._cursor()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 232, in _cursor
-    self.ensure_connection()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 216, in ensure_connection
-    self.connect()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 196, in connect
-    self.init_connection_state()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 365, in init_connection_state
-    "The database driver doesn't support modern datatime types.")
-django.core.exceptions.ImproperlyConfigured: The database driver doesn't support modern datatime types.
-ERROR 2019-10-17 14:23:11,197 basehttp 154 "GET /areas/ HTTP/1.1" 500 99866
-ERROR 2019-10-17 14:23:55,955 log 228 Internal Server Error: /areas/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 11, in get
-    with connection.cursor() as cursor:
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 255, in cursor
-    return self._cursor()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 232, in _cursor
-    self.ensure_connection()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 216, in ensure_connection
-    self.connect()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 196, in connect
-    self.init_connection_state()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 365, in init_connection_state
-    "The database driver doesn't support modern datatime types.")
-django.core.exceptions.ImproperlyConfigured: The database driver doesn't support modern datatime types.
-ERROR 2019-10-17 14:23:55,957 basehttp 154 "GET /areas/ HTTP/1.1" 500 99876
-ERROR 2019-10-17 14:24:23,614 log 228 Internal Server Error: /areas/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 11, in get
-    with connection.cursor() as cursor:
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 255, in cursor
-    return self._cursor()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 232, in _cursor
-    self.ensure_connection()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 216, in ensure_connection
-    self.connect()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 196, in connect
-    self.init_connection_state()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 365, in init_connection_state
-    "The database driver doesn't support modern datatime types.")
-django.core.exceptions.ImproperlyConfigured: The database driver doesn't support modern datatime types.
-ERROR 2019-10-17 14:24:23,615 basehttp 154 "GET /areas/ HTTP/1.1" 500 99876
-ERROR 2019-10-17 14:26:39,285 log 228 Internal Server Error: /areas/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 14, in get
-    with connection.cursor() as cursor:
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 255, in cursor
-    return self._cursor()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 232, in _cursor
-    self.ensure_connection()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 216, in ensure_connection
-    self.connect()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 196, in connect
-    self.init_connection_state()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 365, in init_connection_state
-    "The database driver doesn't support modern datatime types.")
-django.core.exceptions.ImproperlyConfigured: The database driver doesn't support modern datatime types.
-ERROR 2019-10-17 14:26:39,287 basehttp 154 "GET /areas/ HTTP/1.1" 500 100119
-ERROR 2019-10-17 14:29:28,143 log 228 Internal Server Error: /areas/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 11, in get
-    with connection.cursor() as cursor:
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 255, in cursor
-    return self._cursor()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 232, in _cursor
-    self.ensure_connection()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 216, in ensure_connection
-    self.connect()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 196, in connect
-    self.init_connection_state()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 365, in init_connection_state
-    "The database driver doesn't support modern datatime types.")
-django.core.exceptions.ImproperlyConfigured: The database driver doesn't support modern datatime types.
-ERROR 2019-10-17 14:29:28,145 basehttp 154 "GET /areas/ HTTP/1.1" 500 99876
-ERROR 2019-10-17 14:36:51,606 log 228 Internal Server Error: /areas/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 11, in get
-    with connection.cursor() as cursor:
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 255, in cursor
-    return self._cursor()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 232, in _cursor
-    self.ensure_connection()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 216, in ensure_connection
-    self.connect()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 196, in connect
-    self.init_connection_state()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 365, in init_connection_state
-    "The database driver doesn't support modern datatime types.")
-django.core.exceptions.ImproperlyConfigured: The database driver doesn't support modern datatime types.
-ERROR 2019-10-17 14:36:51,608 basehttp 154 "GET /areas/ HTTP/1.1" 500 99792
-ERROR 2019-10-17 14:38:25,722 log 228 Internal Server Error: /areas/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 12, in get
-    cursor = connection.cursor()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 255, in cursor
-    return self._cursor()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 232, in _cursor
-    self.ensure_connection()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 216, in ensure_connection
-    self.connect()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 196, in connect
-    self.init_connection_state()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 365, in init_connection_state
-    "The database driver doesn't support modern datatime types.")
-django.core.exceptions.ImproperlyConfigured: The database driver doesn't support modern datatime types.
-ERROR 2019-10-17 14:38:25,723 basehttp 154 "GET /areas/ HTTP/1.1" 500 99949
-ERROR 2019-10-17 14:44:01,821 log 228 Internal Server Error: /areas/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 12, in get
-    cursor = connection.cursor()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 255, in cursor
-    return self._cursor()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 232, in _cursor
-    self.ensure_connection()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 216, in ensure_connection
-    self.connect()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 196, in connect
-    self.init_connection_state()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 365, in init_connection_state
-    "The database driver doesn't support modern datatime types.")
-django.core.exceptions.ImproperlyConfigured: The database driver doesn't support modern datatime types.
-ERROR 2019-10-17 14:44:01,823 basehttp 154 "GET /areas/ HTTP/1.1" 500 99949
-ERROR 2019-10-17 14:46:00,691 log 228 Internal Server Error: /areas/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 11, in get
-    with connection.cursor() as cursor:
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 255, in cursor
-    return self._cursor()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 232, in _cursor
-    self.ensure_connection()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 216, in ensure_connection
-    self.connect()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\base\base.py", line 196, in connect
-    self.init_connection_state()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 365, in init_connection_state
-    "The database driver doesn't support modern datatime types.")
-django.core.exceptions.ImproperlyConfigured: The database driver doesn't support modern datatime types.
-ERROR 2019-10-17 14:46:00,693 basehttp 154 "GET /areas/ HTTP/1.1" 500 100396
-WARNING 2019-10-17 14:46:00,830 log 228 Not Found: /favicon.ico
-WARNING 2019-10-17 14:46:00,832 basehttp 154 "GET /favicon.ico HTTP/1.1" 404 2126
-INFO 2019-10-17 14:48:52,834 basehttp 154 "GET /areas/ HTTP/1.1" 200 10
-INFO 2019-10-17 14:52:36,899 basehttp 154 "GET /areas/ HTTP/1.1" 200 10
-INFO 2019-10-17 16:21:08,859 basehttp 154 "GET /areas/ HTTP/1.1" 200 10
-WARNING 2019-10-17 17:33:38,727 log 228 Forbidden (CSRF cookie not set.): /areas/
-WARNING 2019-10-17 17:33:38,727 basehttp 154 "POST /areas/ HTTP/1.1" 403 2868
-INFO 2019-10-17 17:33:42,872 basehttp 154 "GET /areas/ HTTP/1.1" 200 10
-INFO 2019-10-17 17:34:25,001 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
-WARNING 2019-10-17 17:40:06,205 log 228 Forbidden (CSRF cookie not set.): /invoice/
-WARNING 2019-10-17 17:40:06,206 basehttp 154 "POST /invoice/ HTTP/1.1" 403 2868
-ERROR 2019-10-17 17:40:59,373 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 137, in _get_response
-    "returned None instead." % (callback.__module__, view_name)
-ValueError: The view stockinvoice.views.InvoiceView didn't return an HttpResponse object. It returned None instead.
-ERROR 2019-10-17 17:40:59,374 basehttp 154 "POST /invoice/ HTTP/1.1" 500 61366
-INFO 2019-10-17 17:42:00,134 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-ERROR 2019-10-17 17:44:11,957 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
-    return func(*args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 581, in fetchone
-    row = self.cursor.fetchone()
-pyodbc.ProgrammingError: No results.  Previous SQL was not a query.
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 14, in get
-    row = cursor.fetchone()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
-    return func(*args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
-    return func(*args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 581, in fetchone
-    row = self.cursor.fetchone()
-django.db.utils.ProgrammingError: No results.  Previous SQL was not a query.
-ERROR 2019-10-17 17:44:11,959 basehttp 154 "GET /invoice/ HTTP/1.1" 500 102978
-ERROR 2019-10-17 17:45:20,027 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
-    return func(*args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 581, in fetchone
-    row = self.cursor.fetchone()
-pyodbc.ProgrammingError: No results.  Previous SQL was not a query.
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 14, in get
-    row = cursor.fetchone()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
-    return func(*args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
-    return func(*args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 581, in fetchone
-    row = self.cursor.fetchone()
-django.db.utils.ProgrammingError: No results.  Previous SQL was not a query.
-ERROR 2019-10-17 17:45:20,028 basehttp 154 "GET /invoice/ HTTP/1.1" 500 103115
-INFO 2019-10-17 17:45:40,818 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
-ERROR 2019-10-17 17:47:14,790 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
-    return func(*args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 581, in fetchone
-    row = self.cursor.fetchone()
-pyodbc.ProgrammingError: No results.  Previous SQL was not a query.
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 14, in get
-    row = cursor.fetchone()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
-    return func(*args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
-    return func(*args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 581, in fetchone
-    row = self.cursor.fetchone()
-django.db.utils.ProgrammingError: No results.  Previous SQL was not a query.
-ERROR 2019-10-17 17:47:14,792 basehttp 154 "GET /invoice/ HTTP/1.1" 500 103115
-ERROR 2019-10-17 17:47:52,312 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
-    return func(*args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 581, in fetchone
-    row = self.cursor.fetchone()
-pyodbc.ProgrammingError: No results.  Previous SQL was not a query.
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 14, in get
-    row = cursor.fetchone()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
-    return func(*args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
-    return func(*args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 581, in fetchone
-    row = self.cursor.fetchone()
-django.db.utils.ProgrammingError: No results.  Previous SQL was not a query.
-ERROR 2019-10-17 17:47:52,314 basehttp 154 "GET /invoice/ HTTP/1.1" 500 103117
-ERROR 2019-10-17 17:52:52,408 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
-    return func(*args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 594, in fetchall
-    return self.format_rows(self.cursor.fetchall())
-pyodbc.ProgrammingError: No results.  Previous SQL was not a query.
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 14, in get
-    row = cursor.fetchall()
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
-    return func(*args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
-    return func(*args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 594, in fetchall
-    return self.format_rows(self.cursor.fetchall())
-django.db.utils.ProgrammingError: No results.  Previous SQL was not a query.
-ERROR 2019-10-17 17:52:52,409 basehttp 154 "GET /invoice/ HTTP/1.1" 500 102677
-INFO 2019-10-17 17:59:44,327 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
-INFO 2019-10-17 18:00:03,991 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
-INFO 2019-10-17 18:01:04,025 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
-INFO 2019-10-17 18:01:52,909 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-ERROR 2019-10-17 18:03:36,505 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 83, in _execute
-    return self.cursor.execute(sql)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-pyodbc.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'CUS_NO' 无效。 (207) (SQLExecDirectW)")
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 12, in get
-    cursor.execute("INSERT INTO PRDT(CUS_NO,NAME)VALUES ('QQ12345','DSDADADA')")
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 83, in _execute
-    return self.cursor.execute(sql)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-django.db.utils.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'CUS_NO' 无效。 (207) (SQLExecDirectW)")
-ERROR 2019-10-17 18:03:36,507 basehttp 154 "GET /invoice/ HTTP/1.1" 500 119454
-ERROR 2019-10-17 18:04:03,824 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 83, in _execute
-    return self.cursor.execute(sql)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]'`' 附近有语法错误。 (102) (SQLExecDirectW)")
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 12, in get
-    cursor.execute("INSERT INTO PRDT(CUS_NO,`NAME`)VALUES ('QQ12345','DSDADADA')")
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 83, in _execute
-    return self.cursor.execute(sql)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-django.db.utils.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]'`' 附近有语法错误。 (102) (SQLExecDirectW)")
-ERROR 2019-10-17 18:04:03,825 basehttp 154 "GET /invoice/ HTTP/1.1" 500 119498
-ERROR 2019-10-17 18:05:23,538 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 83, in _execute
-    return self.cursor.execute(sql)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-pyodbc.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'CUS_NO' 无效。 (207) (SQLExecDirectW)")
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 12, in get
-    cursor.execute("INSERT INTO PRDT(CUS_NO,[NAME])VALUES ('QQ12345','DSDADADA')")
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 83, in _execute
-    return self.cursor.execute(sql)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-django.db.utils.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'CUS_NO' 无效。 (207) (SQLExecDirectW)")
-ERROR 2019-10-17 18:05:23,540 basehttp 154 "GET /invoice/ HTTP/1.1" 500 119474
-ERROR 2019-10-17 18:06:14,326 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-pyodbc.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'CUS_NO' 无效。 (207) (SQLExecDirectW); [42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 12, in get
-    cursor.execute("INSERT INTO PRDT(CUS_NO,[NAME])VALUES ('QQ12345',%s)",[a])
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-django.db.utils.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'CUS_NO' 无效。 (207) (SQLExecDirectW); [42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
-ERROR 2019-10-17 18:06:14,328 basehttp 154 "GET /invoice/ HTTP/1.1" 500 120137
-INFO 2019-10-17 18:06:36,521 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
-INFO 2019-10-17 21:27:12,877 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-17 22:08:39,806 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-17 22:11:55,840 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-17 22:12:22,921 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-17 22:12:43,199 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-17 22:13:51,143 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-ERROR 2019-10-17 22:15:09,179 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-pyodbc.ProgrammingError: ('42S02', "[42S02] [Microsoft][SQL Server Native Client 10.0][SQL Server]对象名 'SLAM' 无效。 (208) (SQLExecDirectW); [42S02] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 54, in post
-    row_usr = cursor.execute("SELECT COUNT(*) FROM SLAM WHERE CUS_NO=%s",[USR]).fetchall()[0][0]
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-django.db.utils.ProgrammingError: ('42S02', "[42S02] [Microsoft][SQL Server Native Client 10.0][SQL Server]对象名 'SLAM' 无效。 (208) (SQLExecDirectW); [42S02] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
-ERROR 2019-10-17 22:15:09,183 basehttp 154 "POST /invoice/ HTTP/1.1" 500 124347
-ERROR 2019-10-17 22:15:33,723 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-pyodbc.ProgrammingError: ('42S02', "[42S02] [Microsoft][SQL Server Native Client 10.0][SQL Server]对象名 'SLAM' 无效。 (208) (SQLExecDirectW); [42S02] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 54, in post
-    row_usr = cursor.execute("SELECT COUNT(*) FROM SLAM WHERE SAL_NO=%s",[USR]).fetchall()[0][0]
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-django.db.utils.ProgrammingError: ('42S02', "[42S02] [Microsoft][SQL Server Native Client 10.0][SQL Server]对象名 'SLAM' 无效。 (208) (SQLExecDirectW); [42S02] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
-ERROR 2019-10-17 22:15:33,727 basehttp 154 "POST /invoice/ HTTP/1.1" 500 124350
-INFO 2019-10-17 22:16:30,085 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-17 22:19:35,485 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-17 22:19:41,014 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-17 22:22:30,127 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-17 22:22:32,199 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-17 22:31:58,427 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-17 22:32:25,280 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-17 22:32:37,349 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-17 22:32:56,619 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-17 22:34:21,074 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-17 22:56:34,519 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-17 22:57:58,780 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-17 22:58:01,718 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-17 22:58:30,375 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-17 22:58:46,584 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-17 22:59:12,091 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-WARNING 2019-10-17 23:07:47,139 log 228 Forbidden: /invoice/
-WARNING 2019-10-17 23:07:47,140 basehttp 154 "POST /invoice/ HTTP/1.1" 403 12
-ERROR 2019-10-17 23:14:23,137 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-pyodbc.IntegrityError: ('23000', "[23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]违反了 PRIMARY KEY 约束 'PK__MF_PSS'。不能在对象 'dbo.MF_PSS' 中插入重复键。 (2627) (SQLExecDirectW); [23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]语句已终止。 (3621)")
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 75, in post
-    datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),AMT])
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-django.db.utils.IntegrityError: ('23000', "[23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]违反了 PRIMARY KEY 约束 'PK__MF_PSS'。不能在对象 'dbo.MF_PSS' 中插入重复键。 (2627) (SQLExecDirectW); [23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]语句已终止。 (3621)")
-ERROR 2019-10-17 23:14:23,139 basehttp 154 "POST /invoice/ HTTP/1.1" 500 129497
-ERROR 2019-10-17 23:15:02,233 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 78, in post
-    VALUES('PC',%s,%s,'0000','AQ001',,1,1,%f,%f,5,1,1,%f)""", ['PC'+ZL_NO[2::], datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),AMT,AMT,AMT])
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 542, in execute
-    sql = self.format_sql(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 510, in format_sql
-    sql = sql % tuple('?' * len(params))
-TypeError: must be real number, not str
-ERROR 2019-10-17 23:15:02,235 basehttp 154 "POST /invoice/ HTTP/1.1" 500 111057
-ERROR 2019-10-17 23:17:43,751 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 78, in post
-    VALUES('PC',%s,%s,'0000','AQ001',1,1,%f,%f,5,1,1,%f)""", ['PC'+ZL_NO[2::], datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),AMT,AMT,AMT])
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 542, in execute
-    sql = self.format_sql(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 510, in format_sql
-    sql = sql % tuple('?' * len(params))
-TypeError: must be real number, not str
-ERROR 2019-10-17 23:17:43,754 basehttp 154 "POST /invoice/ HTTP/1.1" 500 111047
-ERROR 2019-10-17 23:24:18,477 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-pyodbc.IntegrityError: ('23000', "[23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]违反了 PRIMARY KEY 约束 'PK__MF_PSS'。不能在对象 'dbo.MF_PSS' 中插入重复键。 (2627) (SQLExecDirectW); [23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]语句已终止。 (3621)")
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 75, in post
-    datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),AMT])
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-django.db.utils.IntegrityError: ('23000', "[23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]违反了 PRIMARY KEY 约束 'PK__MF_PSS'。不能在对象 'dbo.MF_PSS' 中插入重复键。 (2627) (SQLExecDirectW); [23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]语句已终止。 (3621)")
-ERROR 2019-10-17 23:24:18,480 basehttp 154 "POST /invoice/ HTTP/1.1" 500 129530
-INFO 2019-10-17 23:24:39,910 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-ERROR 2019-10-18 14:08:39,860 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-pyodbc.IntegrityError: ('23000', "[23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]违反了 PRIMARY KEY 约束 'PK__MF_PSS'。不能在对象 'dbo.MF_PSS' 中插入重复键。 (2627) (SQLExecDirectW); [23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]语句已终止。 (3621)")
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 75, in post
-    datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),AMT])
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-django.db.utils.IntegrityError: ('23000', "[23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]违反了 PRIMARY KEY 约束 'PK__MF_PSS'。不能在对象 'dbo.MF_PSS' 中插入重复键。 (2627) (SQLExecDirectW); [23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]语句已终止。 (3621)")
-ERROR 2019-10-18 14:08:39,897 basehttp 154 "POST /invoice/ HTTP/1.1" 500 129655
-INFO 2019-10-18 14:10:22,226 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-18 14:12:42,840 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-ERROR 2019-10-18 14:24:23,829 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 87, in post
-    datetime.datetime.strptime(LZ_DD,'%Y-%m-%d'),INV_NO,AMT,AMT,AMT,datetime.datetime.strptime(LZ_DD,'%Y-%m-%d')])
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 542, in execute
-    sql = self.format_sql(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 510, in format_sql
-    sql = sql % tuple('?' * len(params))
-TypeError: not all arguments converted during string formatting
-ERROR 2019-10-18 14:24:23,831 basehttp 154 "POST /invoice/ HTTP/1.1" 500 112068
-ERROR 2019-10-18 14:26:22,690 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 87, in post
-    datetime.datetime.strptime(LZ_DD,'%Y-%m-%d'),INV_NO,datetime.datetime.strptime(LZ_DD,'%Y-%m-%d')])
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 542, in execute
-    sql = self.format_sql(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 510, in format_sql
-    sql = sql % tuple('?' * len(params))
-TypeError: not all arguments converted during string formatting
-ERROR 2019-10-18 14:26:22,695 basehttp 154 "POST /invoice/ HTTP/1.1" 500 111683
-ERROR 2019-10-18 14:27:31,739 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 87, in post
-    datetime.datetime.strptime(LZ_DD,'%Y-%m-%d'),INV_NO,datetime.datetime.strptime(LZ_DD,'%Y-%m-%d')])
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 542, in execute
-    sql = self.format_sql(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 510, in format_sql
-    sql = sql % tuple('?' * len(params))
-TypeError: not all arguments converted during string formatting
-ERROR 2019-10-18 14:27:31,740 basehttp 154 "POST /invoice/ HTTP/1.1" 500 111600
-INFO 2019-10-18 14:29:33,513 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-18 14:30:49,220 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-18 14:33:54,856 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-18 16:55:49,676 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-WARNING 2019-10-18 17:35:41,041 log 228 Forbidden: /invoice/
-WARNING 2019-10-18 17:35:41,042 basehttp 154 "POST /invoice/ HTTP/1.1" 403 12
-WARNING 2019-10-18 17:36:40,118 log 228 Forbidden: /invoice/
-WARNING 2019-10-18 17:36:40,118 basehttp 154 "POST /invoice/ HTTP/1.1" 403 12
-WARNING 2019-10-18 17:37:26,363 log 228 Forbidden: /invoice/
-WARNING 2019-10-18 17:37:26,363 basehttp 154 "POST /invoice/ HTTP/1.1" 403 12
-ERROR 2019-10-18 17:40:08,827 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]',' 附近有语法错误。 (102) (SQLExecDirectW); [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 71, in post
-    row_usr = cursor.execute("SELECT COUNT(*) FROM SALM WHERE SAL_NO=%s,NAME=%s",[USR,USR_NAME]).fetchall()[0][0]
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-django.db.utils.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]',' 附近有语法错误。 (102) (SQLExecDirectW); [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
-ERROR 2019-10-18 17:40:08,829 basehttp 154 "POST /invoice/ HTTP/1.1" 500 126022
-ERROR 2019-10-18 17:42:05,691 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 91, in post
-    UNI_NO_PAY,SAL_ADR,SAL_TEL,SAL_KH_BANK,SAL_ID_CODE])
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 542, in execute
-    sql = self.format_sql(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 510, in format_sql
-    sql = sql % tuple('?' * len(params))
-TypeError: not enough arguments for format string
-ERROR 2019-10-18 17:42:05,693 basehttp 154 "POST /invoice/ HTTP/1.1" 500 114075
-INFO 2019-10-18 18:14:39,620 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-ERROR 2019-10-18 18:19:40,492 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 108, in post
-    (%,200001,'LP',21,%s,%s,%s,%s,1,1,1)""", [ZL_NO, CUS_NO,CUS_NO_NAME,CUS_NO_NAME,AMT])
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 542, in execute
-    sql = self.format_sql(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 510, in format_sql
-    sql = sql % tuple('?' * len(params))
-ValueError: unsupported format character ',' (0x2c) at index 123
-ERROR 2019-10-18 18:19:40,494 basehttp 154 "POST /invoice/ HTTP/1.1" 500 112036
-INFO 2019-10-18 18:20:06,062 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-18 18:24:54,648 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-18 18:43:21,037 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-ERROR 2019-10-18 19:37:18,327 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]在 SET 子句中多次指定了列名 'UP'。在同一 SET 子句中不得为一个列分配多个值。请修改 SET 子句,以确保一个列仅更新一次。如果 SET 子句更新了某视图的多列,那么列名 'UP' 可能会在该视图定义中出现两次。 (264) (SQLExecDirectW); [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 84, in post
-    VALUES('PC',%s,%s,'0000','AQ001',1,1,%s,%s,5,1,1,%s,%s)""", ['PC'+ZL_NO[2::], datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),AMT,AMT,AMT,AMT])
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-django.db.utils.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]在 SET 子句中多次指定了列名 'UP'。在同一 SET 子句中不得为一个列分配多个值。请修改 SET 子句,以确保一个列仅更新一次。如果 SET 子句更新了某视图的多列,那么列名 'UP' 可能会在该视图定义中出现两次。 (264) (SQLExecDirectW); [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
-ERROR 2019-10-18 19:37:18,330 basehttp 154 "POST /invoice/ HTTP/1.1" 500 131455
-ERROR 2019-10-18 19:39:04,222 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 84, in post
-    VALUES('PC',%s,%s,'0000','AQ001',1,%s,%s,%s,5,1,1,%s,%s)""", ['PC'+ZL_NO[2::], datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),AMT,AMT,AMT,AMT])
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 542, in execute
-    sql = self.format_sql(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 510, in format_sql
-    sql = sql % tuple('?' * len(params))
-TypeError: not enough arguments for format string
-ERROR 2019-10-18 19:39:04,224 basehttp 154 "POST /invoice/ HTTP/1.1" 500 113069
-ERROR 2019-10-18 19:41:17,426 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 84, in post
-    VALUES('PC',%s,%s,'0000','AQ001',1,%s,%s,%s,5,1,1,%s,%s)""", ['PC'+ZL_NO[2::], datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),AMT,AMT,AMT])
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 542, in execute
-    sql = self.format_sql(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 510, in format_sql
-    sql = sql % tuple('?' * len(params))
-TypeError: not enough arguments for format string
-ERROR 2019-10-18 19:41:17,428 basehttp 154 "POST /invoice/ HTTP/1.1" 500 112945
-ERROR 2019-10-18 19:41:50,353 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-pyodbc.IntegrityError: ('23000', "[23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]违反了 PRIMARY KEY 约束 'PK__MF_PSS'。不能在对象 'dbo.MF_PSS' 中插入重复键。 (2627) (SQLExecDirectW); [23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]语句已终止。 (3621)")
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 81, in post
-    datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),AMT])
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-django.db.utils.IntegrityError: ('23000', "[23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]违反了 PRIMARY KEY 约束 'PK__MF_PSS'。不能在对象 'dbo.MF_PSS' 中插入重复键。 (2627) (SQLExecDirectW); [23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]语句已终止。 (3621)")
-ERROR 2019-10-18 19:41:50,355 basehttp 154 "POST /invoice/ HTTP/1.1" 500 130619
-ERROR 2019-10-18 19:42:27,658 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]在 SET 子句中多次指定了列名 'UP'。在同一 SET 子句中不得为一个列分配多个值。请修改 SET 子句,以确保一个列仅更新一次。如果 SET 子句更新了某视图的多列,那么列名 'UP' 可能会在该视图定义中出现两次。 (264) (SQLExecDirectW); [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 84, in post
-    VALUES('PC',%s,%s,'0000','AQ001',1,1,%s,%s,5,1,1,%s,%s)""", ['PC'+ZL_NO[2::], datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),AMT,AMT,AMT,AMT])
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-django.db.utils.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]在 SET 子句中多次指定了列名 'UP'。在同一 SET 子句中不得为一个列分配多个值。请修改 SET 子句,以确保一个列仅更新一次。如果 SET 子句更新了某视图的多列,那么列名 'UP' 可能会在该视图定义中出现两次。 (264) (SQLExecDirectW); [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
-ERROR 2019-10-18 19:42:27,659 basehttp 154 "POST /invoice/ HTTP/1.1" 500 131458
-ERROR 2019-10-18 19:43:44,138 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]在 SET 子句中多次指定了列名 'UP'。在同一 SET 子句中不得为一个列分配多个值。请修改 SET 子句,以确保一个列仅更新一次。如果 SET 子句更新了某视图的多列,那么列名 'UP' 可能会在该视图定义中出现两次。 (264) (SQLExecDirectW); [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 84, in post
-    VALUES('PC',%s,%s,'0000','AQ001',1,1,%s,%s,5,1,1,%s,%s)""", ['PC'+ZL_NO[2::], datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),AMT,AMT,AMT,AMT])
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-django.db.utils.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]在 SET 子句中多次指定了列名 'UP'。在同一 SET 子句中不得为一个列分配多个值。请修改 SET 子句,以确保一个列仅更新一次。如果 SET 子句更新了某视图的多列,那么列名 'UP' 可能会在该视图定义中出现两次。 (264) (SQLExecDirectW); [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
-ERROR 2019-10-18 19:43:44,139 basehttp 154 "POST /invoice/ HTTP/1.1" 500 131458
-ERROR 2019-10-18 19:45:12,557 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]在 SET 子句中多次指定了列名 'UP'。在同一 SET 子句中不得为一个列分配多个值。请修改 SET 子句,以确保一个列仅更新一次。如果 SET 子句更新了某视图的多列,那么列名 'UP' 可能会在该视图定义中出现两次。 (264) (SQLExecDirectW); [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 84, in post
-    VALUES('PC',%s,%s,'0000','AQ001',1,1,%s,%s,5,1,1,%s,%s)""", ['PC'+ZL_NO[2::], datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),AMT,AMT,AMT,AMT])
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-django.db.utils.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]在 SET 子句中多次指定了列名 'UP'。在同一 SET 子句中不得为一个列分配多个值。请修改 SET 子句,以确保一个列仅更新一次。如果 SET 子句更新了某视图的多列,那么列名 'UP' 可能会在该视图定义中出现两次。 (264) (SQLExecDirectW); [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
-ERROR 2019-10-18 19:45:12,560 basehttp 154 "POST /invoice/ HTTP/1.1" 500 131458
-ERROR 2019-10-18 19:47:07,834 log 228 Internal Server Error: /invoice/
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]在 SET 子句中多次指定了列名 'EST_ITM'。在同一 SET 子句中不得为一个列分配多个值。请修改 SET 子句,以确保一个列仅更新一次。如果 SET 子句更新了某视图的多列,那么列名 'EST_ITM' 可能会在该视图定义中出现两次。 (264) (SQLExecDirectW); [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
-
-The above exception was the direct cause of the following exception:
-
-Traceback (most recent call last):
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
-    response = get_response(request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
-    response = self.process_exception_by_middleware(e, request)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
-    response = wrapped_callback(request, *callback_args, **callback_kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
-    return self.dispatch(request, *args, **kwargs)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
-    return handler(request, *args, **kwargs)
-  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 108, in post
-    ('LP',%s,1,%s,%s,%s,'AQ001',0,%s,5,1,1,'PC',1,'服務費用',%s,1,1,1)""", [ZL_NO,'PC'+ZL_NO[2::],AMT,AMT,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),CUS_NO])
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
-    return super().execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
-    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
-    return executor(sql, params, many, context)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
-    raise dj_exc_value.with_traceback(traceback) from exc_value
-  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
-    return self.cursor.execute(sql, params)
-  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
-    return self.cursor.execute(sql, params)
-django.db.utils.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]在 SET 子句中多次指定了列名 'EST_ITM'。在同一 SET 子句中不得为一个列分配多个值。请修改 SET 子句,以确保一个列仅更新一次。如果 SET 子句更新了某视图的多列,那么列名 'EST_ITM' 可能会在该视图定义中出现两次。 (264) (SQLExecDirectW); [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
-ERROR 2019-10-18 19:47:07,836 basehttp 154 "POST /invoice/ HTTP/1.1" 500 131500
-INFO 2019-10-18 19:48:39,128 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-18 19:52:03,188 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
-INFO 2019-10-18 20:02:22,372 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+WARNING 2019-10-26 15:31:41,879 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 15:31:41,879 basehttp 154 "POST /invoice/ HTTP/1.1" 403 39
+INFO 2019-10-26 15:35:42,526 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+WARNING 2019-10-26 15:35:46,076 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 15:35:46,076 basehttp 154 "POST /invoice/ HTTP/1.1" 403 39
+WARNING 2019-10-26 15:37:52,221 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 15:37:52,222 basehttp 154 "POST /invoice/ HTTP/1.1" 403 39
+WARNING 2019-10-26 15:39:56,569 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 15:39:56,570 basehttp 154 "POST /invoice/ HTTP/1.1" 403 21
+WARNING 2019-10-26 15:40:06,688 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 15:40:06,688 basehttp 154 "POST /invoice/ HTTP/1.1" 403 39
+INFO 2019-10-26 15:41:08,490 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+WARNING 2019-10-26 15:43:52,321 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 15:43:52,321 basehttp 154 "POST /invoice/ HTTP/1.1" 403 39
+INFO 2019-10-26 15:44:05,338 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+INFO 2019-10-26 15:44:32,840 basehttp 154 "DELETE /invoice/ HTTP/1.1" 200 27
+WARNING 2019-10-26 15:44:36,934 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 15:44:36,934 basehttp 154 "POST /invoice/ HTTP/1.1" 403 21
+WARNING 2019-10-26 15:44:55,973 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 15:44:55,973 basehttp 154 "DELETE /invoice/ HTTP/1.1" 403 21
+WARNING 2019-10-26 15:45:16,193 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 15:45:16,194 basehttp 154 "DELETE /invoice/ HTTP/1.1" 403 21
+INFO 2019-10-26 15:45:32,802 basehttp 154 "DELETE /invoice/ HTTP/1.1" 200 27
+INFO 2019-10-26 15:45:40,839 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+WARNING 2019-10-26 15:45:43,261 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 15:45:43,262 basehttp 154 "POST /invoice/ HTTP/1.1" 403 21
+INFO 2019-10-26 15:45:51,198 basehttp 154 "DELETE /invoice/ HTTP/1.1" 200 27
+INFO 2019-10-26 15:45:53,169 basehttp 154 "DELETE /invoice/ HTTP/1.1" 200 27
+INFO 2019-10-26 15:45:56,463 basehttp 154 "DELETE /invoice/ HTTP/1.1" 200 27
+INFO 2019-10-26 15:45:57,690 basehttp 154 "DELETE /invoice/ HTTP/1.1" 200 27
+INFO 2019-10-26 15:45:58,635 basehttp 154 "DELETE /invoice/ HTTP/1.1" 200 27
+INFO 2019-10-26 15:45:59,382 basehttp 154 "DELETE /invoice/ HTTP/1.1" 200 27
+WARNING 2019-10-26 15:46:39,703 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 15:46:39,704 basehttp 154 "DELETE /invoice/ HTTP/1.1" 403 21
+WARNING 2019-10-26 15:46:40,883 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 15:46:40,883 basehttp 154 "DELETE /invoice/ HTTP/1.1" 403 21
+INFO 2019-10-26 15:46:44,675 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+INFO 2019-10-26 15:46:47,737 basehttp 154 "DELETE /invoice/ HTTP/1.1" 200 27
+WARNING 2019-10-26 15:46:48,995 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 15:46:48,996 basehttp 154 "DELETE /invoice/ HTTP/1.1" 403 21
+INFO 2019-10-26 15:46:52,536 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+WARNING 2019-10-26 15:46:53,809 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 15:46:53,809 basehttp 154 "POST /invoice/ HTTP/1.1" 403 21
+WARNING 2019-10-26 15:46:55,169 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 15:46:55,169 basehttp 154 "POST /invoice/ HTTP/1.1" 403 21
+INFO 2019-10-26 15:47:22,946 basehttp 154 "PUT /invoice/ HTTP/1.1" 200 24
+INFO 2019-10-26 15:47:25,783 basehttp 154 "PUT /invoice/ HTTP/1.1" 200 24
+INFO 2019-10-26 15:47:46,364 basehttp 154 "DELETE /invoice/ HTTP/1.1" 200 27
+WARNING 2019-10-26 15:47:48,702 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 15:47:48,702 basehttp 154 "DELETE /invoice/ HTTP/1.1" 403 21
+INFO 2019-10-26 15:57:11,237 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+WARNING 2019-10-26 15:57:13,888 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 15:57:13,889 basehttp 154 "POST /invoice/ HTTP/1.1" 403 21
+WARNING 2019-10-26 15:57:15,422 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 15:57:15,422 basehttp 154 "POST /invoice/ HTTP/1.1" 403 21
+INFO 2019-10-26 15:57:42,581 basehttp 154 "PUT /invoice/ HTTP/1.1" 200 24
+INFO 2019-10-26 15:57:44,459 basehttp 154 "PUT /invoice/ HTTP/1.1" 200 24
+INFO 2019-10-26 15:58:22,380 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+INFO 2019-10-26 16:00:24,377 basehttp 154 "PUT /invoice/ HTTP/1.1" 200 24
+INFO 2019-10-26 16:01:06,398 basehttp 154 "DELETE /invoice/ HTTP/1.1" 200 27
+WARNING 2019-10-26 16:01:08,375 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 16:01:08,376 basehttp 154 "DELETE /invoice/ HTTP/1.1" 403 21
+INFO 2019-10-26 16:01:41,337 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+WARNING 2019-10-26 16:01:42,339 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 16:01:42,339 basehttp 154 "POST /invoice/ HTTP/1.1" 403 21
+WARNING 2019-10-26 16:01:55,226 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 16:01:55,227 basehttp 154 "POST /invoice/ HTTP/1.1" 403 21
+INFO 2019-10-26 16:10:06,833 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 200 37
+INFO 2019-10-26 16:11:23,976 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 200 37
+INFO 2019-10-26 16:11:51,199 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 200 37
+ERROR 2019-10-26 16:22:50,204 log 228 Internal Server Error: /paymentoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 101, in post
+    ,datetime.datetime.strptime(RP_DD, '%Y-%m-%d'),RP_NO])
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 542, in execute
+    sql = self.format_sql(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 510, in format_sql
+    sql = sql % tuple('?' * len(params))
+TypeError: not all arguments converted during string formatting
+ERROR 2019-10-26 16:22:50,206 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 500 110930
+INFO 2019-10-26 16:24:33,700 basehttp 154 "DELETE /invoice/ HTTP/1.1" 200 27
+WARNING 2019-10-26 16:25:03,979 log 228 Forbidden: /invoice/
+WARNING 2019-10-26 16:25:03,980 basehttp 154 "DELETE /invoice/ HTTP/1.1" 403 48
+INFO 2019-10-26 16:25:17,685 basehttp 154 "DELETE /invoice/ HTTP/1.1" 200 27
+INFO 2019-10-26 16:25:20,901 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+INFO 2019-10-26 16:25:27,596 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 200 37
+INFO 2019-10-26 16:27:43,951 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+WARNING 2019-10-26 16:47:21,302 log 228 Forbidden: /paymentoperation/
+WARNING 2019-10-26 16:47:21,302 basehttp 154 "PUT /paymentoperation/ HTTP/1.1" 403 15
+WARNING 2019-10-26 16:49:22,716 log 228 Forbidden: /paymentoperation/
+WARNING 2019-10-26 16:49:22,716 basehttp 154 "PUT /paymentoperation/ HTTP/1.1" 403 15
+ERROR 2019-10-26 16:49:54,113 log 228 Internal Server Error: /paymentoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
+    return self.cursor.execute(sql, params)
+pyodbc.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'PR_ID' 无效。 (207) (SQLExecDirectW); [42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 180, in put
+    row_AMTN = cursor.execute("""SELECT AMTN_BC FROM TF_MON WHERE RP_NO=%s AND PR_ID='2'""", [RP_NO]).fetchall()[0][0]
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
+    raise dj_exc_value.with_traceback(traceback) from exc_value
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
+    return self.cursor.execute(sql, params)
+django.db.utils.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'PR_ID' 无效。 (207) (SQLExecDirectW); [42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
+ERROR 2019-10-26 16:49:54,117 basehttp 154 "PUT /paymentoperation/ HTTP/1.1" 500 126543
+ERROR 2019-10-26 16:50:35,155 log 228 Internal Server Error: /paymentoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
+    return self.cursor.execute(sql, params)
+pyodbc.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'PR_ID' 无效。 (207) (SQLExecDirectW); [42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 180, in put
+    row_AMTN = cursor.execute("""SELECT AMTN_BC FROM TF_MON WHERE RP_NO=%s AND PR_ID='2'""", [RP_NO]).fetchall()[0][0]
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
+    raise dj_exc_value.with_traceback(traceback) from exc_value
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
+    return self.cursor.execute(sql, params)
+django.db.utils.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'PR_ID' 无效。 (207) (SQLExecDirectW); [42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
+ERROR 2019-10-26 16:50:35,157 basehttp 154 "PUT /paymentoperation/ HTTP/1.1" 500 126546
+ERROR 2019-10-26 16:51:00,696 log 228 Internal Server Error: /paymentoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
+    return self.cursor.execute(sql, params)
+pyodbc.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'PR_ID' 无效。 (207) (SQLExecDirectW); [42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 180, in put
+    row_AMTN = cursor.execute("""SELECT AMTN_BC FROM TF_MON WHERE RP_NO=%s AND PR_ID='2'""", [RP_NO]).fetchall()[0][0]
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
+    raise dj_exc_value.with_traceback(traceback) from exc_value
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
+    return self.cursor.execute(sql, params)
+django.db.utils.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'PR_ID' 无效。 (207) (SQLExecDirectW); [42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
+ERROR 2019-10-26 16:51:00,698 basehttp 154 "PUT /paymentoperation/ HTTP/1.1" 500 126546
+WARNING 2019-10-26 17:00:46,983 log 228 Forbidden: /paymentoperation/
+WARNING 2019-10-26 17:00:46,983 basehttp 154 "PUT /paymentoperation/ HTTP/1.1" 403 21
+WARNING 2019-10-26 17:00:59,051 log 228 Forbidden: /paymentoperation/
+WARNING 2019-10-26 17:00:59,051 basehttp 154 "PUT /paymentoperation/ HTTP/1.1" 403 21
+WARNING 2019-10-26 17:01:35,345 log 228 Forbidden: /paymentoperation/
+WARNING 2019-10-26 17:01:35,345 basehttp 154 "PUT /paymentoperation/ HTTP/1.1" 403 21
+WARNING 2019-10-26 17:02:54,095 log 228 Forbidden: /paymentoperation/
+WARNING 2019-10-26 17:02:54,095 basehttp 154 "PUT /paymentoperation/ HTTP/1.1" 403 21
+INFO 2019-10-26 17:03:37,523 basehttp 154 "PUT /paymentoperation/ HTTP/1.1" 200 36
+INFO 2019-10-26 17:04:55,512 basehttp 154 "PUT /paymentoperation/ HTTP/1.1" 200 36
+WARNING 2019-10-26 17:30:24,738 log 228 Forbidden: /paymentoperation/
+WARNING 2019-10-26 17:30:24,739 basehttp 154 "DELETE /paymentoperation/ HTTP/1.1" 403 15
+ERROR 2019-10-26 17:30:59,238 log 228 Internal Server Error: /paymentoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
+    return self.cursor.execute(sql, params)
+pyodbc.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'RP_ID' 无效。 (207) (SQLExecDirectW); [42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 297, in delete
+    cursor.execute("""DELETE FROM MF_BAC WHERE  BB_NO=%s AND RP_ID='2'""", ['BT'+RP_NO[2::]])
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
+    raise dj_exc_value.with_traceback(traceback) from exc_value
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
+    return self.cursor.execute(sql, params)
+django.db.utils.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'RP_ID' 无效。 (207) (SQLExecDirectW); [42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
+ERROR 2019-10-26 17:30:59,241 basehttp 154 "DELETE /paymentoperation/ HTTP/1.1" 500 126111
+INFO 2019-10-26 17:33:53,187 basehttp 154 "DELETE /paymentoperation/ HTTP/1.1" 200 39
+WARNING 2019-10-26 17:34:25,873 log 228 Forbidden: /paymentoperation/
+WARNING 2019-10-26 17:34:25,874 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 403 36
+WARNING 2019-10-26 17:34:33,716 log 228 Forbidden: /paymentoperation/
+WARNING 2019-10-26 17:34:33,716 basehttp 154 "DELETE /paymentoperation/ HTTP/1.1" 403 15
+INFO 2019-10-26 17:39:32,014 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 200 37
+INFO 2019-10-26 17:39:50,505 basehttp 154 "PUT /paymentoperation/ HTTP/1.1" 200 36
+INFO 2019-10-26 17:40:11,226 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 200 37
+INFO 2019-10-26 17:48:51,576 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 200 37
+INFO 2019-10-26 17:49:04,517 basehttp 154 "DELETE /paymentoperation/ HTTP/1.1" 200 39
+INFO 2019-10-26 17:49:13,853 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 200 37
+INFO 2019-10-26 17:49:17,183 basehttp 154 "DELETE /paymentoperation/ HTTP/1.1" 200 39
+WARNING 2019-10-26 17:49:39,792 log 228 Forbidden: /paymentoperation/
+WARNING 2019-10-26 17:49:39,792 basehttp 154 "DELETE /paymentoperation/ HTTP/1.1" 403 15
+INFO 2019-10-26 18:28:14,669 basehttp 154 "DELETE /paymentoperation/ HTTP/1.1" 200 39
+INFO 2019-10-26 18:28:18,274 basehttp 154 "DELETE /invoice/ HTTP/1.1" 200 27
+INFO 2019-10-26 18:28:21,150 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+WARNING 2019-10-26 18:28:25,458 log 228 Forbidden: /paymentoperation/
+WARNING 2019-10-26 18:28:25,458 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 403 21
+INFO 2019-10-26 18:30:04,306 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 200 37
+INFO 2019-10-26 18:30:19,015 basehttp 154 "PUT /paymentoperation/ HTTP/1.1" 200 36
+WARNING 2019-10-26 18:30:28,836 log 228 Forbidden: /paymentoperation/
+WARNING 2019-10-26 18:30:28,837 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 403 21
+INFO 2019-10-26 18:30:38,718 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 200 37
+INFO 2019-10-26 18:31:02,819 basehttp 154 "DELETE /paymentoperation/ HTTP/1.1" 200 39
+INFO 2019-10-26 18:35:00,176 basehttp 154 "DELETE /paymentoperation/ HTTP/1.1" 200 39
+INFO 2019-10-26 18:35:06,199 basehttp 154 "DELETE /invoice/ HTTP/1.1" 200 27
+INFO 2019-10-26 18:35:09,065 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+INFO 2019-10-26 18:35:32,737 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 200 37
+INFO 2019-10-26 18:35:38,682 basehttp 154 "PUT /paymentoperation/ HTTP/1.1" 200 36
+INFO 2019-10-26 18:35:48,661 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 200 37
+INFO 2019-10-26 18:35:55,766 basehttp 154 "DELETE /paymentoperation/ HTTP/1.1" 200 39
+INFO 2019-10-28 09:04:08,436 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 200 43
+WARNING 2019-10-28 09:05:08,930 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-10-28 09:05:08,930 basehttp 154 "PUT /expectedpoperation/ HTTP/1.1" 403 15
+INFO 2019-10-28 09:05:19,111 basehttp 154 "PUT /expectedpoperation/ HTTP/1.1" 200 42
+INFO 2019-10-28 09:14:12,133 basehttp 154 "PUT /expectedpoperation/ HTTP/1.1" 200 42
+INFO 2019-10-28 09:23:44,854 basehttp 154 "PUT /expectedpoperation/ HTTP/1.1" 200 42
+INFO 2019-10-28 09:24:13,707 basehttp 154 "PUT /expectedpoperation/ HTTP/1.1" 200 42
+WARNING 2019-10-28 09:24:58,993 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-10-28 09:24:58,993 basehttp 154 "PUT /expectedpoperation/ HTTP/1.1" 403 27
+WARNING 2019-10-28 09:28:41,541 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-10-28 09:28:41,542 basehttp 154 "DELETE /expectedpoperation/ HTTP/1.1" 403 15
+WARNING 2019-10-28 09:29:03,803 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-10-28 09:29:03,803 basehttp 154 "DELETE /expectedpoperation/ HTTP/1.1" 403 15
+INFO 2019-10-28 09:30:24,164 basehttp 154 "DELETE /expectedpoperation/ HTTP/1.1" 200 45
+WARNING 2019-10-28 09:34:09,682 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-10-28 09:34:09,682 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 403 27
+INFO 2019-10-28 09:34:29,286 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 200 43
+INFO 2019-10-28 09:34:49,859 basehttp 154 "PUT /expectedpoperation/ HTTP/1.1" 200 42
+WARNING 2019-10-28 09:35:20,642 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-10-28 09:35:20,643 basehttp 154 "DELETE /expectedpoperation/ HTTP/1.1" 403 33
+WARNING 2019-10-28 09:35:37,100 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-10-28 09:35:37,101 basehttp 154 "DELETE /expectedpoperation/ HTTP/1.1" 403 33
+INFO 2019-10-28 09:39:00,461 basehttp 154 "DELETE /expectedpoperation/ HTTP/1.1" 200 45
+INFO 2019-10-28 09:39:06,134 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 200 37
+INFO 2019-10-28 09:39:09,613 basehttp 154 "PUT /paymentoperation/ HTTP/1.1" 200 36
+INFO 2019-10-28 09:39:34,619 basehttp 154 "PUT /paymentoperation/ HTTP/1.1" 200 36
+INFO 2019-10-28 09:39:56,474 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 200 43
+INFO 2019-10-28 09:40:00,198 basehttp 154 "PUT /expectedpoperation/ HTTP/1.1" 200 42
+WARNING 2019-10-28 09:40:35,489 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-10-28 09:40:35,490 basehttp 154 "DELETE /expectedpoperation/ HTTP/1.1" 403 33
+INFO 2019-10-28 09:40:42,079 basehttp 154 "DELETE /expectedpoperation/ HTTP/1.1" 200 45
+WARNING 2019-10-28 13:20:21,682 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-10-28 13:20:21,682 basehttp 154 "DELETE /expectedpoperation/ HTTP/1.1" 403 24
+INFO 2019-10-28 13:20:26,561 basehttp 154 "DELETE /paymentoperation/ HTTP/1.1" 200 39
+WARNING 2019-10-28 13:20:30,181 log 228 Forbidden: /invoice/
+WARNING 2019-10-28 13:20:30,182 basehttp 154 "DELETE /invoice/ HTTP/1.1" 403 48
+WARNING 2019-10-28 13:20:47,121 log 228 Forbidden: /paymentoperation/
+WARNING 2019-10-28 13:20:47,122 basehttp 154 "DELETE /paymentoperation/ HTTP/1.1" 403 15
+INFO 2019-10-28 13:20:55,254 basehttp 154 "DELETE /paymentoperation/ HTTP/1.1" 200 39
+INFO 2019-10-28 13:20:58,635 basehttp 154 "DELETE /invoice/ HTTP/1.1" 200 27
+INFO 2019-10-28 13:21:04,731 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+INFO 2019-10-28 13:27:56,959 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 200 43
+WARNING 2019-10-28 13:27:58,680 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-10-28 13:27:58,680 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 403 24
+INFO 2019-10-28 13:28:21,935 basehttp 154 "PUT /expectedpoperation/ HTTP/1.1" 200 42
+INFO 2019-10-28 13:34:02,390 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+INFO 2019-10-28 13:35:23,918 basehttp 154 "POST /expectedptoperation/ HTTP/1.1" 200 55
+INFO 2019-10-28 15:36:48,198 basehttp 154 "PUT /expectedptoperation/ HTTP/1.1" 200 54
+INFO 2019-10-28 15:41:44,910 basehttp 154 "DELETE /expectedptoperation/ HTTP/1.1" 200 57
+WARNING 2019-10-28 15:41:47,353 log 228 Forbidden: /expectedptoperation/
+WARNING 2019-10-28 15:41:47,353 basehttp 154 "DELETE /expectedptoperation/ HTTP/1.1" 403 15
+ERROR 2019-10-28 17:13:21,613 log 228 Internal Server Error: /invoice/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
+    return func(*args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 594, in fetchall
+    return self.format_rows(self.cursor.fetchall())
+pyodbc.ProgrammingError: No results.  Previous SQL was not a query.
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 25, in get
+    row = cursor.fetchall()
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
+    return func(*args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
+    raise dj_exc_value.with_traceback(traceback) from exc_value
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
+    return func(*args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 594, in fetchall
+    return self.format_rows(self.cursor.fetchall())
+django.db.utils.ProgrammingError: No results.  Previous SQL was not a query.
+ERROR 2019-10-28 17:13:21,617 basehttp 154 "GET /invoice/ HTTP/1.1" 500 103126
+ERROR 2019-10-28 17:14:09,053 log 228 Internal Server Error: /invoice/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
+    return func(*args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 594, in fetchall
+    return self.format_rows(self.cursor.fetchall())
+pyodbc.ProgrammingError: No results.  Previous SQL was not a query.
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 26, in get
+    row = cursor.fetchall()
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
+    return func(*args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
+    raise dj_exc_value.with_traceback(traceback) from exc_value
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 96, in inner
+    return func(*args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 594, in fetchall
+    return self.format_rows(self.cursor.fetchall())
+django.db.utils.ProgrammingError: No results.  Previous SQL was not a query.
+ERROR 2019-10-28 17:14:09,055 basehttp 154 "GET /invoice/ HTTP/1.1" 500 103121
+INFO 2019-10-28 17:14:37,315 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-10-28 17:18:40,853 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-10-28 17:46:37,114 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-10-28 17:47:59,023 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-10-28 17:48:24,002 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-10-29 17:17:19,858 basehttp 154 "GET /sales HTTP/1.1" 301 0
+INFO 2019-10-29 17:17:19,893 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+WARNING 2019-10-29 17:17:19,955 log 228 Not Found: /favicon.ico
+WARNING 2019-10-29 17:17:19,956 basehttp 154 "GET /favicon.ico HTTP/1.1" 404 2790
+INFO 2019-10-30 08:53:29,962 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+WARNING 2019-10-30 09:01:13,540 log 228 Forbidden: /sales/
+WARNING 2019-10-30 09:01:13,540 basehttp 154 "POST /sales/ HTTP/1.1" 403 51
+ERROR 2019-10-30 09:01:22,412 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 82, in post
+    INV_NO,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),datetime.datetime.strptime(LZ_DD, '%Y-%m-%d')])
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 542, in execute
+    sql = self.format_sql(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 510, in format_sql
+    sql = sql % tuple('?' * len(params))
+TypeError: not all arguments converted during string formatting
+ERROR 2019-10-30 09:01:22,414 basehttp 154 "POST /sales/ HTTP/1.1" 500 117057
+ERROR 2019-10-30 09:06:26,281 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 137, in _get_response
+    "returned None instead." % (callback.__module__, view_name)
+ValueError: The view salesinvoice.views.salesView didn't return an HttpResponse object. It returned None instead.
+ERROR 2019-10-30 09:06:26,284 basehttp 154 "POST /sales/ HTTP/1.1" 500 61515
+ERROR 2019-10-30 09:08:20,019 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
+    return self.cursor.execute(sql, params)
+pyodbc.IntegrityError: ('23000', "[23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]违反了 PRIMARY KEY 约束 'PK__MF_PSS'。不能在对象 'dbo.MF_PSS' 中插入重复键。 (2627) (SQLExecDirectW); [23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]语句已终止。 (3621)")
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 71, in post
+    datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),AMT])
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
+    raise dj_exc_value.with_traceback(traceback) from exc_value
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
+    return self.cursor.execute(sql, params)
+django.db.utils.IntegrityError: ('23000', "[23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]违反了 PRIMARY KEY 约束 'PK__MF_PSS'。不能在对象 'dbo.MF_PSS' 中插入重复键。 (2627) (SQLExecDirectW); [23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]语句已终止。 (3621)")
+ERROR 2019-10-30 09:08:20,023 basehttp 154 "POST /sales/ HTTP/1.1" 500 133988
+WARNING 2019-10-30 09:09:07,909 log 228 Forbidden: /sales/
+WARNING 2019-10-30 09:09:07,909 basehttp 154 "POST /sales/ HTTP/1.1" 403 27
+INFO 2019-10-30 09:10:51,862 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+INFO 2019-10-30 09:34:16,513 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+ERROR 2019-10-30 09:40:09,694 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
+    return self.cursor.execute(sql, params)
+pyodbc.IntegrityError: ('23000', "[23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]违反了 PRIMARY KEY 约束 'PK__TF_LZ'。不能在对象 'dbo.TF_LZ' 中插入重复键。 (2627) (SQLExecDirectW); [23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]语句已终止。 (3621)")
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 90, in post
+    ('LZ',%s,1,%s,%s,%s,'AQ001',1,%s,5,1,1,'SA',1,'服務費用',%s,1,1)""",[ZL_NO, 'SA' + ZL_NO[2::],AMT,AMT,datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'), CUS_NO])
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
+    raise dj_exc_value.with_traceback(traceback) from exc_value
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
+    return self.cursor.execute(sql, params)
+django.db.utils.IntegrityError: ('23000', "[23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]违反了 PRIMARY KEY 约束 'PK__TF_LZ'。不能在对象 'dbo.TF_LZ' 中插入重复键。 (2627) (SQLExecDirectW); [23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]语句已终止。 (3621)")
+ERROR 2019-10-30 09:40:09,698 basehttp 154 "POST /sales/ HTTP/1.1" 500 133487
+INFO 2019-10-30 09:40:39,938 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+INFO 2019-10-30 09:41:21,053 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+INFO 2019-10-30 09:45:39,565 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+INFO 2019-10-30 09:56:47,597 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+INFO 2019-10-30 09:58:19,521 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+INFO 2019-10-30 10:01:37,714 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+WARNING 2019-10-30 10:15:39,303 log 228 Forbidden: /sales/
+WARNING 2019-10-30 10:15:39,303 basehttp 154 "PUT /sales/ HTTP/1.1" 403 51
+INFO 2019-10-30 10:15:47,263 basehttp 154 "PUT /sales/ HTTP/1.1" 200 60
+ERROR 2019-10-30 10:26:49,687 log 228 Internal Server Error: /invoice/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 335, in delete
+    req_data = json.loads(request.body.decode())
+  File "e:\12446\appdata\Lib\json\__init__.py", line 354, in loads
+    return _default_decoder.decode(s)
+  File "e:\12446\appdata\Lib\json\decoder.py", line 339, in decode
+    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
+  File "e:\12446\appdata\Lib\json\decoder.py", line 357, in raw_decode
+    raise JSONDecodeError("Expecting value", s, err.value) from None
+json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
+ERROR 2019-10-30 10:26:49,691 basehttp 154 "DELETE /invoice/?ZL_NO=LZS9A300001&ZHANG_ID=3 HTTP/1.1" 500 97827
+WARNING 2019-10-30 10:28:36,918 base 93 Method Not Allowed (DELETE): /sales/
+WARNING 2019-10-30 10:28:36,918 log 228 Method Not Allowed: /sales/
+WARNING 2019-10-30 10:28:36,918 basehttp 154 "DELETE /sales/ HTTP/1.1" 405 0
+WARNING 2019-10-30 10:29:14,406 log 228 Forbidden: /sales/
+WARNING 2019-10-30 10:29:14,406 basehttp 154 "DELETE /sales/ HTTP/1.1" 403 21
+INFO 2019-10-30 10:30:23,997 basehttp 154 "DELETE /sales/ HTTP/1.1" 200 60
+INFO 2019-10-30 10:30:57,516 basehttp 154 "DELETE /sales/ HTTP/1.1" 200 60
+WARNING 2019-10-30 10:31:36,845 log 228 Forbidden: /sales/
+WARNING 2019-10-30 10:31:36,846 basehttp 154 "DELETE /sales/ HTTP/1.1" 403 21
+WARNING 2019-10-30 10:31:41,341 log 228 Forbidden: /sales/
+WARNING 2019-10-30 10:31:41,341 basehttp 154 "DELETE /sales/ HTTP/1.1" 403 21
+ERROR 2019-10-30 10:32:19,311 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
+    return self.cursor.execute(sql, params)
+pyodbc.IntegrityError: ('23000', "[23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]违反了 PRIMARY KEY 约束 'PK__MF_PSS'。不能在对象 'dbo.MF_PSS' 中插入重复键。 (2627) (SQLExecDirectW); [23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]语句已终止。 (3621)")
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 75, in post
+    datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'),AMT])
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
+    raise dj_exc_value.with_traceback(traceback) from exc_value
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
+    return self.cursor.execute(sql, params)
+django.db.utils.IntegrityError: ('23000', "[23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]违反了 PRIMARY KEY 约束 'PK__MF_PSS'。不能在对象 'dbo.MF_PSS' 中插入重复键。 (2627) (SQLExecDirectW); [23000] [Microsoft][SQL Server Native Client 10.0][SQL Server]语句已终止。 (3621)")
+ERROR 2019-10-30 10:32:19,313 basehttp 154 "POST /sales/ HTTP/1.1" 500 133997
+INFO 2019-10-30 10:33:03,845 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+INFO 2019-10-30 10:33:20,400 basehttp 154 "PUT /sales/ HTTP/1.1" 200 60
+INFO 2019-10-30 10:33:29,120 basehttp 154 "DELETE /sales/ HTTP/1.1" 200 63
+INFO 2019-10-30 10:34:34,157 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+INFO 2019-10-30 10:34:36,603 basehttp 154 "PUT /sales/ HTTP/1.1" 200 60
+INFO 2019-10-30 10:34:39,263 basehttp 154 "DELETE /sales/ HTTP/1.1" 200 63
+INFO 2019-10-30 10:34:41,980 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+INFO 2019-10-30 10:56:56,320 basehttp 154 "DELETE /sales/ HTTP/1.1" 200 63
+WARNING 2019-10-30 10:56:58,661 log 228 Forbidden: /sales/
+WARNING 2019-10-30 10:56:58,662 basehttp 154 "DELETE /sales/ HTTP/1.1" 403 21
+INFO 2019-10-30 10:57:02,371 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+INFO 2019-10-30 10:57:05,316 basehttp 154 "PUT /sales/ HTTP/1.1" 200 60
+INFO 2019-10-30 10:57:08,645 basehttp 154 "DELETE /sales/ HTTP/1.1" 200 63
+WARNING 2019-10-30 10:57:09,693 log 228 Forbidden: /sales/
+WARNING 2019-10-30 10:57:09,693 basehttp 154 "DELETE /sales/ HTTP/1.1" 403 21
+INFO 2019-10-30 11:02:59,771 basehttp 154 "GET /proceeds HTTP/1.1" 301 0
+INFO 2019-10-30 11:02:59,783 basehttp 154 "GET /proceeds/ HTTP/1.1" 200 48
+WARNING 2019-10-30 11:36:24,589 log 228 Forbidden: /invoice/
+WARNING 2019-10-30 11:36:24,590 basehttp 154 "POST /invoice/ HTTP/1.1" 403 21
+INFO 2019-10-30 11:37:26,909 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+ERROR 2019-10-30 11:46:51,278 log 228 Internal Server Error: /proceeds
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\utils\deprecation.py", line 90, in __call__
+    response = self.process_request(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\middleware\common.py", line 53, in process_request
+    path = self.get_full_path_with_slash(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\middleware\common.py", line 93, in get_full_path_with_slash
+    'url': request.get_host() + new_path,
+RuntimeError: You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set. Django can't redirect to the slash URL while maintaining POST data. Change your form to point to 127.0.0.1:8000/proceeds/ (note the trailing slash), or set APPEND_SLASH=False in your Django settings.
+ERROR 2019-10-30 11:46:51,279 basehttp 154 "POST /proceeds HTTP/1.1" 500 68450
+ERROR 2019-10-30 11:47:31,389 log 228 Internal Server Error: /proceeds/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 341, in post
+    row_AMT = cursor.execute("SELECT CAST(ISNULL(AMT,0) AS INT ),BIL_NO FROM MF_ARP WHERE BIL_NO=%s",[MF_LZ1]).fetchall()[0][0]
+IndexError: list index out of range
+ERROR 2019-10-30 11:47:31,391 basehttp 154 "POST /proceeds/ HTTP/1.1" 500 85496
+INFO 2019-10-30 13:22:08,693 basehttp 154 "POST /proceeds/ HTTP/1.1" 200 49
+INFO 2019-10-30 13:42:52,852 basehttp 154 "POST /proceeds/ HTTP/1.1" 200 49
+INFO 2019-10-30 13:48:15,671 basehttp 154 "POST /proceeds/ HTTP/1.1" 200 49
+INFO 2019-10-30 13:51:34,234 basehttp 154 "POST /proceeds/ HTTP/1.1" 200 49
+INFO 2019-10-30 13:54:59,562 basehttp 154 "POST /proceeds/ HTTP/1.1" 200 49
+INFO 2019-10-30 13:58:43,435 basehttp 154 "POST /proceeds/ HTTP/1.1" 200 49
+INFO 2019-10-30 14:28:41,733 basehttp 154 "PUT /proceeds/ HTTP/1.1" 200 48
+INFO 2019-10-30 14:30:16,253 basehttp 154 "PUT /proceeds/ HTTP/1.1" 200 48
+INFO 2019-10-30 14:30:17,254 basehttp 154 "PUT /proceeds/ HTTP/1.1" 200 48
+WARNING 2019-10-30 14:33:00,957 log 228 Forbidden: /proceeds/
+WARNING 2019-10-30 14:33:00,958 basehttp 154 "PUT /proceeds/ HTTP/1.1" 403 21
+INFO 2019-10-30 14:33:29,952 basehttp 154 "PUT /proceeds/ HTTP/1.1" 200 48
+ERROR 2019-10-30 14:44:53,711 log 228 Internal Server Error: /proceeds/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 453, in delete
+    row_AMTN_MF_ARP = cursor.execute("""SELECT AMTN FROM MF_ARP WHERE BIL_NO=%s""", [MF_LZ1]).fetchall()[0][0]
+IndexError: list index out of range
+ERROR 2019-10-30 14:44:53,712 basehttp 154 "DELETE /proceeds/ HTTP/1.1" 500 83376
+ERROR 2019-10-30 14:45:59,949 log 228 Internal Server Error: /proceeds/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 453, in delete
+    row_AMTN_MF_ARP = cursor.execute("""SELECT AMTN FROM MF_ARP WHERE BIL_NO=%s""", [MF_LZ1]).fetchall()[0][0]
+IndexError: list index out of range
+ERROR 2019-10-30 14:45:59,951 basehttp 154 "DELETE /proceeds/ HTTP/1.1" 500 83376
+INFO 2019-10-30 14:47:40,695 basehttp 154 "DELETE /proceeds/ HTTP/1.1" 200 51
+INFO 2019-10-30 14:48:14,594 basehttp 154 "DELETE /sales/ HTTP/1.1" 200 63
+INFO 2019-10-30 14:48:20,519 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+INFO 2019-10-30 14:48:27,205 basehttp 154 "POST /proceeds/ HTTP/1.1" 200 49
+INFO 2019-10-30 14:49:02,467 basehttp 154 "PUT /proceeds/ HTTP/1.1" 200 48
+INFO 2019-10-30 14:49:05,827 basehttp 154 "DELETE /proceeds/ HTTP/1.1" 200 51
+INFO 2019-10-30 14:51:28,576 basehttp 154 "DELETE /sales/ HTTP/1.1" 200 63
+INFO 2019-10-30 14:51:31,576 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+INFO 2019-10-30 14:51:33,701 basehttp 154 "POST /proceeds/ HTTP/1.1" 200 49
+INFO 2019-10-30 14:51:37,598 basehttp 154 "PUT /proceeds/ HTTP/1.1" 200 48
+INFO 2019-10-30 14:56:00,429 basehttp 154 "DELETE /proceeds/ HTTP/1.1" 200 51
+WARNING 2019-10-30 15:01:11,277 log 228 Forbidden: /proceeds/
+WARNING 2019-10-30 15:01:11,277 basehttp 154 "DELETE /proceeds/ HTTP/1.1" 403 21
+INFO 2019-10-30 15:01:14,914 basehttp 154 "DELETE /sales/ HTTP/1.1" 200 63
+INFO 2019-10-30 15:01:18,717 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+INFO 2019-10-30 15:01:23,694 basehttp 154 "POST /proceeds/ HTTP/1.1" 200 49
+INFO 2019-10-30 15:01:27,030 basehttp 154 "PUT /proceeds/ HTTP/1.1" 200 48
+INFO 2019-10-30 15:01:32,025 basehttp 154 "DELETE /proceeds/ HTTP/1.1" 200 51
+INFO 2019-10-30 16:11:57,129 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 200 61
+INFO 2019-10-30 18:00:39,949 basehttp 154 "PUT /predictproceeds/ HTTP/1.1" 200 60
+ERROR 2019-10-30 18:08:10,643 log 228 Internal Server Error: /predictproceeds/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
+    return self.cursor.execute(sql, params)
+pyodbc.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'RP_ID' 无效。 (207) (SQLExecDirectW); [42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 626, in delete
+    cursor.execute("""DELETE FROM MF_BAC WHERE BB_NO=%s  AND RP_ID='2'""", ['BT' + RP_NO[2::]])
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
+    raise dj_exc_value.with_traceback(traceback) from exc_value
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
+    return self.cursor.execute(sql, params)
+django.db.utils.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'RP_ID' 无效。 (207) (SQLExecDirectW); [42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
+ERROR 2019-10-30 18:08:10,646 basehttp 154 "DELETE /predictproceeds/ HTTP/1.1" 500 125242
+ERROR 2019-10-30 18:08:34,925 log 228 Internal Server Error: /predictproceeds/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
+    return self.cursor.execute(sql, params)
+pyodbc.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'RP_ID' 无效。 (207) (SQLExecDirectW); [42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 626, in delete
+    cursor.execute("""DELETE FROM MF_BAC WHERE BB_NO=%s  AND RP_ID='2'""", ['BT' + RP_NO[2::]])
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
+    raise dj_exc_value.with_traceback(traceback) from exc_value
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
+    return self.cursor.execute(sql, params)
+django.db.utils.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'RP_ID' 无效。 (207) (SQLExecDirectW); [42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
+ERROR 2019-10-30 18:08:34,928 basehttp 154 "DELETE /predictproceeds/ HTTP/1.1" 500 125223
+INFO 2019-10-30 18:09:15,961 basehttp 154 "DELETE /sales/ HTTP/1.1" 200 63
+INFO 2019-10-30 18:17:25,623 basehttp 154 "DELETE /predictproceeds/ HTTP/1.1" 200 63
+INFO 2019-10-30 18:21:25,330 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 200 61
+INFO 2019-10-30 18:21:37,718 basehttp 154 "PUT /predictproceeds/ HTTP/1.1" 200 60
+INFO 2019-10-30 18:21:49,575 basehttp 154 "DELETE /predictproceeds/ HTTP/1.1" 200 63
+INFO 2019-10-30 18:46:52,323 basehttp 154 "GET /predictproceeds/ HTTP/1.1" 200 48
+INFO 2019-10-30 18:49:24,957 basehttp 154 "GET /predictproceeds/ HTTP/1.1" 200 48
+INFO 2019-10-30 18:52:07,282 basehttp 154 "GET /predictproceeds/ HTTP/1.1" 200 48
+INFO 2019-10-30 18:54:11,644 basehttp 154 "GET /predictproceeds/ HTTP/1.1" 200 48
+INFO 2019-10-30 18:54:19,095 basehttp 154 "GET /predictproceeds/ HTTP/1.1" 200 48
+INFO 2019-10-30 18:55:30,664 basehttp 154 "GET /predictproceeds/ HTTP/1.1" 200 48
+INFO 2019-10-30 18:56:07,419 basehttp 154 "GET /predictproceeds/ HTTP/1.1" 200 48
+INFO 2019-10-30 18:56:39,652 basehttp 154 "GET /predictproceeds/ HTTP/1.1" 200 48
+WARNING 2019-10-30 18:56:57,110 log 228 Forbidden: /predictproceeds/
+WARNING 2019-10-30 18:56:57,110 basehttp 154 "GET /predictproceeds/ HTTP/1.1" 403 21
+INFO 2019-10-30 18:57:26,353 basehttp 154 "GET /predictproceeds/ HTTP/1.1" 200 48
+INFO 2019-10-30 18:57:44,762 basehttp 154 "GET /predictproceeds/ HTTP/1.1" 200 48
+INFO 2019-10-30 18:58:17,613 basehttp 154 "GET /predictproceeds/ HTTP/1.1" 200 48
+INFO 2019-10-30 18:58:46,677 basehttp 154 "GET /predictproceeds/ HTTP/1.1" 200 48
+WARNING 2019-10-30 18:59:32,970 log 228 Forbidden: /predictproceeds/
+WARNING 2019-10-30 18:59:32,971 basehttp 154 "GET /predictproceeds/ HTTP/1.1" 403 21
+ERROR 2019-10-30 19:03:56,102 log 228 Internal Server Error: /predictproceeds/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\middleware.py", line 19, in inner
+    print(name)
+NameError: name 'name' is not defined
+ERROR 2019-10-30 19:03:56,103 basehttp 154 "GET /predictproceeds/ HTTP/1.1" 500 58158
+INFO 2019-10-30 19:04:16,724 basehttp 154 "GET /predictproceeds/ HTTP/1.1" 200 48
+WARNING 2019-10-30 19:04:51,537 log 228 Forbidden: /predictproceeds/
+WARNING 2019-10-30 19:04:51,537 basehttp 154 "GET /predictproceeds/ HTTP/1.1" 403 21
+WARNING 2019-10-30 19:05:54,675 log 228 Forbidden: /predictproceeds/
+WARNING 2019-10-30 19:05:54,676 basehttp 154 "GET /predictproceeds/ HTTP/1.1" 403 21
+WARNING 2019-10-31 11:07:56,865 log 228 Forbidden: /predictproceeds/
+WARNING 2019-10-31 11:07:56,866 basehttp 154 "GET /predictproceeds/ HTTP/1.1" 403 21
+INFO 2019-10-31 11:08:37,578 basehttp 154 "GET /predictproceeds/ HTTP/1.1" 200 48
+INFO 2019-10-31 11:29:48,607 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 200 61
+INFO 2019-10-31 11:34:16,468 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+INFO 2019-10-31 11:34:38,641 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+ERROR 2019-10-31 11:36:32,992 log 228 Internal Server Error: /predictproceeds/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 512, in post
+    row_usr = usr_data(USR, USR_NAME, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
+TypeError: strptime() argument 1 must be str, not None
+ERROR 2019-10-31 11:36:32,995 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 500 83363
+ERROR 2019-10-31 11:39:07,545 log 228 Internal Server Error: /predictpayment/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 702, in post
+    yf_sum =round(yf_sum + cursor.execute("""SELECT AMTN FROM MF_ARP WHERE BIL_NO=%s""", [i["DH"]]).fetchall()[0][0], 4)
+IndexError: list index out of range
+ERROR 2019-10-31 11:39:07,548 basehttp 154 "POST /predictpayment/ HTTP/1.1" 500 84378
+INFO 2019-10-31 13:14:18,613 basehttp 154 "POST /predictpayment/ HTTP/1.1" 200 55
+ERROR 2019-10-31 13:19:29,067 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 225, in delete
+    if int(ZHANG_ID) != 1 and int(ZHANG_ID) != 2:
+TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
+ERROR 2019-10-31 13:19:29,069 basehttp 154 "DELETE /sales/ HTTP/1.1" 500 82324
+WARNING 2019-10-31 13:21:26,048 log 228 Forbidden: /sales/
+WARNING 2019-10-31 13:21:26,049 basehttp 154 "DELETE /sales/ HTTP/1.1" 403 21
+ERROR 2019-10-31 13:21:45,155 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 230, in delete
+    row_TC_MON = examine_ood('TC_MON', 'RP_NO', 'AR' + ZL_NO[2::], 'RP_ID', '1')
+TypeError: 'NoneType' object is not subscriptable
+ERROR 2019-10-31 13:21:45,157 basehttp 154 "DELETE /sales/ HTTP/1.1" 500 82315
+INFO 2019-10-31 13:24:53,745 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+INFO 2019-10-31 13:25:03,975 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+INFO 2019-10-31 13:25:22,981 basehttp 154 "POST /predictpayment/ HTTP/1.1" 200 55
+INFO 2019-10-31 13:26:44,203 basehttp 154 "POST /predictpayment/ HTTP/1.1" 200 55
+WARNING 2019-10-31 13:40:15,886 log 228 Forbidden: /predictpayment/
+WARNING 2019-10-31 13:40:15,888 basehttp 154 "PUT /predictpayment/ HTTP/1.1" 403 18
+INFO 2019-10-31 13:40:40,334 basehttp 154 "PUT /predictpayment/ HTTP/1.1" 200 54
+ERROR 2019-10-31 13:54:42,877 log 228 Internal Server Error: /predictpayment/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
+    return self.cursor.execute(sql, params)
+pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]'RP_ID' 附近有语法错误。 (102) (SQLExecDirectW); [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 891, in delete
+    cursor.execute("""DELETE FROM TF_MON1 WHERE RP_NO=%s RP_ID='1'""", [RP_NO])
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 100, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 68, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 77, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\utils.py", line 89, in __exit__
+    raise dj_exc_value.with_traceback(traceback) from exc_value
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
+    return self.cursor.execute(sql, params)
+django.db.utils.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]'RP_ID' 附近有语法错误。 (102) (SQLExecDirectW); [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
+ERROR 2019-10-31 13:54:42,882 basehttp 154 "DELETE /predictpayment/ HTTP/1.1" 500 127177
+INFO 2019-10-31 13:58:39,440 basehttp 154 "DELETE /predictpayment/ HTTP/1.1" 200 57
+INFO 2019-10-31 13:59:16,898 basehttp 154 "POST /predictpayment/ HTTP/1.1" 200 55
+INFO 2019-10-31 13:59:30,475 basehttp 154 "PUT /predictpayment/ HTTP/1.1" 200 54
+INFO 2019-10-31 13:59:47,133 basehttp 154 "DELETE /predictpayment/ HTTP/1.1" 200 57
+WARNING 2019-11-01 13:19:01,710 log 228 Forbidden: /sales/
+WARNING 2019-11-01 13:19:01,815 basehttp 154 "POST /sales/ HTTP/1.1" 403 77
+INFO 2019-11-01 13:19:18,508 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+WARNING 2019-11-01 13:20:50,209 log 228 Forbidden: /sales/
+WARNING 2019-11-01 13:20:50,209 basehttp 154 "POST /sales/ HTTP/1.1" 403 27
+WARNING 2019-11-01 13:21:24,074 log 228 Forbidden: /sales/
+WARNING 2019-11-01 13:21:24,074 basehttp 154 "POST /sales/ HTTP/1.1" 403 27
+WARNING 2019-11-01 13:22:01,120 log 228 Forbidden: /sales/
+WARNING 2019-11-01 13:22:01,121 basehttp 154 "POST /sales/ HTTP/1.1" 403 77
+WARNING 2019-11-01 13:23:02,571 log 228 Forbidden: /sales/
+WARNING 2019-11-01 13:23:02,571 basehttp 154 "POST /sales/ HTTP/1.1" 403 21
+WARNING 2019-11-01 13:23:15,243 log 228 Forbidden: /sales/
+WARNING 2019-11-01 13:23:15,243 basehttp 154 "POST /sales/ HTTP/1.1" 403 27
+INFO 2019-11-01 13:23:27,865 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+WARNING 2019-11-01 13:31:04,968 log 228 Forbidden: /sales/
+WARNING 2019-11-01 13:31:04,968 basehttp 154 "PUT /sales/ HTTP/1.1" 403 45
+INFO 2019-11-01 13:32:14,626 basehttp 154 "PUT /sales/ HTTP/1.1" 200 60
+ERROR 2019-11-01 13:33:57,082 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 182, in put
+    if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(AMT) is None:
+TypeError: expected string or bytes-like object
+ERROR 2019-11-01 13:33:57,084 basehttp 154 "PUT /sales/ HTTP/1.1" 500 85230
+ERROR 2019-11-01 13:34:35,913 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 182, in put
+    if re.compile('(^-?[0-9](\d+)?(\.\d{1,6})?$)|(^0$)|(^\d\.\d{1,2}$)').match(AMT) is None:
+TypeError: expected string or bytes-like object
+ERROR 2019-11-01 13:34:35,971 basehttp 154 "PUT /sales/ HTTP/1.1" 500 85229
+WARNING 2019-11-01 13:36:30,555 log 228 Forbidden: /sales/
+WARNING 2019-11-01 13:36:30,556 basehttp 154 "PUT /sales/ HTTP/1.1" 403 51
+WARNING 2019-11-01 13:36:54,761 log 228 Forbidden: /sales/
+WARNING 2019-11-01 13:36:54,761 basehttp 154 "PUT /sales/ HTTP/1.1" 403 51
+INFO 2019-11-01 13:43:51,173 basehttp 154 "DELETE /sales/ HTTP/1.1" 200 63
+INFO 2019-11-01 13:49:22,907 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+WARNING 2019-11-01 14:11:30,593 log 228 Forbidden: /proceeds/
+WARNING 2019-11-01 14:11:30,594 basehttp 154 "POST /proceeds/ HTTP/1.1" 403 77
+WARNING 2019-11-01 14:11:39,487 log 228 Forbidden: /proceeds/
+WARNING 2019-11-01 14:11:39,488 basehttp 154 "POST /proceeds/ HTTP/1.1" 403 77
+WARNING 2019-11-01 14:11:49,961 log 228 Forbidden: /proceeds/
+WARNING 2019-11-01 14:11:49,962 basehttp 154 "POST /proceeds/ HTTP/1.1" 403 77
+WARNING 2019-11-01 14:12:55,961 log 228 Forbidden: /proceeds/
+WARNING 2019-11-01 14:12:55,962 basehttp 154 "POST /proceeds/ HTTP/1.1" 403 77
+WARNING 2019-11-01 14:13:08,152 log 228 Forbidden: /proceeds/
+WARNING 2019-11-01 14:13:08,153 basehttp 154 "POST /proceeds/ HTTP/1.1" 403 21
+INFO 2019-11-01 14:13:13,947 basehttp 154 "POST /proceeds/ HTTP/1.1" 200 49
+ERROR 2019-11-01 14:25:21,711 log 228 Internal Server Error: /proceeds/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 403, in put
+    req_data = json.loads(request.body.decode())
+  File "e:\12446\appdata\Lib\json\__init__.py", line 354, in loads
+    return _default_decoder.decode(s)
+  File "e:\12446\appdata\Lib\json\decoder.py", line 339, in decode
+    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
+  File "e:\12446\appdata\Lib\json\decoder.py", line 355, in raw_decode
+    obj, end = self.scan_once(s, idx)
+json.decoder.JSONDecodeError: Expecting ',' delimiter: line 4 column 17 (char 73)
+ERROR 2019-11-01 14:25:21,714 basehttp 154 "PUT /proceeds/ HTTP/1.1" 500 94811
+WARNING 2019-11-01 14:26:31,795 log 228 Forbidden: /proceeds/
+WARNING 2019-11-01 14:26:31,795 basehttp 154 "PUT /proceeds/ HTTP/1.1" 403 21
+ERROR 2019-11-01 14:26:55,614 log 228 Internal Server Error: /proceeds/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 403, in put
+    req_data = json.loads(request.body.decode())
+  File "e:\12446\appdata\Lib\json\__init__.py", line 354, in loads
+    return _default_decoder.decode(s)
+  File "e:\12446\appdata\Lib\json\decoder.py", line 339, in decode
+    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
+  File "e:\12446\appdata\Lib\json\decoder.py", line 355, in raw_decode
+    obj, end = self.scan_once(s, idx)
+json.decoder.JSONDecodeError: Expecting ',' delimiter: line 4 column 17 (char 73)
+ERROR 2019-11-01 14:26:55,616 basehttp 154 "PUT /proceeds/ HTTP/1.1" 500 94808
+WARNING 2019-11-01 14:27:03,962 log 228 Forbidden: /proceeds/
+WARNING 2019-11-01 14:27:03,963 basehttp 154 "PUT /proceeds/ HTTP/1.1" 403 21
+INFO 2019-11-01 14:29:09,194 basehttp 154 "PUT /proceeds/ HTTP/1.1" 200 48
+INFO 2019-11-01 14:34:53,249 basehttp 154 "DELETE /proceeds/ HTTP/1.1" 200 51
+WARNING 2019-11-01 14:49:17,092 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-01 14:49:17,093 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 403 81
+WARNING 2019-11-01 14:49:24,441 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-01 14:49:24,441 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 403 81
+WARNING 2019-11-01 14:49:58,609 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-01 14:49:58,610 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 403 81
+WARNING 2019-11-01 14:50:23,437 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-01 14:50:23,437 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 403 81
+WARNING 2019-11-01 14:50:40,875 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-01 14:50:40,876 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 403 21
+INFO 2019-11-01 14:51:20,192 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 200 61
+WARNING 2019-11-01 15:22:53,636 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-01 15:22:53,636 basehttp 154 "PUT /predictproceeds/ HTTP/1.1" 403 81
+WARNING 2019-11-01 15:23:04,357 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-01 15:23:04,358 basehttp 154 "PUT /predictproceeds/ HTTP/1.1" 403 81
+WARNING 2019-11-01 15:23:12,163 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-01 15:23:12,164 basehttp 154 "PUT /predictproceeds/ HTTP/1.1" 403 21
+INFO 2019-11-01 15:23:16,541 basehttp 154 "PUT /predictproceeds/ HTTP/1.1" 200 60
+INFO 2019-11-01 15:23:30,904 basehttp 154 "PUT /predictproceeds/ HTTP/1.1" 200 60
+INFO 2019-11-01 15:33:26,037 basehttp 154 "DELETE /predictproceeds/ HTTP/1.1" 200 63
+INFO 2019-11-01 15:34:24,768 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 200 61
+INFO 2019-11-01 15:34:43,307 basehttp 154 "DELETE /predictproceeds/ HTTP/1.1" 200 63
+INFO 2019-11-01 15:35:49,807 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 200 61
+WARNING 2019-11-01 16:04:28,431 log 228 Forbidden: /predictpayment/
+WARNING 2019-11-01 16:04:28,432 basehttp 154 "POST /predictpayment/ HTTP/1.1" 403 81
+WARNING 2019-11-01 16:23:08,201 log 228 Forbidden: /predictpayment/
+WARNING 2019-11-01 16:23:08,202 basehttp 154 "POST /predictpayment/ HTTP/1.1" 403 78
+WARNING 2019-11-01 16:23:54,853 log 228 Forbidden: /predictpayment/
+WARNING 2019-11-01 16:23:54,854 basehttp 154 "POST /predictpayment/ HTTP/1.1" 403 77
+WARNING 2019-11-01 16:24:53,507 log 228 Forbidden: /predictpayment/
+WARNING 2019-11-01 16:24:53,507 basehttp 154 "POST /predictpayment/ HTTP/1.1" 403 24
+ERROR 2019-11-01 16:25:57,326 log 228 Internal Server Error: /predictpayment/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 760, in post
+    req_data = json.loads(request.body.decode())
+  File "e:\12446\appdata\Lib\json\__init__.py", line 354, in loads
+    return _default_decoder.decode(s)
+  File "e:\12446\appdata\Lib\json\decoder.py", line 339, in decode
+    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
+  File "e:\12446\appdata\Lib\json\decoder.py", line 355, in raw_decode
+    obj, end = self.scan_once(s, idx)
+json.decoder.JSONDecodeError: Expecting ',' delimiter: line 9 column 19 (char 200)
+ERROR 2019-11-01 16:25:57,329 basehttp 154 "POST /predictpayment/ HTTP/1.1" 500 95999
+WARNING 2019-11-01 16:26:14,247 log 228 Forbidden: /predictpayment/
+WARNING 2019-11-01 16:26:14,247 basehttp 154 "POST /predictpayment/ HTTP/1.1" 403 24
+WARNING 2019-11-01 16:27:08,761 log 228 Forbidden: /predictpayment/
+WARNING 2019-11-01 16:27:08,761 basehttp 154 "POST /predictpayment/ HTTP/1.1" 403 24
+ERROR 2019-11-01 16:27:36,380 log 228 Internal Server Error: /predictpayment/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 811, in post
+    sum_ATM = round(sum_ATM + i["ATM"], 4)
+TypeError: unsupported operand type(s) for +: 'int' and 'str'
+ERROR 2019-11-01 16:27:36,380 basehttp 154 "POST /predictpayment/ HTTP/1.1" 500 84315
+WARNING 2019-11-01 16:28:56,052 log 228 Forbidden: /predictpayment/
+WARNING 2019-11-01 16:28:56,052 basehttp 154 "POST /predictpayment/ HTTP/1.1" 403 21
+WARNING 2019-11-01 16:29:36,517 log 228 Forbidden: /predictpayment/
+WARNING 2019-11-01 16:29:36,517 basehttp 154 "POST /predictpayment/ HTTP/1.1" 403 77
+WARNING 2019-11-01 16:29:51,042 log 228 Forbidden: /predictpayment/
+WARNING 2019-11-01 16:29:51,042 basehttp 154 "POST /predictpayment/ HTTP/1.1" 403 77
+INFO 2019-11-01 16:31:22,212 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+WARNING 2019-11-01 16:31:48,381 log 228 Forbidden: /predictpayment/
+WARNING 2019-11-01 16:31:48,381 basehttp 154 "POST /predictpayment/ HTTP/1.1" 403 77
+WARNING 2019-11-01 16:32:48,505 log 228 Forbidden: /predictpayment/
+WARNING 2019-11-01 16:32:48,506 basehttp 154 "POST /predictpayment/ HTTP/1.1" 403 77
+WARNING 2019-11-01 16:33:19,688 log 228 Forbidden: /predictpayment/
+WARNING 2019-11-01 16:33:19,688 basehttp 154 "POST /predictpayment/ HTTP/1.1" 403 77
+ERROR 2019-11-01 16:34:02,695 log 228 Internal Server Error: /predictpayment/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 68, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\awj\lib\site-packages\django\views\generic\base.py", line 88, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 818, in post
+    sum_ATM = round(sum_ATM + i["ATM"], 4)
+TypeError: unsupported operand type(s) for +: 'int' and 'str'
+ERROR 2019-11-01 16:34:02,698 basehttp 154 "POST /predictpayment/ HTTP/1.1" 500 84445
+INFO 2019-11-01 16:34:47,995 basehttp 154 "POST /predictpayment/ HTTP/1.1" 200 55
+WARNING 2019-11-01 16:45:10,035 log 228 Forbidden: /predictpayment/
+WARNING 2019-11-01 16:45:10,036 basehttp 154 "PUT /predictpayment/ HTTP/1.1" 403 78
+WARNING 2019-11-01 16:45:26,850 log 228 Forbidden: /predictpayment/
+WARNING 2019-11-01 16:45:26,851 basehttp 154 "PUT /predictpayment/ HTTP/1.1" 403 24
+WARNING 2019-11-01 16:45:33,334 log 228 Forbidden: /predictpayment/
+WARNING 2019-11-01 16:45:33,334 basehttp 154 "PUT /predictpayment/ HTTP/1.1" 403 21
+WARNING 2019-11-01 16:45:38,530 log 228 Forbidden: /predictpayment/
+WARNING 2019-11-01 16:45:38,530 basehttp 154 "PUT /predictpayment/ HTTP/1.1" 403 77
+INFO 2019-11-01 16:45:52,084 basehttp 154 "PUT /predictpayment/ HTTP/1.1" 200 54
+INFO 2019-11-01 16:56:10,281 basehttp 154 "DELETE /predictpayment/ HTTP/1.1" 200 57
+INFO 2019-11-01 16:56:39,119 basehttp 154 "POST /predictpayment/ HTTP/1.1" 200 55
+INFO 2019-11-01 16:56:42,481 basehttp 154 "PUT /predictpayment/ HTTP/1.1" 200 54
+INFO 2019-11-01 17:08:00,063 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 200 61
+INFO 2019-11-01 17:09:56,722 basehttp 154 "POST /proceeds/ HTTP/1.1" 200 49
+INFO 2019-11-03 09:31:11,225 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+WARNING 2019-11-03 09:33:59,721 log 228 Forbidden: /invoice/
+WARNING 2019-11-03 09:33:59,722 basehttp 154 "POST /invoice/ HTTP/1.1" 403 77
+WARNING 2019-11-03 09:35:05,095 log 228 Forbidden: /invoice/
+WARNING 2019-11-03 09:35:05,095 basehttp 154 "POST /invoice/ HTTP/1.1" 403 77
+WARNING 2019-11-03 09:35:20,688 log 228 Forbidden: /invoice/
+WARNING 2019-11-03 09:35:20,689 basehttp 154 "POST /invoice/ HTTP/1.1" 403 77
+WARNING 2019-11-03 09:35:52,639 log 228 Forbidden: /invoice/
+WARNING 2019-11-03 09:35:52,640 basehttp 154 "POST /invoice/ HTTP/1.1" 403 77
+INFO 2019-11-03 09:36:15,440 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+WARNING 2019-11-03 09:36:19,691 log 228 Forbidden: /invoice/
+WARNING 2019-11-03 09:36:19,691 basehttp 154 "POST /invoice/ HTTP/1.1" 403 21
+WARNING 2019-11-03 09:36:30,801 log 228 Forbidden: /invoice/
+WARNING 2019-11-03 09:36:30,802 basehttp 154 "POST /invoice/ HTTP/1.1" 403 21
+WARNING 2019-11-03 09:40:34,660 log 228 Forbidden: /predictpayment/
+WARNING 2019-11-03 09:40:34,661 basehttp 154 "PUT /predictpayment/ HTTP/1.1" 403 21
+WARNING 2019-11-03 09:44:21,215 log 228 Forbidden: /invoice/
+WARNING 2019-11-03 09:44:21,215 basehttp 154 "PUT /invoice/ HTTP/1.1" 403 77
+WARNING 2019-11-03 09:44:32,753 log 228 Forbidden: /invoice/
+WARNING 2019-11-03 09:44:32,753 basehttp 154 "PUT /invoice/ HTTP/1.1" 403 51
+INFO 2019-11-03 09:44:40,144 basehttp 154 "PUT /invoice/ HTTP/1.1" 200 24
+INFO 2019-11-03 09:51:45,857 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 200 37
+INFO 2019-11-03 09:52:28,758 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 200 37
+WARNING 2019-11-03 09:56:09,368 log 228 Forbidden: /paymentoperation/
+WARNING 2019-11-03 09:56:09,368 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 403 77
+WARNING 2019-11-03 09:56:30,717 log 228 Forbidden: /paymentoperation/
+WARNING 2019-11-03 09:56:30,717 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 403 21
+WARNING 2019-11-03 09:56:42,839 log 228 Forbidden: /paymentoperation/
+WARNING 2019-11-03 09:56:42,839 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 403 21
+WARNING 2019-11-03 10:09:35,938 log 228 Forbidden: /paymentoperation/
+WARNING 2019-11-03 10:09:35,939 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 403 21
+INFO 2019-11-03 10:10:05,544 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 200 37
+INFO 2019-11-03 10:10:38,281 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 200 37
+INFO 2019-11-03 10:14:17,182 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 200 37
+INFO 2019-11-03 10:14:21,515 basehttp 154 "POST /paymentoperation/ HTTP/1.1" 200 37
+INFO 2019-11-03 10:16:01,412 basehttp 154 "POST /sales/ HTTP/1.1" 200 61
+INFO 2019-11-03 10:16:40,654 basehttp 154 "POST /proceeds/ HTTP/1.1" 200 49
+INFO 2019-11-03 10:16:44,598 basehttp 154 "POST /proceeds/ HTTP/1.1" 200 49
+WARNING 2019-11-03 10:27:20,335 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-11-03 10:27:20,335 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 403 81
+WARNING 2019-11-03 10:27:37,242 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-11-03 10:27:37,243 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 403 21
+INFO 2019-11-03 10:27:42,844 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 200 43
+WARNING 2019-11-03 10:32:17,179 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-11-03 10:32:17,179 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 403 24
+INFO 2019-11-03 10:32:21,650 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 200 43
+INFO 2019-11-03 10:48:13,967 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 200 43
+WARNING 2019-11-03 10:49:09,912 log 228 Forbidden: /expectedptoperation/
+WARNING 2019-11-03 10:49:09,912 basehttp 154 "POST /expectedptoperation/ HTTP/1.1" 403 78
+WARNING 2019-11-03 10:49:19,047 log 228 Forbidden: /expectedptoperation/
+WARNING 2019-11-03 10:49:19,048 basehttp 154 "POST /expectedptoperation/ HTTP/1.1" 403 78
+WARNING 2019-11-03 10:53:16,383 log 228 Forbidden: /invoice/
+WARNING 2019-11-03 10:53:16,383 basehttp 154 "POST /invoice/ HTTP/1.1" 403 21
+INFO 2019-11-03 10:53:23,953 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+INFO 2019-11-03 10:55:32,096 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 200 43
+WARNING 2019-11-03 10:56:30,153 log 228 Forbidden: /expectedptoperation/
+WARNING 2019-11-03 10:56:30,154 basehttp 154 "POST /expectedptoperation/ HTTP/1.1" 403 78
+WARNING 2019-11-03 10:56:50,449 log 228 Forbidden: /expectedptoperation/
+WARNING 2019-11-03 10:56:50,449 basehttp 154 "POST /expectedptoperation/ HTTP/1.1" 403 21
+WARNING 2019-11-03 10:57:13,811 log 228 Forbidden: /expectedptoperation/
+WARNING 2019-11-03 10:57:13,811 basehttp 154 "POST /expectedptoperation/ HTTP/1.1" 403 21
+INFO 2019-11-03 10:58:47,136 basehttp 154 "POST /expectedptoperation/ HTTP/1.1" 200 55
+INFO 2019-11-03 10:59:54,774 basehttp 154 "POST /expectedptoperation/ HTTP/1.1" 200 55
+INFO 2019-11-03 11:07:29,842 basehttp 154 "GET /sales HTTP/1.1" 301 0
+INFO 2019-11-03 11:07:29,865 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+WARNING 2019-11-03 11:07:29,914 log 228 Not Found: /favicon.ico
+WARNING 2019-11-03 11:07:29,915 basehttp 154 "GET /favicon.ico HTTP/1.1" 404 3280
+ERROR 2019-11-03 11:09:07,485 exception 77 Invalid HTTP_HOST header: '192.168.137.1:8000'. You may need to add '192.168.137.1' to ALLOWED_HOSTS.
+WARNING 2019-11-03 11:09:07,524 log 228 Bad Request: /sales/
+WARNING 2019-11-03 11:09:07,525 basehttp 154 "GET /sales/ HTTP/1.1" 400 66679
+ERROR 2019-11-03 11:09:07,706 exception 77 Invalid HTTP_HOST header: '192.168.137.1:8000'. You may need to add '192.168.137.1' to ALLOWED_HOSTS.
+WARNING 2019-11-03 11:09:07,742 log 228 Bad Request: /favicon.ico
+WARNING 2019-11-03 11:09:07,742 basehttp 154 "GET /favicon.ico HTTP/1.1" 400 66668
+INFO 2019-11-03 11:12:55,385 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+WARNING 2019-11-03 11:12:55,413 log 228 Not Found: /favicon.ico
+WARNING 2019-11-03 11:12:55,413 basehttp 154 "GET /favicon.ico HTTP/1.1" 404 3284
+WARNING 2019-11-03 11:13:36,096 log 228 Not Found: /
+WARNING 2019-11-03 11:13:36,096 basehttp 154 "GET / HTTP/1.1" 404 3234
+WARNING 2019-11-03 11:13:53,887 log 228 Not Found: //sales/
+WARNING 2019-11-03 11:13:53,888 basehttp 154 "GET //sales/ HTTP/1.1" 404 3273
+WARNING 2019-11-03 11:13:54,057 log 228 Not Found: /favicon.ico
+WARNING 2019-11-03 11:13:54,058 basehttp 154 "GET /favicon.ico HTTP/1.1" 404 3285
+INFO 2019-11-03 11:14:00,119 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+INFO 2019-11-03 11:15:08,274 basehttp 154 "GET /sales HTTP/1.1" 301 0
+INFO 2019-11-03 11:15:08,485 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+INFO 2019-11-03 11:15:34,578 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+WARNING 2019-11-03 11:15:34,750 log 228 Not Found: /favicon.ico
+WARNING 2019-11-03 11:15:34,751 basehttp 154 "GET /favicon.ico HTTP/1.1" 404 3285
+INFO 2019-11-03 11:15:43,992 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+WARNING 2019-11-03 11:15:44,662 log 228 Not Found: /favicon.ico
+WARNING 2019-11-03 11:15:44,663 basehttp 154 "GET /favicon.ico HTTP/1.1" 404 3285
+INFO 2019-11-03 11:15:46,578 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+WARNING 2019-11-03 11:15:46,910 log 228 Not Found: /favicon.ico
+WARNING 2019-11-03 11:15:46,911 basehttp 154 "GET /favicon.ico HTTP/1.1" 404 3285
+INFO 2019-11-03 11:15:52,647 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+WARNING 2019-11-03 11:15:58,776 log 228 Not Found: /favicon.ico
+WARNING 2019-11-03 11:15:58,776 basehttp 154 "GET /favicon.ico HTTP/1.1" 404 3285
+INFO 2019-11-03 11:16:00,367 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+WARNING 2019-11-03 11:16:03,144 log 228 Not Found: /favicon.ico
+WARNING 2019-11-03 11:16:03,144 basehttp 154 "GET /favicon.ico HTTP/1.1" 404 3285
+INFO 2019-11-03 11:16:04,835 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+WARNING 2019-11-03 11:16:05,110 log 228 Not Found: /favicon.ico
+WARNING 2019-11-03 11:16:05,111 basehttp 154 "GET /favicon.ico HTTP/1.1" 404 3285
+INFO 2019-11-03 11:18:35,084 basehttp 154 "GET /sales/ HTTP/1.0" 200 54
+WARNING 2019-11-03 11:18:38,541 log 228 Not Found: /
+WARNING 2019-11-03 11:18:38,542 basehttp 154 "GET / HTTP/1.0" 404 3234
+INFO 2019-11-03 11:19:31,881 basehttp 154 "GET /invoice/ HTTP/1.0" 200 10
+INFO 2019-11-03 11:20:32,044 basehttp 154 "GET /invoice HTTP/1.1" 301 0
+WARNING 2019-11-03 11:20:41,040 log 228 Not Found: /
+WARNING 2019-11-03 11:20:41,041 basehttp 154 "HEAD / HTTP/1.1" 404 3235
+WARNING 2019-11-03 11:21:39,260 log 228 Not Found: /
+WARNING 2019-11-03 11:21:39,260 basehttp 154 "HEAD / HTTP/1.1" 404 3235
+INFO 2019-11-03 11:29:33,529 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+WARNING 2019-11-03 11:29:33,903 log 228 Not Found: /favicon.ico
+WARNING 2019-11-03 11:29:33,903 basehttp 154 "GET /favicon.ico HTTP/1.1" 404 3285
+INFO 2019-11-03 11:29:41,481 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+INFO 2019-11-05 21:33:18,500 basehttp 154 "GET /predictpayment HTTP/1.1" 301 0
+INFO 2019-11-05 21:33:20,080 basehttp 154 "GET /predictpayment/ HTTP/1.1" 200 54
+WARNING 2019-11-05 21:33:20,108 log 228 Not Found: /favicon.ico
+WARNING 2019-11-05 21:33:20,109 basehttp 154 "GET /favicon.ico HTTP/1.1" 404 3284
+INFO 2019-11-05 21:47:09,730 basehttp 154 "GET /predictpayment/ HTTP/1.1" 200 54
+INFO 2019-11-05 23:00:01,830 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+WARNING 2019-11-05 23:00:01,930 log 228 Not Found: /favicon.ico
+WARNING 2019-11-05 23:00:01,930 basehttp 154 "GET /favicon.ico HTTP/1.1" 404 3280
+INFO 2019-11-08 09:33:38,919 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-08 09:33:49,455 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-08 09:34:47,820 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-08 09:35:01,386 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-08 09:35:27,500 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-08 09:37:33,632 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-08 09:39:12,188 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\setting\dev.py changed, reloading.
+INFO 2019-11-08 09:39:12,927 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-08 09:39:19,867 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\setting\dev.py changed, reloading.
+INFO 2019-11-08 09:39:20,619 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-08 09:39:21,033 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-08 09:40:28,193 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\setting\dev.py changed, reloading.
+INFO 2019-11-08 09:40:28,892 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-08 09:40:38,901 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-08 09:40:47,636 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-09 16:06:19,043 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-09 16:06:58,214 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-09 16:14:47,264 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\urls.py changed, reloading.
+INFO 2019-11-09 16:14:47,923 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-09 16:19:18,966 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\urls.py changed, reloading.
+INFO 2019-11-09 16:19:19,699 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-11 16:16:41,670 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-11 16:17:01,982 log 228 Not Found: /favicon.ico
+WARNING 2019-11-11 16:17:01,982 basehttp 154 "GET /favicon.ico HTTP/1.1" 404 77
+INFO 2019-11-11 16:17:09,641 basehttp 154 "GET /sales HTTP/1.1" 301 0
+INFO 2019-11-11 16:17:09,666 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+WARNING 2019-11-11 16:17:09,922 log 228 Not Found: /favicon.ico
+WARNING 2019-11-11 16:17:09,924 basehttp 154 "GET /favicon.ico HTTP/1.1" 404 77
+INFO 2019-11-11 16:17:14,643 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+INFO 2019-11-11 16:32:32,833 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-11 16:32:33,757 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-11 16:33:46,402 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-11 16:33:47,295 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-11 16:37:45,902 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-11 16:37:47,798 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 25, in get
+    return http.JsonResponse(json.dumps(context))
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\http\response.py", line 552, in __init__
+    'In order to allow non-dict objects to be serialized set the '
+TypeError: In order to allow non-dict objects to be serialized set the safe parameter to False.
+ERROR 2019-11-11 16:37:47,902 basehttp 154 "GET /sales/ HTTP/1.1" 500 27
+ERROR 2019-11-11 16:37:57,001 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 25, in get
+    return http.JsonResponse(json.dumps(context))
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\http\response.py", line 552, in __init__
+    'In order to allow non-dict objects to be serialized set the '
+TypeError: In order to allow non-dict objects to be serialized set the safe parameter to False.
+ERROR 2019-11-11 16:37:57,002 basehttp 154 "GET /sales/ HTTP/1.1" 500 27
+ERROR 2019-11-11 16:38:00,350 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 25, in get
+    return http.JsonResponse(json.dumps(context))
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\http\response.py", line 552, in __init__
+    'In order to allow non-dict objects to be serialized set the '
+TypeError: In order to allow non-dict objects to be serialized set the safe parameter to False.
+ERROR 2019-11-11 16:38:00,350 basehttp 154 "GET /sales/ HTTP/1.1" 500 27
+INFO 2019-11-11 16:38:21,714 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-11 16:38:25,235 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 25, in get
+    return http.JsonResponse(json.dumps(context))
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\http\response.py", line 552, in __init__
+    'In order to allow non-dict objects to be serialized set the '
+TypeError: In order to allow non-dict objects to be serialized set the safe parameter to False.
+ERROR 2019-11-11 16:38:25,238 basehttp 154 "GET /sales/ HTTP/1.1" 500 27
+ERROR 2019-11-11 16:38:47,178 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 25, in get
+    return http.JsonResponse(json.dumps(context))
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\http\response.py", line 552, in __init__
+    'In order to allow non-dict objects to be serialized set the '
+TypeError: In order to allow non-dict objects to be serialized set the safe parameter to False.
+ERROR 2019-11-11 16:38:47,179 basehttp 154 "GET /sales/ HTTP/1.1" 500 27
+WARNING 2019-11-11 16:38:47,252 log 228 Not Found: /favicon.ico
+WARNING 2019-11-11 16:38:47,253 basehttp 154 "GET /favicon.ico HTTP/1.1" 404 77
+INFO 2019-11-11 16:39:02,780 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-11 16:39:05,535 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 25, in get
+    return http.JsonResponse(json.dumps(context))
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\http\response.py", line 552, in __init__
+    'In order to allow non-dict objects to be serialized set the '
+TypeError: In order to allow non-dict objects to be serialized set the safe parameter to False.
+ERROR 2019-11-11 16:39:05,536 basehttp 154 "GET /sales/ HTTP/1.1" 500 27
+ERROR 2019-11-11 16:39:06,768 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 25, in get
+    return http.JsonResponse(json.dumps(context))
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\http\response.py", line 552, in __init__
+    'In order to allow non-dict objects to be serialized set the '
+TypeError: In order to allow non-dict objects to be serialized set the safe parameter to False.
+ERROR 2019-11-11 16:39:06,769 basehttp 154 "GET /sales/ HTTP/1.1" 500 27
+ERROR 2019-11-11 16:39:08,320 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 25, in get
+    return http.JsonResponse(json.dumps(context))
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\http\response.py", line 552, in __init__
+    'In order to allow non-dict objects to be serialized set the '
+TypeError: In order to allow non-dict objects to be serialized set the safe parameter to False.
+ERROR 2019-11-11 16:39:08,320 basehttp 154 "GET /sales/ HTTP/1.1" 500 27
+INFO 2019-11-11 16:39:28,518 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-11 16:39:30,999 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+INFO 2019-11-12 14:40:17,795 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-12 14:40:34,826 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\middleware.py", line 10, in inner
+    req_data = json.loads(request.body.decode())
+  File "e:\12446\appdata\Lib\json\__init__.py", line 354, in loads
+    return _default_decoder.decode(s)
+  File "e:\12446\appdata\Lib\json\decoder.py", line 339, in decode
+    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
+  File "e:\12446\appdata\Lib\json\decoder.py", line 357, in raw_decode
+    raise JSONDecodeError("Expecting value", s, err.value) from None
+json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
+ERROR 2019-11-12 14:40:34,959 basehttp 154 "GET /sales/ HTTP/1.1" 500 27
+ERROR 2019-11-12 14:40:34,991 log 228 Internal Server Error: /favicon.ico
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\middleware.py", line 10, in inner
+    req_data = json.loads(request.body.decode())
+  File "e:\12446\appdata\Lib\json\__init__.py", line 354, in loads
+    return _default_decoder.decode(s)
+  File "e:\12446\appdata\Lib\json\decoder.py", line 339, in decode
+    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
+  File "e:\12446\appdata\Lib\json\decoder.py", line 357, in raw_decode
+    raise JSONDecodeError("Expecting value", s, err.value) from None
+json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
+ERROR 2019-11-12 14:40:34,992 basehttp 154 "GET /favicon.ico HTTP/1.1" 500 27
+INFO 2019-11-12 14:41:55,920 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-12 14:41:59,326 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\middleware.py", line 10, in inner
+    req_data = json.loads(request.body.decode())
+  File "e:\12446\appdata\Lib\json\__init__.py", line 354, in loads
+    return _default_decoder.decode(s)
+  File "e:\12446\appdata\Lib\json\decoder.py", line 339, in decode
+    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
+  File "e:\12446\appdata\Lib\json\decoder.py", line 357, in raw_decode
+    raise JSONDecodeError("Expecting value", s, err.value) from None
+json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
+ERROR 2019-11-12 14:41:59,327 basehttp 154 "GET /sales/ HTTP/1.1" 500 73496
+ERROR 2019-11-12 14:41:59,575 log 228 Internal Server Error: /favicon.ico
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\middleware.py", line 10, in inner
+    req_data = json.loads(request.body.decode())
+  File "e:\12446\appdata\Lib\json\__init__.py", line 354, in loads
+    return _default_decoder.decode(s)
+  File "e:\12446\appdata\Lib\json\decoder.py", line 339, in decode
+    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
+  File "e:\12446\appdata\Lib\json\decoder.py", line 357, in raw_decode
+    raise JSONDecodeError("Expecting value", s, err.value) from None
+json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
+ERROR 2019-11-12 14:41:59,577 basehttp 154 "GET /favicon.ico HTTP/1.1" 500 73597
+INFO 2019-11-12 14:44:10,525 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-12 14:44:14,891 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\middleware.py", line 10, in inner
+    req_data = json.loads(request.body.decode())
+  File "e:\12446\appdata\Lib\json\__init__.py", line 354, in loads
+    return _default_decoder.decode(s)
+  File "e:\12446\appdata\Lib\json\decoder.py", line 339, in decode
+    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
+  File "e:\12446\appdata\Lib\json\decoder.py", line 357, in raw_decode
+    raise JSONDecodeError("Expecting value", s, err.value) from None
+json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
+ERROR 2019-11-12 14:44:14,892 basehttp 154 "GET /sales/ HTTP/1.1" 500 73537
+ERROR 2019-11-12 14:44:15,024 log 228 Internal Server Error: /favicon.ico
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\middleware.py", line 10, in inner
+    req_data = json.loads(request.body.decode())
+  File "e:\12446\appdata\Lib\json\__init__.py", line 354, in loads
+    return _default_decoder.decode(s)
+  File "e:\12446\appdata\Lib\json\decoder.py", line 339, in decode
+    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
+  File "e:\12446\appdata\Lib\json\decoder.py", line 357, in raw_decode
+    raise JSONDecodeError("Expecting value", s, err.value) from None
+json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
+ERROR 2019-11-12 14:44:15,025 basehttp 154 "GET /favicon.ico HTTP/1.1" 500 73638
+INFO 2019-11-12 14:44:44,179 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 14:44:45,988 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+WARNING 2019-11-12 14:44:46,053 log 228 Not Found: /favicon.ico
+WARNING 2019-11-12 14:44:46,054 basehttp 154 "GET /favicon.ico HTTP/1.1" 404 3280
+INFO 2019-11-12 14:45:20,751 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\middleware.py changed, reloading.
+INFO 2019-11-12 14:45:21,715 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 14:46:22,467 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 14:46:37,151 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+INFO 2019-11-12 14:47:12,111 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 14:47:14,473 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+INFO 2019-11-12 14:47:29,166 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 14:47:31,456 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+INFO 2019-11-12 14:47:51,244 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 14:47:53,102 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+INFO 2019-11-12 14:48:18,072 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 14:48:21,911 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+INFO 2019-11-12 14:48:41,055 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 14:48:43,306 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+INFO 2019-11-12 14:50:12,409 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\middleware.py changed, reloading.
+INFO 2019-11-12 14:50:13,187 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-12 14:50:55,463 log 228 Forbidden: /sales/
+WARNING 2019-11-12 14:50:55,464 basehttp 154 "GET /sales/ HTTP/1.1" 403 27
+INFO 2019-11-12 14:52:22,141 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\middleware.py changed, reloading.
+INFO 2019-11-12 14:52:23,594 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 14:52:51,587 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+INFO 2019-11-12 14:54:17,547 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\middleware.py changed, reloading.
+INFO 2019-11-12 14:54:18,321 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 14:56:21,151 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\middleware.py changed, reloading.
+INFO 2019-11-12 14:56:22,161 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 14:56:34,244 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-12 14:57:09,461 log 228 Internal Server Error: /invoice/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\middleware.py", line 11, in inner
+    req_data = json.loads(request.body.decode())
+  File "e:\12446\appdata\Lib\json\__init__.py", line 354, in loads
+    return _default_decoder.decode(s)
+  File "e:\12446\appdata\Lib\json\decoder.py", line 339, in decode
+    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
+  File "e:\12446\appdata\Lib\json\decoder.py", line 357, in raw_decode
+    raise JSONDecodeError("Expecting value", s, err.value) from None
+json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
+ERROR 2019-11-12 14:57:09,463 basehttp 154 "POST /invoice/ HTTP/1.1" 500 88452
+INFO 2019-11-12 14:58:18,482 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-12 14:58:21,405 log 228 Internal Server Error: /invoice/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\middleware.py", line 12, in inner
+    req_data = json.loads(request.body.decode())
+  File "e:\12446\appdata\Lib\json\__init__.py", line 354, in loads
+    return _default_decoder.decode(s)
+  File "e:\12446\appdata\Lib\json\decoder.py", line 339, in decode
+    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
+  File "e:\12446\appdata\Lib\json\decoder.py", line 357, in raw_decode
+    raise JSONDecodeError("Expecting value", s, err.value) from None
+json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
+ERROR 2019-11-12 14:58:21,408 basehttp 154 "POST /invoice/ HTTP/1.1" 500 88493
+INFO 2019-11-12 15:00:00,823 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-12 15:00:03,448 log 228 Internal Server Error: /invoice/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\middleware.py", line 13, in inner
+    req_data = json.loads(request.body.decode())
+  File "e:\12446\appdata\Lib\json\__init__.py", line 354, in loads
+    return _default_decoder.decode(s)
+  File "e:\12446\appdata\Lib\json\decoder.py", line 339, in decode
+    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
+  File "e:\12446\appdata\Lib\json\decoder.py", line 357, in raw_decode
+    raise JSONDecodeError("Expecting value", s, err.value) from None
+json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
+ERROR 2019-11-12 15:00:03,449 basehttp 154 "POST /invoice/ HTTP/1.1" 500 88529
+INFO 2019-11-12 15:00:47,374 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+INFO 2019-11-12 15:00:56,262 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 15:00:57,943 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+ERROR 2019-11-12 15:01:50,029 log 228 Internal Server Error: /invoice/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 69, in post
+    print(ZL_NO[:3])
+TypeError: 'NoneType' object is not subscriptable
+ERROR 2019-11-12 15:01:50,036 basehttp 154 "POST /invoice/ HTTP/1.1" 500 84293
+INFO 2019-11-12 15:01:58,863 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-12 15:02:02,319 log 228 Internal Server Error: /invoice/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 69, in post
+    print(ZL_NO[:3])
+TypeError: 'NoneType' object is not subscriptable
+ERROR 2019-11-12 15:02:02,320 basehttp 154 "POST /invoice/ HTTP/1.1" 500 84293
+INFO 2019-11-12 15:02:57,081 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-12 15:03:01,095 log 228 Internal Server Error: /invoice/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 69, in post
+    print(ZL_NO[:3])
+TypeError: 'NoneType' object is not subscriptable
+ERROR 2019-11-12 15:03:01,097 basehttp 154 "POST /invoice/ HTTP/1.1" 500 84293
+INFO 2019-11-12 15:03:57,379 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-12 15:04:00,651 log 228 Internal Server Error: /invoice/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\middleware.py", line 14, in inner
+    user = req_data.get("user")  # 用户名
+AttributeError: 'str' object has no attribute 'get'
+ERROR 2019-11-12 15:04:00,655 basehttp 154 "POST /invoice/ HTTP/1.1" 500 58094
+INFO 2019-11-12 15:04:57,318 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-12 15:05:00,700 log 228 Internal Server Error: /sales/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\middleware.py", line 14, in inner
+    user = req_data.get("user")  # 用户名
+AttributeError: 'str' object has no attribute 'get'
+ERROR 2019-11-12 15:05:00,701 basehttp 154 "GET /sales/ HTTP/1.1" 500 58071
+INFO 2019-11-12 15:05:14,607 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 15:05:16,907 basehttp 154 "GET /sales/ HTTP/1.1" 200 54
+ERROR 2019-11-12 15:05:58,700 log 228 Internal Server Error: /invoice/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 69, in post
+    print(ZL_NO[:3])
+TypeError: 'NoneType' object is not subscriptable
+ERROR 2019-11-12 15:05:58,701 basehttp 154 "POST /invoice/ HTTP/1.1" 500 84293
+INFO 2019-11-12 15:06:40,324 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-12 15:06:43,978 log 228 Internal Server Error: /invoice/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 71, in post
+    if ZL_NO[:3] != 'LPF' or len(ZL_NO) != 10:
+TypeError: 'NoneType' object is not subscriptable
+ERROR 2019-11-12 15:06:43,980 basehttp 154 "POST /invoice/ HTTP/1.1" 500 84325
+INFO 2019-11-12 15:06:56,069 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py changed, reloading.
+INFO 2019-11-12 15:06:57,864 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 15:08:48,355 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-12 15:09:09,420 log 228 Forbidden: /invoice/
+WARNING 2019-11-12 15:09:09,421 basehttp 154 "POST /invoice/ HTTP/1.1" 403 16
+INFO 2019-11-12 15:10:23,366 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\middleware.py changed, reloading.
+INFO 2019-11-12 15:10:24,156 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 15:11:13,161 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-12 15:11:16,082 log 228 Forbidden: /invoice/
+WARNING 2019-11-12 15:11:16,083 basehttp 154 "POST /invoice/ HTTP/1.1" 403 27
+INFO 2019-11-12 15:12:53,101 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\middleware.py changed, reloading.
+INFO 2019-11-12 15:12:53,904 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 15:13:17,786 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-12 15:13:26,023 log 228 Forbidden: /invoice/
+WARNING 2019-11-12 15:13:26,024 basehttp 154 "POST /invoice/ HTTP/1.1" 403 27
+INFO 2019-11-12 15:14:16,843 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-12 15:14:19,319 log 228 Forbidden: /invoice/
+WARNING 2019-11-12 15:14:19,320 basehttp 154 "POST /invoice/ HTTP/1.1" 403 27
+INFO 2019-11-12 15:15:41,239 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-12 15:15:44,018 log 228 Forbidden: /invoice/
+WARNING 2019-11-12 15:15:44,018 basehttp 154 "POST /invoice/ HTTP/1.1" 403 21
+WARNING 2019-11-12 15:15:52,636 log 228 Forbidden: /invoice/
+WARNING 2019-11-12 15:15:52,638 basehttp 154 "POST /invoice/ HTTP/1.1" 403 21
+WARNING 2019-11-12 15:16:08,616 log 228 Forbidden: /invoice/
+WARNING 2019-11-12 15:16:08,616 basehttp 154 "POST /invoice/ HTTP/1.1" 403 21
+WARNING 2019-11-12 15:16:21,275 log 228 Forbidden: /invoice/
+WARNING 2019-11-12 15:16:21,276 basehttp 154 "POST /invoice/ HTTP/1.1" 403 18
+INFO 2019-11-12 15:17:29,140 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 15:17:51,169 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+WARNING 2019-11-12 15:18:49,024 log 228 Forbidden: /invoice/
+WARNING 2019-11-12 15:18:49,025 basehttp 154 "DELETE /invoice/ HTTP/1.1" 403 21
+WARNING 2019-11-12 15:19:43,121 log 228 Forbidden: /invoice/
+WARNING 2019-11-12 15:19:43,121 basehttp 154 "DELETE /invoice/ HTTP/1.1" 403 21
+INFO 2019-11-12 15:20:26,760 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-12 15:20:29,834 log 228 Forbidden: /invoice/
+WARNING 2019-11-12 15:20:29,835 basehttp 154 "DELETE /invoice/ HTTP/1.1" 403 15
+WARNING 2019-11-12 15:20:49,384 log 228 Forbidden: /invoice/
+WARNING 2019-11-12 15:20:49,384 basehttp 154 "DELETE /invoice/ HTTP/1.1" 403 21
+INFO 2019-11-12 15:21:19,639 basehttp 154 "DELETE /invoice/ HTTP/1.1" 200 27
+INFO 2019-11-12 15:22:23,031 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\middleware.py changed, reloading.
+INFO 2019-11-12 15:22:24,106 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 15:37:34,924 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-12 15:38:19,360 log 228 Forbidden (CSRF cookie not set.): /invoice/
+WARNING 2019-11-12 15:38:19,361 basehttp 154 "POST /invoice/ HTTP/1.1" 403 2868
+INFO 2019-11-12 15:38:59,231 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 15:39:03,593 basehttp 154 "POST /invoice/ HTTP/1.1" 200 25
+INFO 2019-11-12 15:39:12,325 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-12 15:39:15,126 log 228 Forbidden (CSRF cookie not set.): /invoice/
+WARNING 2019-11-12 15:39:15,128 basehttp 154 "POST /invoice/ HTTP/1.1" 403 2868
+WARNING 2019-11-12 15:40:51,787 log 228 Forbidden: /invoice/
+WARNING 2019-11-12 15:40:51,787 basehttp 154 "PUT /invoice/ HTTP/1.1" 403 18
+WARNING 2019-11-12 15:41:12,896 log 228 Forbidden (CSRF cookie not set.): /invoice/
+WARNING 2019-11-12 15:41:12,896 basehttp 154 "PUT /invoice/ HTTP/1.1" 403 2868
+WARNING 2019-11-12 15:44:11,969 log 228 Forbidden (CSRF cookie not set.): /invoice/
+WARNING 2019-11-12 15:44:11,969 basehttp 154 "PUT /invoice/ HTTP/1.1" 403 2868
+WARNING 2019-11-12 15:50:04,312 log 228 Forbidden (CSRF cookie not set.): /invoice/
+WARNING 2019-11-12 15:50:04,313 basehttp 154 "PUT /invoice/ HTTP/1.1" 403 2868
+INFO 2019-11-12 15:50:17,119 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-12 15:53:05,171 log 228 Forbidden (CSRF cookie not set.): /invoice/
+WARNING 2019-11-12 15:53:05,172 basehttp 154 "PUT /invoice/ HTTP/1.1" 403 2868
+WARNING 2019-11-12 15:53:44,032 log 228 Forbidden (CSRF cookie not set.): /invoice/
+WARNING 2019-11-12 15:53:44,033 basehttp 154 "PUT /invoice/ HTTP/1.1" 403 2868
+INFO 2019-11-12 15:54:05,117 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-12 15:54:30,324 log 228 Forbidden (CSRF cookie not set.): /invoice/
+WARNING 2019-11-12 15:54:30,325 basehttp 154 "PUT /invoice/ HTTP/1.1" 403 2868
+INFO 2019-11-12 16:19:49,910 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 16:20:27,691 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-12 16:22:12,626 log 228 Forbidden (CSRF cookie not set.): /invoice/
+WARNING 2019-11-12 16:22:12,627 basehttp 154 "POST /invoice/ HTTP/1.1" 403 2868
+INFO 2019-11-12 16:22:39,263 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 16:23:05,093 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-12 16:23:21,755 log 228 Forbidden: /invoice/
+WARNING 2019-11-12 16:23:21,755 basehttp 154 "POST /invoice/ HTTP/1.1" 403 21
+INFO 2019-11-12 16:24:40,820 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 200 43
+INFO 2019-11-12 16:44:35,511 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 200 43
+ERROR 2019-11-12 16:44:51,952 log 228 Internal Server Error: /expectedpoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\sql_server\pyodbc\base.py", line 536, in execute
+    return self.cursor.execute(sql, params)
+pyodbc.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'CHK_MAN' 无效。 (207) (SQLExecDirectW); [42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'CLS_DATE' 无效。 (207); [42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 395, in post
+    row_usr = usr_data(USR, USR_NAME, datetime.datetime.strptime(RP_DD, '%Y-%m-%d'))
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\usr_data.py", line 13, in usr_data
+    cursor.execute("INSERT INTO SALM(SAL_NO,[NAME],USR,CHK_MAN,CLS_DATE,SYS_DATE)VALUES (%s,%s,'ADMIN','ADMIN',%s,%s)", [USR, USR_NAME,DATE,DATE])
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 99, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 67, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 76, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\utils.py", line 89, in __exit__
+    raise dj_exc_value.with_traceback(traceback) from exc_value
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\sql_server\pyodbc\base.py", line 536, in execute
+    return self.cursor.execute(sql, params)
+django.db.utils.ProgrammingError: ('42S22', "[42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'CHK_MAN' 无效。 (207) (SQLExecDirectW); [42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]列名 'CLS_DATE' 无效。 (207); [42S22] [Microsoft][SQL Server Native Client 10.0][SQL Server]无法预定义语句。 (8180)")
+ERROR 2019-11-12 16:44:51,956 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 500 133940
+INFO 2019-11-12 16:48:07,723 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\usr_data.py changed, reloading.
+INFO 2019-11-12 16:48:08,489 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 16:49:09,677 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 16:49:14,521 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 200 43
+INFO 2019-11-12 16:51:02,232 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 17:01:00,950 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-12 17:01:01,942 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 17:05:43,200 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-12 17:05:44,417 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 17:06:24,227 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-12 17:06:25,264 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 17:09:35,337 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-12 17:09:36,256 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 17:10:12,277 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-12 17:10:13,064 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 17:11:18,793 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-12 17:13:01,256 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-12 17:13:04,170 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-11-12 17:13:04,171 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 403 24
+WARNING 2019-11-12 17:13:11,723 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-11-12 17:13:11,725 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 403 21
+INFO 2019-11-13 09:19:57,023 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-13 09:21:04,056 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-11-13 09:21:04,056 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 403 30
+ERROR 2019-11-13 09:21:16,725 log 228 Internal Server Error: /expectedpoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 82, in _execute
+    return self.cursor.execute(sql)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\sql_server\pyodbc\base.py", line 536, in execute
+    return self.cursor.execute(sql, params)
+pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]'=' 附近有语法错误。 (102) (SQLExecDirectW)")
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 388, in post
+    sum_CACC_NO=et_CACC_NO(CACC_NO)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\et_CACC_NO.py", line 21, in et_CACC_NO
+    SUM_CACC_NO = cursor.execute(sql).fetchall()[0][0]
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 99, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 67, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 76, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\utils.py", line 89, in __exit__
+    raise dj_exc_value.with_traceback(traceback) from exc_value
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 82, in _execute
+    return self.cursor.execute(sql)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\sql_server\pyodbc\base.py", line 536, in execute
+    return self.cursor.execute(sql, params)
+django.db.utils.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]'=' 附近有语法错误。 (102) (SQLExecDirectW)")
+ERROR 2019-11-13 09:21:16,728 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 500 129920
+INFO 2019-11-13 09:22:20,447 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-13 09:22:24,316 log 228 Internal Server Error: /expectedpoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 82, in _execute
+    return self.cursor.execute(sql)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\sql_server\pyodbc\base.py", line 536, in execute
+    return self.cursor.execute(sql, params)
+pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]'=' 附近有语法错误。 (102) (SQLExecDirectW)")
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 388, in post
+    sum_CACC_NO=et_CACC_NO(CACC_NO)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\et_CACC_NO.py", line 22, in et_CACC_NO
+    SUM_CACC_NO = cursor.execute(sql).fetchall()[0][0]
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 99, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 67, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 76, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\utils.py", line 89, in __exit__
+    raise dj_exc_value.with_traceback(traceback) from exc_value
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 82, in _execute
+    return self.cursor.execute(sql)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\sql_server\pyodbc\base.py", line 536, in execute
+    return self.cursor.execute(sql, params)
+django.db.utils.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]'=' 附近有语法错误。 (102) (SQLExecDirectW)")
+ERROR 2019-11-13 09:22:24,319 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 500 129926
+WARNING 2019-11-13 09:22:54,159 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-11-13 09:22:54,160 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 403 30
+INFO 2019-11-13 09:23:11,800 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\et_CACC_NO.py changed, reloading.
+INFO 2019-11-13 09:23:12,555 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 09:23:18,851 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-13 09:23:21,004 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-11-13 09:23:21,004 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 403 30
+ERROR 2019-11-13 09:23:29,487 log 228 Internal Server Error: /expectedpoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 82, in _execute
+    return self.cursor.execute(sql)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\sql_server\pyodbc\base.py", line 536, in execute
+    return self.cursor.execute(sql, params)
+pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]'=' 附近有语法错误。 (102) (SQLExecDirectW)")
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 388, in post
+    sum_CACC_NO=et_CACC_NO(CACC_NO)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\et_CACC_NO.py", line 22, in et_CACC_NO
+    SUM_CACC_NO = cursor.execute(sql).fetchall()[0][0]
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 99, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 67, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 76, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\utils.py", line 89, in __exit__
+    raise dj_exc_value.with_traceback(traceback) from exc_value
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 82, in _execute
+    return self.cursor.execute(sql)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\sql_server\pyodbc\base.py", line 536, in execute
+    return self.cursor.execute(sql, params)
+django.db.utils.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]'=' 附近有语法错误。 (102) (SQLExecDirectW)")
+ERROR 2019-11-13 09:23:29,490 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 500 129912
+INFO 2019-11-13 09:23:58,046 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-13 09:24:00,932 log 228 Internal Server Error: /expectedpoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 389, in post
+    if sum_CACC_NO <=0:
+TypeError: '<=' not supported between instances of 'HttpResponseForbidden' and 'int'
+ERROR 2019-11-13 09:24:00,933 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 500 85820
+INFO 2019-11-13 09:26:39,132 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-13 09:26:56,637 log 228 Internal Server Error: /expectedpoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 406, in post
+    Acc_No_km = cursor.execute("""SELECT ISNULL(Acc_No,'') FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
+IndexError: list index out of range
+ERROR 2019-11-13 09:26:56,641 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 500 86319
+INFO 2019-11-13 09:28:39,553 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-13 09:28:42,917 log 228 Internal Server Error: /expectedpoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 406, in post
+    Acc_No_km = cursor.execute("""SELECT ISNULL(Acc_No,'') FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
+IndexError: list index out of range
+ERROR 2019-11-13 09:28:42,918 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 500 86514
+INFO 2019-11-13 09:29:10,905 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-13 09:29:15,364 log 228 Internal Server Error: /expectedpoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 406, in post
+    Acc_No_km = cursor.execute("""SELECT ISNULL(Acc_No,'') FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
+IndexError: list index out of range
+ERROR 2019-11-13 09:29:15,365 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 500 86514
+INFO 2019-11-13 09:32:18,835 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-13 09:32:22,715 log 228 Internal Server Error: /expectedpoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 406, in post
+    Acc_No_km = cursor.execute("""SELECT ISNULL(Acc_No,'') FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
+IndexError: list index out of range
+ERROR 2019-11-13 09:32:22,717 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 500 86514
+INFO 2019-11-13 09:34:12,207 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-13 09:34:15,270 log 228 Internal Server Error: /expectedpoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 408, in post
+    Acc_No_km = cursor.execute("""SELECT ISNULL(Acc_No,'') FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
+IndexError: list index out of range
+ERROR 2019-11-13 09:34:15,272 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 500 86514
+INFO 2019-11-13 09:34:43,791 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-13 09:34:48,049 log 228 Internal Server Error: /expectedpoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 409, in post
+    Acc_No_km = cursor.execute("""SELECT ISNULL(Acc_No,'') FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
+IndexError: list index out of range
+ERROR 2019-11-13 09:34:48,050 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 500 86514
+INFO 2019-11-13 09:35:15,342 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-13 09:35:18,687 log 228 Internal Server Error: /expectedpoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 409, in post
+    Acc_No_km = cursor.execute("""SELECT ISNULL(Acc_No,'') FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
+IndexError: list index out of range
+ERROR 2019-11-13 09:35:18,689 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 500 86514
+INFO 2019-11-13 09:35:41,580 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-13 09:35:45,021 log 228 Internal Server Error: /expectedpoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 409, in post
+    Acc_No_km = cursor.execute("""SELECT ISNULL(Acc_No,'') FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
+IndexError: list index out of range
+ERROR 2019-11-13 09:35:45,024 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 500 86514
+INFO 2019-11-13 09:36:21,091 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-13 09:36:25,861 log 228 Internal Server Error: /expectedpoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 409, in post
+    Acc_No_km = cursor.execute("""SELECT ISNULL(Acc_No,'') FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
+IndexError: list index out of range
+ERROR 2019-11-13 09:36:25,862 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 500 86514
+INFO 2019-11-13 09:37:08,687 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-13 09:37:12,871 log 228 Internal Server Error: /expectedpoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 409, in post
+    Acc_No_km = cursor.execute("""SELECT ISNULL(Acc_No,'') FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
+IndexError: list index out of range
+ERROR 2019-11-13 09:37:12,872 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 500 86462
+INFO 2019-11-13 09:37:32,747 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-13 09:37:36,237 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-11-13 09:37:36,237 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 403 24
+INFO 2019-11-13 09:38:12,641 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 09:38:13,462 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-13 09:38:22,592 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-11-13 09:38:22,592 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 403 24
+INFO 2019-11-13 09:39:04,964 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 09:39:05,745 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 09:39:17,523 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\et_CACC_NO.py changed, reloading.
+INFO 2019-11-13 09:39:18,229 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 09:39:25,431 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 09:39:26,303 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 09:39:26,970 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 09:39:31,533 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-13 09:39:34,146 log 228 Internal Server Error: /expectedpoperation/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py", line 408, in post
+    Acc_No_km = cursor.execute("""SELECT ISNULL(Acc_No,'') FROM BACC WHERE BACC_NO=%s""", [CACC_NO]).fetchall()[0][0]
+IndexError: list index out of range
+ERROR 2019-11-13 09:39:34,149 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 500 86520
+INFO 2019-11-13 09:40:22,867 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 09:40:23,643 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 09:40:37,698 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\et_CACC_NO.py changed, reloading.
+INFO 2019-11-13 09:40:38,412 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-13 09:40:43,633 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-11-13 09:40:43,633 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 403 57
+WARNING 2019-11-13 09:40:50,145 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-11-13 09:40:50,146 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 403 57
+WARNING 2019-11-13 09:40:53,502 log 228 Forbidden: /expectedpoperation/
+WARNING 2019-11-13 09:40:53,502 basehttp 154 "POST /expectedpoperation/ HTTP/1.1" 403 57
+INFO 2019-11-13 09:48:22,677 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 09:48:23,417 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 10:53:55,658 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 17:19:53,545 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-13 17:20:02,164 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-13 17:20:02,165 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 403 18
+ERROR 2019-11-13 17:21:00,492 log 228 Internal Server Error: /predictproceeds/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 82, in _execute
+    return self.cursor.execute(sql)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\sql_server\pyodbc\base.py", line 536, in execute
+    return self.cursor.execute(sql, params)
+pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]'=' 附近有语法错误。 (102) (SQLExecDirectW)")
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 577, in post
+    tp_CACC_NO = if_account(CACC_NO)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\if_account.py", line 16, in if_account
+    IF_CACC_NO = cursor.execute(sql).fetchall()[0][0]
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 99, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 67, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 76, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\utils.py", line 89, in __exit__
+    raise dj_exc_value.with_traceback(traceback) from exc_value
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 82, in _execute
+    return self.cursor.execute(sql)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\sql_server\pyodbc\base.py", line 536, in execute
+    return self.cursor.execute(sql, params)
+django.db.utils.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]'=' 附近有语法错误。 (102) (SQLExecDirectW)")
+ERROR 2019-11-13 17:21:00,496 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 500 130318
+INFO 2019-11-13 17:22:14,700 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-13 17:22:20,255 log 228 Internal Server Error: /predictproceeds/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 82, in _execute
+    return self.cursor.execute(sql)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\sql_server\pyodbc\base.py", line 536, in execute
+    return self.cursor.execute(sql, params)
+pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]'=' 附近有语法错误。 (102) (SQLExecDirectW)")
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 577, in post
+    tp_CACC_NO = if_account(CACC_NO)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\if_account.py", line 16, in if_account
+    IF_CACC_NO = cursor.execute(sql).fetchall()[0][0]
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 99, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 67, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 76, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\utils.py", line 89, in __exit__
+    raise dj_exc_value.with_traceback(traceback) from exc_value
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 82, in _execute
+    return self.cursor.execute(sql)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\sql_server\pyodbc\base.py", line 536, in execute
+    return self.cursor.execute(sql, params)
+django.db.utils.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]'=' 附近有语法错误。 (102) (SQLExecDirectW)")
+ERROR 2019-11-13 17:22:20,257 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 500 130295
+INFO 2019-11-13 17:23:09,092 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-13 17:23:11,442 log 228 Internal Server Error: /predictproceeds/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 82, in _execute
+    return self.cursor.execute(sql)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\sql_server\pyodbc\base.py", line 536, in execute
+    return self.cursor.execute(sql, params)
+pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]'=' 附近有语法错误。 (102) (SQLExecDirectW)")
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 577, in post
+    tp_CACC_NO = if_account(CACC_NO)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\if_account.py", line 16, in if_account
+    IF_CACC_NO = cursor.execute(sql).fetchall()[0][0]
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 99, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 67, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 76, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\utils.py", line 89, in __exit__
+    raise dj_exc_value.with_traceback(traceback) from exc_value
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 82, in _execute
+    return self.cursor.execute(sql)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\sql_server\pyodbc\base.py", line 536, in execute
+    return self.cursor.execute(sql, params)
+django.db.utils.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]'=' 附近有语法错误。 (102) (SQLExecDirectW)")
+ERROR 2019-11-13 17:23:11,445 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 500 130319
+INFO 2019-11-13 17:23:34,892 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-13 17:23:38,103 log 228 Internal Server Error: /predictproceeds/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 82, in _execute
+    return self.cursor.execute(sql)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\sql_server\pyodbc\base.py", line 536, in execute
+    return self.cursor.execute(sql, params)
+pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]'=' 附近有语法错误。 (102) (SQLExecDirectW)")
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 578, in post
+    tp_CACC_NO = if_account(CACC_NO)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\if_account.py", line 16, in if_account
+    IF_CACC_NO = cursor.execute(sql).fetchall()[0][0]
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 99, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 67, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 76, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\utils.py", line 89, in __exit__
+    raise dj_exc_value.with_traceback(traceback) from exc_value
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 82, in _execute
+    return self.cursor.execute(sql)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\sql_server\pyodbc\base.py", line 536, in execute
+    return self.cursor.execute(sql, params)
+django.db.utils.ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]'=' 附近有语法错误。 (102) (SQLExecDirectW)")
+ERROR 2019-11-13 17:23:38,107 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 500 130219
+INFO 2019-11-13 17:24:38,806 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 17:24:49,548 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 200 61
+WARNING 2019-11-13 17:24:55,731 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-13 17:24:55,732 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 403 24
+WARNING 2019-11-13 17:25:36,526 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-13 17:25:36,526 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 403 24
+INFO 2019-11-13 17:26:25,765 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 17:26:26,629 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-13 17:26:33,797 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-13 17:26:33,798 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 403 24
+INFO 2019-11-13 17:27:04,469 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-13 17:27:06,577 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-13 17:27:06,578 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 403 24
+INFO 2019-11-13 17:27:29,820 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-13 17:27:43,234 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-13 17:27:43,234 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 403 24
+INFO 2019-11-13 17:28:10,919 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-13 17:28:12,759 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-13 17:28:12,760 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 403 24
+INFO 2019-11-13 17:28:42,761 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-13 17:28:44,046 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-13 17:28:44,046 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 403 6
+INFO 2019-11-13 17:29:46,435 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-13 17:29:52,343 log 228 Internal Server Error: /predictproceeds/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 577, in post
+    tp_CACC_NO = if_account(CACC_NO)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\if_account.py", line 16, in if_account
+    IF_CACC_NO = cursor.execute(sql).fetchall()[0][0]
+IndexError: list index out of range
+ERROR 2019-11-13 17:29:52,345 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 500 89037
+INFO 2019-11-13 17:32:06,930 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-13 17:32:09,457 log 228 Internal Server Error: /predictproceeds/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "e:\12446\appdata\Lib\contextlib.py", line 52, in inner
+    return func(*args, **kwds)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py", line 579, in post
+    if int(tp_CACC_NO) == 1:
+TypeError: int() argument must be a string, a bytes-like object or a number, not 'HttpResponseForbidden'
+ERROR 2019-11-13 17:32:09,458 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 500 85490
+INFO 2019-11-13 17:35:00,403 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 17:35:01,384 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 17:35:19,514 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-13 17:35:21,533 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-13 17:35:21,533 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 403 36
+INFO 2019-11-13 17:36:40,343 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-13 17:36:43,378 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-13 17:36:43,378 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 403 57
+INFO 2019-11-13 17:38:25,760 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 17:38:26,506 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 17:39:50,385 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 17:39:51,280 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 17:42:52,983 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 17:42:53,749 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 17:43:58,637 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 17:43:59,349 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-13 17:45:06,136 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-13 17:45:06,136 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 403 24
+WARNING 2019-11-13 17:45:11,257 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-13 17:45:11,257 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 403 12
+INFO 2019-11-13 17:45:49,168 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-13 17:45:53,473 log 228 Forbidden: /predictproceeds/
+WARNING 2019-11-13 17:45:53,474 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 403 27
+INFO 2019-11-13 17:46:13,982 basehttp 154 "POST /predictproceeds/ HTTP/1.1" 200 61
+INFO 2019-11-13 17:49:35,596 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 17:49:36,369 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 17:50:46,707 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 17:50:47,431 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 17:52:12,947 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 17:52:13,978 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 17:52:48,112 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 17:52:48,861 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 17:54:11,935 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 17:54:12,647 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 17:55:46,458 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 17:55:47,243 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 17:57:12,582 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 17:57:13,413 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 17:57:32,256 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 17:57:33,114 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 17:57:48,577 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 17:57:49,452 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 17:58:55,373 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 17:58:56,277 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 17:59:23,235 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 17:59:23,984 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 17:59:53,278 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 17:59:54,100 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:00:08,283 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 18:00:09,221 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:00:39,483 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\salesinvoice\views.py changed, reloading.
+INFO 2019-11-13 18:00:40,291 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:04:22,766 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 18:04:23,514 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:06:24,285 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 18:06:25,056 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:06:35,952 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 18:06:36,655 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:07:19,648 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 18:07:20,475 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:07:46,318 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 18:07:47,099 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:08:48,876 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 18:08:49,649 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:08:56,934 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 18:08:57,697 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:09:03,832 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 18:09:04,820 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:09:47,769 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 18:09:48,526 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:10:12,006 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 18:10:12,793 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:11:27,584 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 18:11:28,289 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:11:35,643 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 18:11:36,433 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:11:41,513 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 18:11:42,389 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:12:21,027 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 18:12:21,826 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:14:26,644 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 18:14:27,347 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:14:57,842 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 18:14:58,712 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:15:15,229 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\PaymentOperation\views.py changed, reloading.
+INFO 2019-11-13 18:15:15,943 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:42:32,705 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\cust_data.py changed, reloading.
+INFO 2019-11-13 18:42:34,415 autoreload 597 Watching for file changes with StatReloader
+WARNING 2019-11-13 18:42:52,932 log 228 Forbidden: /invoice/
+WARNING 2019-11-13 18:42:52,933 basehttp 154 "GET /invoice/ HTTP/1.1" 403 27
+WARNING 2019-11-13 18:42:53,029 log 228 Forbidden: /favicon.ico
+WARNING 2019-11-13 18:42:53,030 basehttp 154 "GET /favicon.ico HTTP/1.1" 403 27
+INFO 2019-11-13 18:43:12,968 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 18:44:58,482 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:45:02,304 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 18:48:31,372 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:48:33,913 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 18:49:07,766 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:49:09,836 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 18:58:19,421 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 18:58:22,912 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 18:59:10,916 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 19:00:27,128 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:00:37,873 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 19:00:38,800 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 19:02:06,829 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:02:38,274 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-13 19:02:40,460 log 228 Internal Server Error: /invoice/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 24, in get
+    row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, '1', datetime.datetime.strptime(LZ_DD, '%Y-%m-%d'))
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\cust_data.py", line 19, in customer_data
+    """, [CUS_NO, CUS_NO_NAME,OBJ_ID,'ADMIN','ADMIN',DATE,DATE])
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 99, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 67, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 76, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\sql_server\pyodbc\base.py", line 532, in execute
+    sql = self.format_sql(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\sql_server\pyodbc\base.py", line 500, in format_sql
+    sql = sql % tuple('?' * len(params))
+TypeError: not all arguments converted during string formatting
+ERROR 2019-11-13 19:02:40,462 basehttp 154 "GET /invoice/ HTTP/1.1" 500 114737
+INFO 2019-11-13 19:03:26,982 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:03:31,714 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 19:06:04,515 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:06:11,006 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 19:07:40,635 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:07:43,300 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 19:09:35,179 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:09:47,533 autoreload 597 Watching for file changes with StatReloader
+ERROR 2019-11-13 19:09:50,761 log 228 Internal Server Error: /invoice/
+Traceback (most recent call last):
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
+    response = get_response(request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
+    response = self.process_exception_by_middleware(e, request)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 71, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
+    return handler(request, *args, **kwargs)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\apps\stockinvoice\views.py", line 24, in get
+    row_cus_no = customer_data(CUS_NO, CUS_NO_NAME, 1, LZ_DD)
+  File "E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\cust_data.py", line 18, in customer_data
+    """, [CUS_NO, CUS_NO_NAME,OBJ_ID,'ADMIN','ADMIN',DATE,DATE])
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 99, in execute
+    return super().execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 67, in execute
+    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 76, in _execute_with_wrappers
+    return executor(sql, params, many, context)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
+    return self.cursor.execute(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\sql_server\pyodbc\base.py", line 532, in execute
+    sql = self.format_sql(sql, params)
+  File "C:\Users\12446\Envs\ceshi\lib\site-packages\sql_server\pyodbc\base.py", line 500, in format_sql
+    sql = sql % tuple('?' * len(params))
+TypeError: must be real number, not str
+ERROR 2019-11-13 19:09:50,764 basehttp 154 "GET /invoice/ HTTP/1.1" 500 113610
+INFO 2019-11-13 19:11:19,196 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:15:02,738 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\cust_data.py changed, reloading.
+INFO 2019-11-13 19:15:03,437 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:15:26,707 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\cust_data.py changed, reloading.
+INFO 2019-11-13 19:15:27,466 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:15:57,227 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:16:00,560 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 19:17:13,294 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:17:16,532 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 19:18:21,054 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:18:23,518 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 19:19:14,678 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:19:17,173 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 19:20:15,288 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:20:18,985 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 19:21:27,225 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:21:29,538 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 19:22:00,838 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:22:07,363 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 19:22:54,528 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:23:03,198 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:23:21,085 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 19:24:04,385 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:24:06,803 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 19:24:32,423 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:24:35,946 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 19:25:04,946 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:25:06,449 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 19:25:31,040 autoreload 597 Watching for file changes with StatReloader
+INFO 2019-11-13 19:25:36,463 basehttp 154 "GET /invoice/ HTTP/1.1" 200 10
+INFO 2019-11-13 19:26:06,113 autoreload 217 E:\12446\PycharmProjects\wangli\wanjia\awj\awj\utils\cust_data.py changed, reloading.
+INFO 2019-11-13 19:26:06,938 autoreload 597 Watching for file changes with StatReloader

+ 22 - 22
awj/manage.py

@@ -1,22 +1,22 @@
-#!/usr/bin/env python
-import os
-import sys
-
-if __name__ == "__main__":
-    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "awj.setting.dev")
-    try:
-        from django.core.management import execute_from_command_line
-    except ImportError:
-        # The above import may fail for some other reason. Ensure that the
-        # issue is really that Django is missing to avoid masking other
-        # exceptions on Python 2.
-        try:
-            import django
-        except ImportError:
-            raise ImportError(
-                "Couldn't import Django. Are you sure it's installed and "
-                "available on your PYTHONPATH environment variable? Did you "
-                "forget to activate a virtual environment?"
-            )
-        raise
-    execute_from_command_line(sys.argv)
+#!/usr/bin/env python
+import os
+import sys
+
+if __name__ == "__main__":
+    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "awj.setting.dev")
+    try:
+        from django.core.management import execute_from_command_line
+    except ImportError:
+        # The above import may fail for some other reason. Ensure that the
+        # issue is really that Django is missing to avoid masking other
+        # exceptions on Python 2.
+        try:
+            import django
+        except ImportError:
+            raise ImportError(
+                "Couldn't import Django. Are you sure it's installed and "
+                "available on your PYTHONPATH environment variable? Did you "
+                "forget to activate a virtual environment?"
+            )
+        raise
+    execute_from_command_line(sys.argv)

+ 5 - 0
qqq.txt

@@ -0,0 +1,5 @@
+Django==2.2.7
+django-mssql-backend==2.3.0
+pyodbc==4.0.27
+pytz==2019.3
+sqlparse==0.3.0