invoicebillitem.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. package restcontroller.webmanage.sale.invoice;
  2. import java.math.BigDecimal;
  3. import java.util.ArrayList;
  4. import com.alibaba.fastjson.JSONArray;
  5. import com.alibaba.fastjson.JSONObject;
  6. import beans.data.BatchDeleteErr;
  7. import common.Controller;
  8. import common.YosException;
  9. import common.annotation.API;
  10. import common.annotation.CACHEING;
  11. import common.annotation.CACHEING_CLEAN;
  12. import common.data.Rows;
  13. import common.data.RowsMap;
  14. import common.data.SQLFactory;
  15. import restcontroller.R;
  16. import utility.tools.Math;
  17. public class invoicebillitem extends Controller {
  18. public invoicebillitem(JSONObject arg0) throws YosException {
  19. super(arg0);
  20. // TODO Auto-generated constructor stub
  21. }
  22. @API(title = "可选择开票明细列表查询", apiversion = R.ID20221228093803.v1.class)
  23. @CACHEING
  24. public String queryInvoiceapplyorder() throws YosException {
  25. /*
  26. * 过滤条件设置
  27. */
  28. StringBuffer where = new StringBuffer(" 1=1 ");
  29. if (content.containsKey("where")) {
  30. JSONObject whereObject = content.getJSONObject("where");
  31. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  32. where.append(" and(");
  33. where.append("t4.sonum like'%").append(whereObject.getString("condition")).append("%' ");
  34. where.append("or t2.itemname like'%").append(whereObject.getString("condition")).append("%' ");
  35. where.append(")");
  36. }
  37. if (whereObject.containsKey("sonum") && !"".equals(whereObject.getString("sonum"))) {
  38. where.append(" and t4.sonum ='").append(whereObject.getString("sonum")).append("' ");
  39. }
  40. }
  41. SQLFactory sqlFactory = new SQLFactory(this, "可选择开票明细查询", pageSize, pageNumber, pageSorting);
  42. sqlFactory.addParameter_SQL("where", where);
  43. sqlFactory.addParameter("sa_invoiceapplyid", content.getLong("sa_invoiceapplyid"));
  44. sqlFactory.addParameter("siteid", siteid);
  45. Rows rows1 = dbConnect.runSqlQuery(sqlFactory);
  46. return getSucReturnObject().setData(rows1).toString();
  47. }
  48. @API(title = "新建或修改发票明细", apiversion = R.ID20221227152903.v1.class)
  49. @CACHEING_CLEAN(apiversions = {R.ID20221228101203.v1.class, R.ID20221228093803.v1.class, R.ID20221223153403.v1.class})
  50. public String insertormodify_invoiceapplyorder() throws YosException {
  51. Long sa_invoicebillid = content.getLong("sa_invoicebillid");
  52. Long sa_invoiceapplyid = content.getLong("sa_invoiceapplyid");
  53. JSONArray iteminfos = content.getJSONArray("iteminfos");
  54. ArrayList<String> sqlList = new ArrayList<>();
  55. Rows rowscount = dbConnect
  56. .runSqlQuery("select status,sys_enterpriseid from sa_invoiceapply where sa_invoiceapplyid=" + sa_invoiceapplyid);
  57. if (!rowscount.isEmpty()) {
  58. String status= rowscount.get(0).getString("status");
  59. if (!status.equals("新建")||!status.equals("提交")) {
  60. return getErrReturnObject().setErrMsg("非新建或提交状态的发票无法新增修改").toString();
  61. }
  62. }
  63. int i = 0;
  64. long[] sa_invoicebill_itemid = createTableID("sa_invoicebill_item", iteminfos.size());
  65. for (Object obj : iteminfos) {
  66. JSONObject iteminfo = (JSONObject) obj;
  67. if (iteminfo.getLong("sa_invoicebill_itemid") <= 0 || dbConnect.runSqlQuery(
  68. "select sa_invoicebill_itemid from sa_invoicebill_item where sa_invoicebill_itemid="
  69. + iteminfo.getLong("sa_invoicebill_itemid"))
  70. .isEmpty()) {
  71. SQLFactory saleFactory = new SQLFactory(this, "发票商品明细新增");
  72. saleFactory.addParameter("siteid", siteid);
  73. saleFactory.addParameter("sa_invoicebill_itemid", sa_invoicebill_itemid[i]);
  74. saleFactory.addParameter("sa_invoiceapplyid", sa_invoiceapplyid);
  75. saleFactory.addParameter("taxincludedamount", iteminfo.getBigDecimal("invoiceamount"));
  76. saleFactory.addParameter("spectype", iteminfo.getString("spec"));
  77. saleFactory.addParameter("price", iteminfo.getBigDecimal("price").abs());
  78. saleFactory.addParameter("num", iteminfo.getBigDecimal("invoiceaqty").abs());
  79. saleFactory.addParameter("taxrate", iteminfo.getBigDecimal("taxrate").abs());
  80. saleFactory.addParameter("goodsname", iteminfo.getString("itemname"));
  81. saleFactory.addParameter("goodscode", iteminfo.getString("itemno"));
  82. saleFactory.addParameter("sa_invoiceapply_orderid",
  83. iteminfo.getString("sa_invoiceapply_orderid"));
  84. saleFactory.addParameter("sa_invoicebillid", sa_invoicebillid);
  85. sqlList.add(saleFactory.getSQL());
  86. i++;
  87. } else {
  88. SQLFactory saleFactory = new SQLFactory(this, "发票商品明细更新");
  89. saleFactory.addParameter("sa_invoicebill_itemid", iteminfo.getLong("sa_invoicebill_itemid"));
  90. // saleFactory.addParameter("itemno", iteminfo.getString("itemno"));
  91. if ((iteminfo.getBigDecimal("invoiceaqty").abs()).compareTo(BigDecimal.ZERO) > 0 && (iteminfo.getBigDecimal("invoiceamount").abs()).compareTo(BigDecimal.ZERO) <= 0) {
  92. saleFactory.addParameter("num", iteminfo.getBigDecimal("invoiceaqty").abs());
  93. saleFactory.addParameter("taxincludedamount", (iteminfo.getBigDecimal("invoiceaqty").abs()).multiply(iteminfo.getBigDecimal("price")));
  94. saleFactory.addParameter("taxrate", iteminfo.getBigDecimal("taxrate").abs());
  95. } else if ((iteminfo.getBigDecimal("invoiceaqty").abs()).compareTo(BigDecimal.ZERO) <= 0 && (iteminfo.getBigDecimal("invoiceamount").abs()).compareTo(BigDecimal.ZERO) > 0) {
  96. saleFactory.addParameter("num", (iteminfo.getBigDecimal("invoiceamount").abs()).divide(iteminfo.getBigDecimal("price"), 4));
  97. saleFactory.addParameter("taxincludedamount", iteminfo.getBigDecimal("invoiceamount").abs());
  98. saleFactory.addParameter("taxrate", iteminfo.getBigDecimal("taxrate"));
  99. }
  100. sqlList.add(saleFactory.getSQL());
  101. }
  102. }
  103. dbConnect.runSqlUpdate(sqlList);
  104. return getSucReturnObject().toString();
  105. }
  106. @API(title = "新建或修改发票明细(红票)", apiversion = R.ID20230228090903.v1.class)
  107. @CACHEING_CLEAN(apiversions = {R.ID20221228101203.v1.class, R.ID20221228093803.v1.class, R.ID20221223153403.v1.class})
  108. public String insertormodify_invoiceapplyorderRed() throws YosException {
  109. Long sa_invoicebillid = content.getLong("sa_invoicebillid");
  110. Long sa_invoiceapplyid = content.getLong("sa_invoiceapplyid");
  111. JSONArray iteminfos = content.getJSONArray("iteminfos");
  112. ArrayList<String> sqlList = new ArrayList<>();
  113. Rows rowscount = dbConnect
  114. .runSqlQuery("select status,rb from sa_invoicebill where sa_invoicebillid=" + sa_invoicebillid);
  115. if (!rowscount.isEmpty()) {
  116. String status= rowscount.get(0).getString("status");
  117. String rb= rowscount.get(0).getString("rb");
  118. if(rb.equals("0")) {
  119. if (!status.equals("")) {
  120. return getErrReturnObject().setErrMsg("非新建或提交状态的发票无法新增修改").toString();
  121. }
  122. }else {
  123. return getErrReturnObject().setErrMsg("蓝票不得修改").toString();
  124. }
  125. }else {
  126. return getErrReturnObject().setErrMsg("发票不存在").toString();
  127. }
  128. int i = 0;
  129. long[] sa_invoicebill_itemid = createTableID("sa_invoicebill_item", iteminfos.size());
  130. for (Object obj : iteminfos) {
  131. JSONObject iteminfo = (JSONObject) obj;
  132. if (iteminfo.getLong("sa_invoicebill_itemid") <= 0 || dbConnect.runSqlQuery(
  133. "select sa_invoicebill_itemid from sa_invoicebill_item where sa_invoicebill_itemid="
  134. + iteminfo.getLong("sa_invoicebill_itemid"))
  135. .isEmpty()) {
  136. SQLFactory saleFactory = new SQLFactory(this, "发票商品明细新增");
  137. saleFactory.addParameter("siteid", siteid);
  138. saleFactory.addParameter("sa_invoicebill_itemid", sa_invoicebill_itemid[i]);
  139. saleFactory.addParameter("sa_invoiceapplyid", sa_invoiceapplyid);
  140. saleFactory.addParameter("taxincludedamount", iteminfo.getBigDecimal("invoiceamount"));
  141. saleFactory.addParameter("spectype", iteminfo.getString("spec"));
  142. saleFactory.addParameter("price", iteminfo.getBigDecimal("price"));
  143. saleFactory.addParameter("num", iteminfo.getBigDecimal("invoiceaqty"));
  144. saleFactory.addParameter("taxrate", iteminfo.getBigDecimal("taxrate"));
  145. saleFactory.addParameter("goodsname", iteminfo.getString("itemname"));
  146. saleFactory.addParameter("goodscode", iteminfo.getString("itemno"));
  147. saleFactory.addParameter("sa_invoiceapply_orderid",
  148. iteminfo.getString("sa_invoiceapply_orderid"));
  149. saleFactory.addParameter("sa_invoicebillid", sa_invoicebillid);
  150. sqlList.add(saleFactory.getSQL());
  151. i++;
  152. } else {
  153. SQLFactory saleFactory = new SQLFactory(this, "发票商品明细更新");
  154. saleFactory.addParameter("sa_invoicebill_itemid", iteminfo.getLong("sa_invoicebill_itemid"));
  155. // saleFactory.addParameter("itemno", iteminfo.getString("itemno"));
  156. if ((iteminfo.getBigDecimal("invoiceaqty").abs()).compareTo(BigDecimal.ZERO) > 0 && (iteminfo.getBigDecimal("invoiceamount").abs()).compareTo(BigDecimal.ZERO) <= 0) {
  157. saleFactory.addParameter("num", (iteminfo.getBigDecimal("invoiceaqty").abs()).negate());
  158. saleFactory.addParameter("taxincludedamount", ((iteminfo.getBigDecimal("invoiceaqty").abs()).negate()).multiply(iteminfo.getBigDecimal("price")));
  159. saleFactory.addParameter("taxrate", iteminfo.getBigDecimal("taxrate"));
  160. } else if ((iteminfo.getBigDecimal("invoiceaqty").abs()).compareTo(BigDecimal.ZERO) <= 0 && (iteminfo.getBigDecimal("invoiceamount").abs()).compareTo(BigDecimal.ZERO) > 0) {
  161. saleFactory.addParameter("num", ((iteminfo.getBigDecimal("invoiceamount").abs()).negate()).divide(iteminfo.getBigDecimal("price"), 4));
  162. saleFactory.addParameter("taxincludedamount", (iteminfo.getBigDecimal("invoiceamount").abs()).negate());
  163. saleFactory.addParameter("taxrate", iteminfo.getBigDecimal("taxrate"));
  164. }
  165. sqlList.add(saleFactory.getSQL());
  166. }
  167. }
  168. dbConnect.runSqlUpdate(sqlList);
  169. return getSucReturnObject().toString();
  170. }
  171. @API(title = "查询发票明细列表", apiversion = R.ID20221228101203.v1.class)
  172. @CACHEING
  173. public String queryinvoiceList() throws YosException {
  174. Long sa_invoicebillid = content.getLong("sa_invoicebillid");
  175. StringBuffer where = new StringBuffer(" 1=1 ");
  176. if (content.containsKey("where")) {
  177. JSONObject whereObject = content.getJSONObject("where");
  178. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  179. where.append(" and(");
  180. where.append("t1.goodscode like'%").append(whereObject.getString("condition")).append("%' ");
  181. where.append("or t1.goodsname like'%").append(whereObject.getString("condition")).append("%' ");
  182. where.append("or t1.spectype like'%").append(whereObject.getString("condition")).append("%' ");
  183. where.append(")");
  184. }
  185. }
  186. SQLFactory sqlFactory = new SQLFactory(this, "发票明细列表查询", pageSize, pageNumber, pageSorting);
  187. sqlFactory.addParameter("sa_invoicebillid", sa_invoicebillid);
  188. sqlFactory.addParameter("siteid", siteid);
  189. sqlFactory.addParameter_SQL("where", where);
  190. Rows rows = dbConnect.runSqlQuery(sqlFactory);
  191. return getSucReturnObject().setData(rows).toString();
  192. }
  193. @API(title = "删除发票明细", apiversion = R.ID20221228101303.v1.class)
  194. @CACHEING_CLEAN(apiversions = {R.ID20221228101203.v1.class, R.ID20221228093803.v1.class, R.ID20221223153403.v1.class})
  195. public String delete() throws YosException {
  196. JSONArray sa_invoicebill_itemids = content.getJSONArray("sa_invoicebill_itemids");
  197. BatchDeleteErr batchDeleteErr = BatchDeleteErr.create(this, sa_invoicebill_itemids.size());
  198. for (Object o : sa_invoicebill_itemids) {
  199. long sa_invoicebill_itemid = Long.parseLong(o.toString());
  200. Rows RowsStatus = dbConnect.runSqlQuery(
  201. "SELECT t2.status as parentstatus,t3.rb,t3.status from sa_invoicebill_item t1 inner join sa_invoiceapply t2 on t1.sa_invoiceapplyid=t2.sa_invoiceapplyid and t1.siteid=t2.siteid inner join sa_invoicebill t3 on t3.sa_invoicebillid=t1.sa_invoicebillid and t3.siteid=t1.siteid where t1.siteid='"
  202. + siteid + "' and t1.sa_invoicebill_itemid='" + sa_invoicebill_itemid + "'");
  203. if (RowsStatus.isNotEmpty()) {
  204. if ("0".equals(RowsStatus.get(0).getString("rb"))) {
  205. if (!"".equals(RowsStatus.get(0).getString("status"))) {
  206. batchDeleteErr.addErr(sa_invoicebill_itemid, "红票已提交,不可删除");
  207. continue;
  208. }
  209. } else {
  210. if ("审核".equals(RowsStatus.get(0).getString("parentstatus"))) {
  211. batchDeleteErr.addErr(sa_invoicebill_itemid, "审核状态下不可删除");
  212. continue;
  213. }
  214. }
  215. }
  216. dbConnect.runSqlUpdate("delete from sa_invoicebill_item where siteid='" + siteid + "' and sa_invoicebill_itemid="
  217. + sa_invoicebill_itemid);
  218. }
  219. return batchDeleteErr.getReturnObject().toString();
  220. }
  221. }