Browse Source

修改财务

ioioio 3 years ago
parent
commit
56e79cc0c2

+ 3 - 0
blade-service-api/trade-finance-api/src/main/java/org/springblade/finance/vojo/Settlement.java

@@ -251,4 +251,7 @@ public class Settlement  implements Serializable {
 	@ApiModelProperty(value = "1.代表结算列表 2.销项进项")
 	private int settlementType;
 
+	@ApiModelProperty(value = "未核销  核销完成")
+	private String foundStatus;
+
 }

+ 4 - 3
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/mapper/OrderMapper.xml

@@ -428,9 +428,7 @@
         and b.org_order_no in
         (
            select distinct t.order_no from business_order t where t.tenant_id=#{tenantId} and t.trade_type='JK' and t.bill_type='CG' and t.is_deleted=0
-        <if test='orderNo != null and orderNo!= ""'>
-           and t.order_no=#{orderNo}
-        </if>
+
         )
         order by  a.create_time desc
       )   b  on a.order_no=b.orgOrderNo
@@ -438,6 +436,9 @@
         <if test='startTime != null and endTime!= null'>
             and a.create_time between #{startTime} and #{endTime}
         </if>
+        <if test='orderNo != null and orderNo!= ""'>
+            and a.order_no=#{orderNo}
+        </if>
 
     </select>
     <select id="orderInventory"  resultType="org.springblade.purchase.sales.vo.OrderVO">

+ 15 - 4
blade-service/trade-finance/src/main/java/org/springblade/finance/controller/SettlementController.java

@@ -337,14 +337,25 @@ public class SettlementController extends BladeController {
 
 	/**
 	 *
-	 *  进项和销项的请求结算接口
+	 *  发起-进项和销项的请求结算接口
  	 */
-/*	@PostMapping("putFund")
+	@PostMapping("putFund")
 	public R putFund(@RequestBody Settlement settlement)
 	{
+		settlementService.putFund(settlement);
+		return R.success("操作成功");
+	}
 
-	}*/
-
+	/**
+	 *
+	 *  撤回-进项和销项的请求结算接口
+	 */
+	@PostMapping("cancelFund")
+	public R cancelFund(@RequestBody Settlement settlement)
+	{
+		settlementService.cancelFund(settlement);
+		return R.success("操作成功");
+	}
 
 
 

+ 4 - 0
blade-service/trade-finance/src/main/java/org/springblade/finance/service/ISettlementService.java

@@ -62,4 +62,8 @@ public interface ISettlementService extends IService<Settlement> {
 
 	void passCancel(Long settlementId);
 
+	void putFund(Settlement settlement);
+
+	void cancelFund(Settlement settlement);
+
 }

+ 85 - 0
blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

@@ -992,6 +992,91 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 		baseMapper.deleteById(settlementId);*/
 	}
 
+	@Override
+	@Transactional
+	@GlobalTransactional
+	public void putFund(Settlement settlement)
+	{
+		Settlement select = baseMapper.selectById(settlement.getId());
+		if(select==null)
+		{
+			throw new SecurityException("未查询到款项信息");
+		}
+		if(select.getFoundStatus().equals("核销完成"))
+		{
+			throw new SecurityException("已经核销,禁止操作");
+		}
+		LambdaQueryWrapper<Items> itemsLambdaQueryWrapper=new LambdaQueryWrapper<>();
+		itemsLambdaQueryWrapper
+			.eq(Items::getPid,settlement.getId())
+			.eq(Items::getTenantId,AuthUtil.getTenantId())
+			.eq(Items::getIsDeleted,0);
+		List<Items> items = itemsMapper.selectList(itemsLambdaQueryWrapper);
+		if(CollectionUtils.isNotEmpty(items))
+		{
+			items.forEach(e->{
+				Long accId = e.getAccId();
+				if(accId==null)
+				{
+					throw new SecurityException("操作失败:发票项明细未绑定账单明细");
+				}
+				Acc acc = accMapper.selectById(accId);
+				if (acc == null) {
+					throw new SecurityException("操作账单失败");
+				}
+				//增加明细开票金额
+				acc.setInvoiceAmount(acc.getInvoiceAmount() != null ? acc.getInvoiceAmount().add(e.getThisAmount()) : new BigDecimal("0").add(e.getThisAmount()));
+				accMapper.updateById(acc);
+			});
+			select.setFoundStatus("核销完成");
+			baseMapper.updateById(select);
+		}
+	}
+
+
+
+	@Override
+	@Transactional
+	@GlobalTransactional
+	public void cancelFund(Settlement settlement)
+	{
+		Settlement select = baseMapper.selectById(settlement.getId());
+		if(select==null)
+		{
+			throw new SecurityException("未查询到款项信息");
+		}
+		if(select.getFoundStatus().equals("未核销"))
+		{
+			throw new SecurityException("已经撤销过 或者 还未核销,禁止操作");
+		}
+		LambdaQueryWrapper<Items> itemsLambdaQueryWrapper=new LambdaQueryWrapper<>();
+		itemsLambdaQueryWrapper
+			.eq(Items::getPid,settlement.getId())
+			.eq(Items::getTenantId,AuthUtil.getTenantId())
+			.eq(Items::getIsDeleted,0);
+		List<Items> items = itemsMapper.selectList(itemsLambdaQueryWrapper);
+		if(CollectionUtils.isNotEmpty(items))
+		{
+			items.forEach(e->{
+				Long accId = e.getAccId();
+				if(accId==null)
+				{
+					throw new SecurityException("操作失败:发票项明细未绑定账单明细");
+				}
+				Acc acc = accMapper.selectById(accId);
+				if (acc == null) {
+					throw new SecurityException("操作账单失败");
+				}
+				//减少明细开票金额
+				acc.setInvoiceAmount(acc.getInvoiceAmount() != null ? acc.getInvoiceAmount().subtract(e.getThisAmount()) : (e.getThisAmount()).negate());
+				accMapper.updateById(acc);
+			});
+			select.setFoundStatus("未核销");
+			baseMapper.updateById(select);
+		}
+	}
+
+
 	//金蝶保存凭证测试
 	public void toJinDie(Items items,String accountId,String groupName,JdTenant jdTenant) {
 		//不是某一家 直接返回