mirror of
https://github.com/weizhiqiang1995/erp-pro.git
synced 2024-09-20 23:16:01 +08:00
供应商对账完成
This commit is contained in:
parent
e497983442
commit
19fe21a548
|
@ -74,5 +74,17 @@ public class StatisticsController {
|
||||||
public void queryCustomerReconciliationDetails(InputObject inputObject, OutputObject outputObject) throws Exception{
|
public void queryCustomerReconciliationDetails(InputObject inputObject, OutputObject outputObject) throws Exception{
|
||||||
statisticsService.queryCustomerReconciliationDetails(inputObject, outputObject);
|
statisticsService.queryCustomerReconciliationDetails(inputObject, outputObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 供应商对账
|
||||||
|
* @param inputObject
|
||||||
|
* @param outputObject
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
@RequestMapping("/post/StatisticsController/querySupplierReconciliationDetails")
|
||||||
|
@ResponseBody
|
||||||
|
public void querySupplierReconciliationDetails(InputObject inputObject, OutputObject outputObject) throws Exception{
|
||||||
|
statisticsService.querySupplierReconciliationDetails(inputObject, outputObject);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,4 +17,6 @@ public interface StatisticsDao {
|
||||||
|
|
||||||
public List<Map<String, Object>> queryCustomerReconciliationDetails(Map<String, Object> params, PageBounds pageBounds) throws Exception;
|
public List<Map<String, Object>> queryCustomerReconciliationDetails(Map<String, Object> params, PageBounds pageBounds) throws Exception;
|
||||||
|
|
||||||
|
public List<Map<String, Object>> querySupplierReconciliationDetails(Map<String, Object> params, PageBounds pageBounds) throws Exception;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,4 +15,6 @@ public interface StatisticsService {
|
||||||
|
|
||||||
public void queryCustomerReconciliationDetails(InputObject inputObject, OutputObject outputObject) throws Exception;
|
public void queryCustomerReconciliationDetails(InputObject inputObject, OutputObject outputObject) throws Exception;
|
||||||
|
|
||||||
|
public void querySupplierReconciliationDetails(InputObject inputObject, OutputObject outputObject) throws Exception;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,5 +108,23 @@ public class StatisticsServiceImpl implements StatisticsService{
|
||||||
outputObject.setBeans(beans);
|
outputObject.setBeans(beans);
|
||||||
outputObject.settotal(total);
|
outputObject.settotal(total);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 供应商对账
|
||||||
|
* @param inputObject
|
||||||
|
* @param outputObject
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void querySupplierReconciliationDetails(InputObject inputObject, OutputObject outputObject) throws Exception {
|
||||||
|
Map<String, Object> params = inputObject.getParams();
|
||||||
|
params.put("userId", inputObject.getLogParams().get("id"));
|
||||||
|
List<Map<String, Object>> beans = statisticsDao.querySupplierReconciliationDetails(params,
|
||||||
|
new PageBounds(Integer.parseInt(params.get("page").toString()), Integer.parseInt(params.get("limit").toString())));
|
||||||
|
PageList<Map<String, Object>> beansPageList = (PageList<Map<String, Object>>)beans;
|
||||||
|
int total = beansPageList.getPaginator().getTotalCount();
|
||||||
|
outputObject.setBeans(beans);
|
||||||
|
outputObject.settotal(total);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -216,5 +216,33 @@
|
||||||
AND b.id = a.organ_id
|
AND b.id = a.organ_id
|
||||||
AND b.type = '2'
|
AND b.type = '2'
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="querySupplierReconciliationDetails" parameterType="java.util.Map" resultType="java.util.Map">
|
||||||
|
SELECT
|
||||||
|
a.id,
|
||||||
|
a.default_number defaultNumber,
|
||||||
|
CASE a.sub_type WHEN 1 THEN '采购入库' WHEN 2 THEN '销售退货' WHEN 3 THEN '零售退货' WHEN 4 THEN '其他入库' WHEN 5 THEN '销售出库'
|
||||||
|
WHEN 6 THEN '采购退货' WHEN 7 THEN '调拨' WHEN 8 THEN '零售出库' WHEN 9 THEN '其他出库' ELSE '' END subTypeName,
|
||||||
|
b.supplier supplierName,
|
||||||
|
FORMAT(a.total_price, 2) totalPrice,
|
||||||
|
FORMAT(IFNULL(a.change_amount, 0), 2) changeAmount,
|
||||||
|
CONVERT(a.oper_time, CHAR) operTime,
|
||||||
|
a.link_number linkNumber,
|
||||||
|
a.status,
|
||||||
|
a.sub_type subType
|
||||||
|
FROM
|
||||||
|
erp_depothead a,
|
||||||
|
erp_supplier b
|
||||||
|
WHERE
|
||||||
|
a.delete_flag = '0'
|
||||||
|
AND a.tenant_id = #{userId}
|
||||||
|
AND DATE_FORMAT(a.oper_time, '%Y-%m') = #{operTime}
|
||||||
|
<if test="customerId != '' and customerId != null">
|
||||||
|
AND b.id = #{customerId}
|
||||||
|
</if>
|
||||||
|
AND a.sub_type NOT IN(10, 11)
|
||||||
|
AND b.id = a.organ_id
|
||||||
|
AND b.type = '1'
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
|
@ -673,6 +673,12 @@
|
||||||
<property id="limit" name="limit" ref="required,num" var="分页参数,每页多少条数据" />
|
<property id="limit" name="limit" ref="required,num" var="分页参数,每页多少条数据" />
|
||||||
<property id="page" name="page" ref="required,num" var="分页参数,第几页"/>
|
<property id="page" name="page" ref="required,num" var="分页参数,第几页"/>
|
||||||
</url>
|
</url>
|
||||||
|
<url id="statistics006" path="/post/StatisticsController/querySupplierReconciliationDetails" val="供应商对账" allUse="2">
|
||||||
|
<property id="customerId" name="customerId" ref="" var="供应商id" />
|
||||||
|
<property id="operTime" name="operTime" ref="required" var="单据时间"/>
|
||||||
|
<property id="limit" name="limit" ref="required,num" var="分页参数,每页多少条数据" />
|
||||||
|
<property id="page" name="page" ref="required,num" var="分页参数,第几页"/>
|
||||||
|
</url>
|
||||||
<!-- 统计结束 -->
|
<!-- 统计结束 -->
|
||||||
|
|
||||||
</controller>
|
</controller>
|
|
@ -0,0 +1,170 @@
|
||||||
|
|
||||||
|
var rowId = "";
|
||||||
|
|
||||||
|
//单据的时间
|
||||||
|
var operTime = "";
|
||||||
|
|
||||||
|
layui.config({
|
||||||
|
base: basePath,
|
||||||
|
version: skyeyeVersion
|
||||||
|
}).extend({ //指定js别名
|
||||||
|
window: 'js/winui.window'
|
||||||
|
}).define(['window', 'table', 'jquery', 'winui', 'form', 'laydate'], function (exports) {
|
||||||
|
winui.renderColor();
|
||||||
|
|
||||||
|
var $ = layui.$,
|
||||||
|
form = layui.form,
|
||||||
|
laydate = layui.laydate,
|
||||||
|
table = layui.table;
|
||||||
|
|
||||||
|
var selOption = getFileContent('tpl/template/select-option.tpl');
|
||||||
|
|
||||||
|
//初始化统计时间
|
||||||
|
operTime = getOneYMFormatDate();
|
||||||
|
|
||||||
|
//获取本月日期
|
||||||
|
function getOneYMFormatDate(){
|
||||||
|
var date = new Date;
|
||||||
|
var year = date.getFullYear();
|
||||||
|
var month = date.getMonth() + 1;
|
||||||
|
month = (month < 10 ? "0" + month : month);
|
||||||
|
return year.toString() + "-" + month.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
laydate.render({
|
||||||
|
elem: '#operTime', //指定元素
|
||||||
|
type: 'month',
|
||||||
|
value: operTime
|
||||||
|
});
|
||||||
|
|
||||||
|
initSupplierHtml();
|
||||||
|
//初始化供应商
|
||||||
|
function initSupplierHtml() {
|
||||||
|
AjaxPostUtil.request({url: reqBasePath + "supplier009", params: {}, type: 'json', callback: function(json) {
|
||||||
|
if(json.returnCode == 0) {
|
||||||
|
//加载供应商数据
|
||||||
|
$("#supplierId").html(getDataUseHandlebars(selOption, json));
|
||||||
|
//初始化数据
|
||||||
|
initTable();
|
||||||
|
} else {
|
||||||
|
winui.window.msg(json.returnMessage, {icon: 2, time: 2000});
|
||||||
|
}
|
||||||
|
}});
|
||||||
|
}
|
||||||
|
|
||||||
|
function initTable(){
|
||||||
|
//表格渲染
|
||||||
|
table.render({
|
||||||
|
id: 'messageTable',
|
||||||
|
elem: '#messageTable',
|
||||||
|
method: 'post',
|
||||||
|
url: reqBasePath + 'statistics006',
|
||||||
|
where: {operTime: operTime, customerId: $("#supplierId").val()},
|
||||||
|
even: true, //隔行变色
|
||||||
|
page: true,
|
||||||
|
limits: [8, 16, 24, 32, 40, 48, 56],
|
||||||
|
limit: 8,
|
||||||
|
cols: [[
|
||||||
|
{ title: '序号', type: 'numbers'},
|
||||||
|
{ field: 'defaultNumber', title: '单据编号', align: 'left', width: 250, templet: function(d){
|
||||||
|
var str = '<a lay-event="details" class="notice-title-click">' + d.defaultNumber + '</a>';
|
||||||
|
if(!isNull(d.linkNumber)){
|
||||||
|
str += '<span class="state-new">[转]</span>';
|
||||||
|
if(d.status == 2){
|
||||||
|
str += '<span class="state-up"> [正常]</span>';
|
||||||
|
}else{
|
||||||
|
str += '<span class="state-down"> [预警]</span>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}},
|
||||||
|
{ field: 'subTypeName', title: '单据类型', align: 'left', width: 100},
|
||||||
|
{ field: 'supplierName', title: '供应商名称', align: 'left', width: 120},
|
||||||
|
{ field: 'totalPrice', title: '合计金额', align: 'left', width: 100},
|
||||||
|
{ field: 'changeAmount', title: '实际支付', align: 'left', width: 120},
|
||||||
|
{ field: 'operTime', title: '退货数量', align: 'center', width: 150}
|
||||||
|
]]
|
||||||
|
});
|
||||||
|
table.on('tool(messageTable)', function (obj) { //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
|
||||||
|
var data = obj.data; //获得当前行数据
|
||||||
|
var layEvent = obj.event; //获得 lay-event 对应的值
|
||||||
|
if (layEvent === 'details') { //详情
|
||||||
|
details(data);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
form.render();
|
||||||
|
}
|
||||||
|
|
||||||
|
//详情
|
||||||
|
function details(data){
|
||||||
|
rowId = data.id;
|
||||||
|
var url = "";
|
||||||
|
if(data.subType == 1){//采购入库
|
||||||
|
url = "../../tpl/purchaseput/purchaseputdetails.html";
|
||||||
|
}else if(data.subType == 4){//其他入库
|
||||||
|
url = "../../tpl/otherwarehous/otherwarehousdetails.html";
|
||||||
|
}else if(data.subType == 2){//销售退货
|
||||||
|
url = "../../tpl/salesreturns/salesreturnsdetails.html";
|
||||||
|
}else if(data.subType == 6){//采购退货
|
||||||
|
url = "../../tpl/purchasereturns/purchasereturnsdetails.html";
|
||||||
|
}else if(data.subType == 9){//其他出库
|
||||||
|
url = "../../tpl/otheroutlets/otheroutletsdetails.html";
|
||||||
|
}else if(data.subType == 5){//销售出库
|
||||||
|
url = "../../tpl/salesoutlet/salesoutletdetails.html";
|
||||||
|
}else if(data.subType == 8){//零售出库
|
||||||
|
url = "../../tpl/retailoutlet/retailoutletdetails.html";
|
||||||
|
}else if(data.subType == 3){//零售退货
|
||||||
|
url = "../../tpl/retailreturns/retailreturnsdetails.html";
|
||||||
|
}else if(data.subType == 12){//拆分单
|
||||||
|
url = "../../tpl/splitlist/splitlistdetails.html";
|
||||||
|
}else if(data.subType == 13){//组装单
|
||||||
|
url = "../../tpl/assemblysheet/assemblysheetdetails.html";
|
||||||
|
}
|
||||||
|
_openNewWindows({
|
||||||
|
url: url,
|
||||||
|
title: "单据详情",
|
||||||
|
pageId: "otherwarehousdetails",
|
||||||
|
area: ['90vw', '90vh'],
|
||||||
|
callBack: function(refreshCode){
|
||||||
|
}});
|
||||||
|
}
|
||||||
|
|
||||||
|
//搜索表单
|
||||||
|
form.on('submit(formSearch)', function (data) {
|
||||||
|
//表单验证
|
||||||
|
if (winui.verifyForm(data.elem)) {
|
||||||
|
loadTable();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
$("body").on("click", "#reloadTable", function() {
|
||||||
|
loadTable();
|
||||||
|
});
|
||||||
|
|
||||||
|
$("body").on("click", "#formSearch", function () {
|
||||||
|
refreshTable();
|
||||||
|
})
|
||||||
|
|
||||||
|
//刷新
|
||||||
|
function loadTable(){
|
||||||
|
if(isNull($("#operTime").val())){//一定要记得,当createTime为空时
|
||||||
|
winui.window.msg("请选择日期.", {icon: 2,time: 2000});
|
||||||
|
}else {
|
||||||
|
operTime = $("#operTime").val();
|
||||||
|
table.reload("messageTable", {where:{operTime: operTime, customerId: $("#supplierId").val()}});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//搜索
|
||||||
|
function refreshTable(){
|
||||||
|
if(isNull($("#operTime").val())){//一定要记得,当createTime为空时
|
||||||
|
winui.window.msg("请选择日期.", {icon: 2,time: 2000});
|
||||||
|
}else {
|
||||||
|
operTime = $("#operTime").val();
|
||||||
|
table.reload("messageTable", {page: {curr: 1}, where:{operTime: operTime, customerId: $("#supplierId").val()}})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports('customerreconciliation', {});
|
||||||
|
});
|
|
@ -0,0 +1,46 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title></title>
|
||||||
|
<link href="../../assets/lib/layui/css/layui.css" rel="stylesheet" />
|
||||||
|
<link href="../../assets/lib/font-awesome-4.7.0/css/font-awesome.css" rel="stylesheet" />
|
||||||
|
<link href="../../assets/lib/winui/css/winui.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="txtcenter" style="margin:0 auto;padding-top:10px;">
|
||||||
|
<form class="layui-form layui-form-pane" action="" autocomplete="off">
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<div class="layui-inline">
|
||||||
|
<label class="layui-form-label">供应商名称</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<select id="supplierId" lay-search></select>
|
||||||
|
</div>
|
||||||
|
<label class="layui-form-label">单据日期</label>
|
||||||
|
<div class="layui-input-inline">
|
||||||
|
<input type="text" id="operTime" name="operTime" placeholder="请选择单据日期" class="layui-input" />
|
||||||
|
</div>
|
||||||
|
<button type="reset" class="layui-btn layui-btn-primary list-form-search">重置</button>
|
||||||
|
<button class="layui-btn list-form-search" lay-submit lay-filter="formSearch">搜索</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div class="winui-toolbar">
|
||||||
|
<div class="winui-tool">
|
||||||
|
<button id="reloadTable" class="winui-toolbtn"><i class="fa fa-refresh" aria-hidden="true"></i>刷新数据</button>
|
||||||
|
<div style="width: calc(100% - 120px); float: right; padding: 8px 10px;">
|
||||||
|
<div class="layui-form-mid layui-word-aux" style="color: red !important;"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="margin:auto 10px;">
|
||||||
|
<table id="messageTable" lay-filter="messageTable"></table>
|
||||||
|
</div>
|
||||||
|
<script src="../../assets/lib/layui/layui.js"></script>
|
||||||
|
<script src="../../assets/lib/layui/custom.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
layui.config({base: '../../js/erpstatistics/'}).use('supplierreconciliation');
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in a new issue