兼职凭证
This commit is contained in:
@ -57,3 +57,10 @@ export function exportSalary(query: any): any {
|
||||
})
|
||||
}
|
||||
|
||||
export function generateVoucherSubmit(data: any) {
|
||||
return request({
|
||||
url: '/employee/salary/generate-voucher',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
@ -205,6 +205,36 @@
|
||||
{{ formatAmount(scope.row.businessExpenditureCosts) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="收票凭证" align="center" width="60"
|
||||
:show-overflow-tooltip="true" fixed="right">
|
||||
<template #default="scope">
|
||||
<el-button v-if="scope.row.employeeType === 'PARTTIME' && (scope.row.accrualVoucherId === null ||scope.row.accrualVoucherId ==='')"
|
||||
type="text"
|
||||
@click="generateVoucher(scope.row,2)">
|
||||
生成
|
||||
</el-button>
|
||||
<el-button v-if="scope.row.employeeType === 'PARTTIME' && scope.row.accrualVoucherId !== null &&scope.row.accrualVoucherId !==''"
|
||||
type="text"
|
||||
@click="viewVoucher(scope.row.accrualVoucherId)">
|
||||
查看
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="发放凭证" align="center" width="60"
|
||||
:show-overflow-tooltip="true" fixed="right">
|
||||
<template #default="scope">
|
||||
<el-button v-if="scope.row.employeeType === 'PARTTIME' && (scope.row.salaryVoucherId === null ||scope.row.salaryVoucherId ==='')"
|
||||
type="text"
|
||||
@click="generateVoucher(scope.row,3)">
|
||||
生成
|
||||
</el-button>
|
||||
<el-button v-if="scope.row.employeeType === 'PARTTIME' && scope.row.salaryVoucherId !== null &&scope.row.salaryVoucherId !==''"
|
||||
type="text"
|
||||
@click="viewVoucher(scope.row.salaryVoucherId)">
|
||||
查看
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="操作" align="center" fixed="right" width="180">
|
||||
<template #default="scope">
|
||||
<el-button @click="handleUpdate(scope.row)">
|
||||
@ -247,23 +277,29 @@
|
||||
<edit-form :title="title" :open="openForm"
|
||||
:form-id="id"
|
||||
@dialogOfClosedMethods="dialogOfClosedMethods"></edit-form>-->
|
||||
<!-- 添加或修改凭证记录对话框 -->
|
||||
<el-drawer :title="voucherTitle" v-model="voucherOpen" :close-on-click-modal="false" @close="getList" size="1200px">
|
||||
<template #header>
|
||||
<h4>{{ voucherTitle }}</h4>
|
||||
</template>
|
||||
<voucher-edit v-if="voucherOpen" v-model="voucherForm" :edit="!voucherPreviewMode" :dialog="true" :auto="false"
|
||||
@submit="submitForm"></voucher-edit>
|
||||
</el-drawer>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import {reactive, ref, toRefs, getCurrentInstance} from "vue";
|
||||
import {useI18n} from "vue-i18n";
|
||||
import {delSalary, exportSalary, fetchPage, salarySummary} from "@/api/system/hr/employee-salary";
|
||||
import drawerTable from "./salaryDetail/drawer.vue"
|
||||
import {delSalary, exportSalary, fetchPage, salarySummary, generateVoucherSubmit} from "@/api/system/hr/employee-salary";
|
||||
import {ElForm} from "element-plus";
|
||||
import editForm from "./salaryDetail/form-drawer.vue"
|
||||
import modal from "@/plugins/modal";
|
||||
import {formatAmount} from "@/utils";
|
||||
import {addEmployee, updateEmployee} from "@/api/system/hr/employee";
|
||||
import {saveSummary} from "@/api/system/hr/employee-summary";
|
||||
import {useRouter} from "vue-router";
|
||||
import {h} from 'vue'
|
||||
import type {VNode} from 'vue'
|
||||
import booksSetStore from "@/store/modules/bookStore";
|
||||
import * as voucherApis from "@/api/system/voucher/voucher";
|
||||
import voucherEdit from "@/views/voucher/voucher-edit.vue";
|
||||
|
||||
const router: any = useRouter();
|
||||
const {t} = useI18n()
|
||||
@ -286,8 +322,13 @@ const data: any = reactive({
|
||||
label: [
|
||||
{required: true, message: "请输入名称", trigger: "blur"},
|
||||
],
|
||||
}
|
||||
},
|
||||
voucherForm: {},
|
||||
|
||||
});
|
||||
const voucherOpen = ref(false);
|
||||
const voucherPreviewMode = ref(false);
|
||||
const voucherTitle = ref("");
|
||||
const dataList = ref([]);
|
||||
const open = ref(false);
|
||||
const openForm = ref(false);
|
||||
@ -300,7 +341,7 @@ const selectionlist: any = ref<any>([]);
|
||||
const editFlag: any = ref(false);
|
||||
const editTitle: any = ref('');
|
||||
const formRef = ref<InstanceType<typeof ElForm> | null>(null);
|
||||
const {queryParams, form, rules} = toRefs(data);
|
||||
const {queryParams, form, rules, voucherForm} = toRefs(data);
|
||||
let accOptions: any = ref([]);
|
||||
let tableSummary: any = ref([]);
|
||||
const shortcuts = [
|
||||
@ -531,6 +572,30 @@ function submitForm() {
|
||||
})
|
||||
}
|
||||
|
||||
function generateVoucher(row: any, voucherType: number) {
|
||||
generateVoucherSubmit({id: row.id, voucherType: voucherType}).then((res: any) => {
|
||||
if (res.code === 0) {
|
||||
getList();
|
||||
modal.msgSuccess("操作成功");
|
||||
viewVoucher(res.data)
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/** 查看操作 */
|
||||
function viewVoucher(voucherId: any) {
|
||||
voucherApis.getOneVoucher(voucherId).then((response: any) => {
|
||||
response.data.items.forEach((t: any) => {
|
||||
t.subjectCode = t.subjectName.split("-")[0]
|
||||
// t.detailedSubjectCode = t.detailedAccounts.split("-")[0]
|
||||
})
|
||||
voucherForm.value = response.data
|
||||
voucherOpen.value = true;
|
||||
voucherPreviewMode.value = false;
|
||||
voucherTitle.value = "凭证记录";
|
||||
});
|
||||
}
|
||||
|
||||
getList()
|
||||
</script>
|
||||
|
||||
|
||||
@ -182,11 +182,11 @@
|
||||
</el-table-column>
|
||||
<el-table-column prop="accrualVoucherId" label="计提/收票凭证" align="center" fixed="right" width="90">
|
||||
<template #default="scope">
|
||||
<el-button v-if="(scope.row.accrualVoucherId === null ||scope.row.accrualVoucherId ==='')" type="text"
|
||||
@click="generateVoucher(scope.row,scope.row.label === 'salary'? 0 : 2)">
|
||||
<el-button v-if="(scope.row.accrualVoucherId === null ||scope.row.accrualVoucherId ==='') && scope.row.label === 'salary'" type="text"
|
||||
@click="generateVoucher(scope.row,0)">
|
||||
生成
|
||||
</el-button>
|
||||
<el-button v-if="scope.row.accrualVoucherId !== null &&scope.row.accrualVoucherId !==''" type="text"
|
||||
<el-button v-if="scope.row.accrualVoucherId !== null &&scope.row.accrualVoucherId !=='' && scope.row.label === 'salary'" type="text"
|
||||
@click="viewVoucher(scope.row.accrualVoucherId)">
|
||||
查看
|
||||
</el-button>
|
||||
@ -194,11 +194,11 @@
|
||||
</el-table-column>
|
||||
<el-table-column prop="salaryVoucherId" label="发放凭证" align="center" fixed="right" width="90">
|
||||
<template #default="scope">
|
||||
<el-button v-if="(scope.row.salaryVoucherId === null ||scope.row.salaryVoucherId ==='')" type="text"
|
||||
@click="generateVoucher(scope.row,scope.row.label === 'salary'? 1 : 3)">
|
||||
<el-button v-if="(scope.row.salaryVoucherId === null ||scope.row.salaryVoucherId ==='') && scope.row.label === 'salary'" type="text"
|
||||
@click="generateVoucher(scope.row,1)">
|
||||
生成
|
||||
</el-button>
|
||||
<el-button v-if="scope.row.salaryVoucherId !== null &&scope.row.salaryVoucherId !==''" type="text"
|
||||
<el-button v-if="scope.row.salaryVoucherId !== null &&scope.row.salaryVoucherId !=='' && scope.row.label === 'salary'" type="text"
|
||||
@click="viewVoucher(scope.row.salaryVoucherId)">
|
||||
查看
|
||||
</el-button>
|
||||
|
||||
@ -113,6 +113,18 @@ public class EmployeeSalary extends BaseEntity {
|
||||
*/
|
||||
private BigDecimal insuranceUnemployment;
|
||||
|
||||
/**
|
||||
* 收票工资凭证编码
|
||||
*/
|
||||
@TableField(updateStrategy = FieldStrategy.ALWAYS)
|
||||
private String accrualVoucherId;
|
||||
|
||||
/**
|
||||
* 发放工资凭证编码
|
||||
*/
|
||||
@TableField(updateStrategy = FieldStrategy.ALWAYS)
|
||||
private String salaryVoucherId;
|
||||
|
||||
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@TableLogic(value = "n", delval = "y")
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
|
||||
package com.jinbooks.persistence.service;
|
||||
|
||||
import com.jinbooks.entity.voucher.dto.GenerateVoucherDto;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@ -45,4 +46,6 @@ public interface EmployeeSalaryService extends IService<EmployeeSalary> {
|
||||
|
||||
|
||||
Message<String> exportTaxItems(SalaryDetailPageDto dto, HttpServletResponse response);
|
||||
|
||||
Message<String> generateVoucher(GenerateVoucherDto dto);
|
||||
}
|
||||
|
||||
@ -19,6 +19,20 @@
|
||||
package com.jinbooks.persistence.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.jinbooks.entity.book.Book;
|
||||
import com.jinbooks.entity.book.BookSubject;
|
||||
import com.jinbooks.entity.hr.*;
|
||||
import com.jinbooks.entity.voucher.dto.GenerateVoucherDto;
|
||||
import com.jinbooks.entity.voucher.dto.VoucherChangeDto;
|
||||
import com.jinbooks.entity.voucher.dto.VoucherItemChangeDto;
|
||||
import com.jinbooks.enums.SalaryVoucherTemplateEnum;
|
||||
import com.jinbooks.enums.VoucherStatusEnum;
|
||||
import com.jinbooks.persistence.mapper.*;
|
||||
import com.jinbooks.persistence.service.VoucherService;
|
||||
import jakarta.servlet.ServletOutputStream;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
|
||||
@ -30,17 +44,12 @@ import com.jinbooks.constants.ConstsUser;
|
||||
import com.jinbooks.constants.ContentType;
|
||||
import com.jinbooks.entity.Message;
|
||||
import com.jinbooks.entity.dto.ListIdsDto;
|
||||
import com.jinbooks.entity.hr.EmployeeSalary;
|
||||
import com.jinbooks.entity.hr.EmployeeSalarySummary;
|
||||
import com.jinbooks.entity.hr.Employee;
|
||||
import com.jinbooks.entity.hr.dto.SalaryDetailChangeDto;
|
||||
import com.jinbooks.entity.hr.dto.SalaryDetailPageDto;
|
||||
import com.jinbooks.entity.hr.dto.SalarySummaryChangeDto;
|
||||
import com.jinbooks.entity.PeriodStr;
|
||||
import com.jinbooks.entity.hr.vo.TaxDeductionExportVo;
|
||||
import com.jinbooks.exception.BusinessException;
|
||||
import com.jinbooks.persistence.mapper.EmployeeSalaryMapper;
|
||||
import com.jinbooks.persistence.mapper.EmployeeMapper;
|
||||
import com.jinbooks.persistence.service.EmployeeSalaryService;
|
||||
import com.jinbooks.util.PeriodDateUtils;
|
||||
import com.jinbooks.util.DateUtils;
|
||||
@ -62,11 +71,11 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.net.URLEncoder;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @description:
|
||||
@ -83,6 +92,21 @@ public class EmployeeSalaryServiceImpl extends ServiceImpl<EmployeeSalaryMapper,
|
||||
@Autowired
|
||||
private EmployeeMapper employeeMapper;
|
||||
|
||||
@Autowired
|
||||
private BookMapper bookMapper;
|
||||
|
||||
@Autowired
|
||||
private EmployeeSalaryVoucherRuleMapper employeeSalaryVoucherRuleMapper;
|
||||
|
||||
@Autowired
|
||||
private EmployeeSalaryVoucherRuleTemplateMapper employeeSalaryVoucherRuleTemplateMapper;
|
||||
|
||||
@Autowired
|
||||
private BookSubjectMapper bookSubjectMapper;
|
||||
|
||||
@Autowired
|
||||
private VoucherService voucherService;
|
||||
|
||||
@Override
|
||||
public Message<Page<EmployeeSalary>> pageList(SalaryDetailPageDto dto) {
|
||||
|
||||
@ -278,4 +302,178 @@ public class EmployeeSalaryServiceImpl extends ServiceImpl<EmployeeSalaryMapper,
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Message<String> generateVoucher(GenerateVoucherDto dto) {
|
||||
String bookId = dto.getBookId();
|
||||
Book book = bookMapper.selectById(bookId);
|
||||
Integer voucherType = dto.getVoucherType();
|
||||
EmployeeSalary summary = super.getById(dto.getId());
|
||||
|
||||
if (voucherType == 0 && StringUtils.isNotBlank(summary.getAccrualVoucherId())) {
|
||||
return Message.ok("计提凭证已生成");
|
||||
} else if (voucherType == 1 && StringUtils.isNotBlank(summary.getSalaryVoucherId())) {
|
||||
return Message.ok("发放凭证已生成");
|
||||
} else if (voucherType == 2 && StringUtils.isNotBlank(summary.getAccrualVoucherId())) {
|
||||
return Message.ok("收票(兼职)凭证已生成");
|
||||
} else if (voucherType == 3 && StringUtils.isNotBlank(summary.getSalaryVoucherId())) {
|
||||
return Message.ok("发放(兼职)凭证已生成");
|
||||
}
|
||||
|
||||
Date formattedDate = getFormattedCurrentDate();
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(formattedDate);
|
||||
int year = calendar.get(Calendar.YEAR);
|
||||
int month = calendar.get(Calendar.MONTH) + 1;
|
||||
|
||||
List<EmployeeSalaryVoucherRule> rules = getSalaryVoucherRules(bookId, voucherType);
|
||||
BigDecimal debitAmount = BigDecimal.ZERO;
|
||||
BigDecimal creditAmount = BigDecimal.ZERO;
|
||||
|
||||
List<VoucherItemChangeDto> voucherItems = new ArrayList<>();
|
||||
|
||||
for (EmployeeSalaryVoucherRule rule : rules) {
|
||||
rule.setSummary(generateVoucherItemSummary(rule.getSummary(), year, month));
|
||||
|
||||
String selectedValue = rule.getSelectedValue();
|
||||
SalaryVoucherTemplateEnum matchedEnum = SalaryVoucherTemplateEnum.fromValue(selectedValue);
|
||||
if (matchedEnum == null) {
|
||||
throw new BusinessException(50001, "凭证模板明细数据有误,请联系管理员");
|
||||
}
|
||||
|
||||
BigDecimal amount = switch (matchedEnum) {
|
||||
case COMPANY_COSTS -> summary.getBusinessExpenditureCosts();
|
||||
case SALARY_PAYABLE -> summary.getTotalAmount().add(summary.getTotalSocialInsurance()).add(summary.getProvidentFund()).add(summary.getPersonalTax());
|
||||
case ACTUAL_SALARY -> summary.getTotalAmount();
|
||||
case PERSONAL_INCOME_TAX -> summary.getPersonalTax();
|
||||
case PERSONAL_WITHHOLDING_SOCIAL_SECURITY -> summary.getTotalSocialInsurance();
|
||||
case PERSONAL_WITHHOLDING_PROVIDENT_FUND -> summary.getProvidentFund();
|
||||
case ENTERPRISES_PAY_SOCIAL_INSURANCE -> summary.getBusinessSocialInsurance();
|
||||
case PROVIDENT_FUND_PAID_BY_ENTERPRISES -> summary.getBusinessProvidentFund();
|
||||
};
|
||||
|
||||
boolean isDebit = "1".equals(rule.getDirection());
|
||||
voucherItems.add(createVoucherItemDto(bookId, rule, isDebit, amount));
|
||||
|
||||
if (isDebit) {
|
||||
debitAmount = debitAmount.add(amount);
|
||||
} else {
|
||||
creditAmount = creditAmount.add(amount);
|
||||
}
|
||||
}
|
||||
|
||||
if (debitAmount.compareTo(creditAmount) != 0) {
|
||||
throw new BusinessException(50001, "借贷不平衡,请调整工资凭证模板");
|
||||
}
|
||||
|
||||
VoucherChangeDto voucherChangeDto = createVoucherChangeDto(book, bookId, formattedDate, year, month, debitAmount);
|
||||
voucherChangeDto.setRemark(rules.get(0).getSummary());
|
||||
voucherChangeDto.setItems(voucherItems);
|
||||
voucherChangeDto.setStatus(VoucherStatusEnum.DRAFT.getValue());
|
||||
|
||||
voucherService.save(voucherChangeDto);
|
||||
|
||||
LambdaUpdateWrapper<EmployeeSalary> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
if (voucherType == 0 || voucherType == 2) {
|
||||
updateWrapper.set(EmployeeSalary::getAccrualVoucherId, voucherChangeDto.getId());
|
||||
} else if (voucherType == 1 || voucherType == 3) {
|
||||
updateWrapper.set(EmployeeSalary::getSalaryVoucherId, voucherChangeDto.getId());
|
||||
}
|
||||
updateWrapper.eq(EmployeeSalary::getId, dto.getId());
|
||||
super.update(updateWrapper);
|
||||
|
||||
return Message.ok(voucherChangeDto.getId());
|
||||
}
|
||||
|
||||
public String generateVoucherItemSummary(String summary, int year, int month) {
|
||||
return summary.replace("{yy}", (year + "").substring(2)).replace("{yyyy}", year + "").replace("{mm}", month + "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the current date formatted as yyyy-MM-dd with time set to 00:00:00
|
||||
*/
|
||||
private Date getFormattedCurrentDate() {
|
||||
try {
|
||||
Date currentDate = new Date();
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
||||
String formattedDateStr = dateFormat.format(currentDate);
|
||||
return dateFormat.parse(formattedDateStr);
|
||||
} catch (ParseException e) {
|
||||
log.error("Error formatting date");
|
||||
return new Date();
|
||||
}
|
||||
}
|
||||
|
||||
private List<EmployeeSalaryVoucherRule> getSalaryVoucherRules(String bookId, Integer voucherType) {
|
||||
List<EmployeeSalaryVoucherRuleTemplate> employeeSalaryVoucherRuleTemplates = employeeSalaryVoucherRuleTemplateMapper.selectList(Wrappers.<EmployeeSalaryVoucherRuleTemplate>lambdaQuery()
|
||||
.eq(EmployeeSalaryVoucherRuleTemplate::getBookId, bookId)
|
||||
.eq(EmployeeSalaryVoucherRuleTemplate::getStatus, 1)
|
||||
.eq(EmployeeSalaryVoucherRuleTemplate::getVoucherType, voucherType));
|
||||
if (ObjectUtils.isEmpty(employeeSalaryVoucherRuleTemplates)) {
|
||||
if (Objects.equals(voucherType, 0)) {
|
||||
throw new BusinessException(50001, "缺少计提工资凭证模板,请先在工资凭证规则处生成");
|
||||
} else {
|
||||
throw new BusinessException(50001, "缺少发放工资凭证模板,请先在工资凭证规则处生成");
|
||||
}
|
||||
}
|
||||
|
||||
String id = employeeSalaryVoucherRuleTemplates.get(0).getId();
|
||||
List<EmployeeSalaryVoucherRule> employeeSalaryVoucherRules = employeeSalaryVoucherRuleMapper.selectList(Wrappers.<EmployeeSalaryVoucherRule>lambdaQuery()
|
||||
.eq(EmployeeSalaryVoucherRule::getTemplateId, id));
|
||||
|
||||
if (employeeSalaryVoucherRules.size() < 2) {
|
||||
throw new BusinessException(50001, "请添加模板明细数据");
|
||||
}
|
||||
|
||||
return employeeSalaryVoucherRules;
|
||||
}
|
||||
|
||||
private VoucherItemChangeDto createVoucherItemDto(String bookId,
|
||||
EmployeeSalaryVoucherRule rule, boolean isDebit, BigDecimal amount) {
|
||||
|
||||
LambdaQueryWrapper<BookSubject> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(BookSubject::getBookId, bookId);
|
||||
wrapper.eq(BookSubject::getCode, rule.getSubjectCode());
|
||||
BookSubject bookSubject = bookSubjectMapper.selectOne(wrapper);
|
||||
|
||||
if (Objects.isNull(bookSubject)) {
|
||||
throw new BusinessException(50001, "查询不到该工资凭证规则设置的账套科目,请检查。");
|
||||
}
|
||||
|
||||
VoucherItemChangeDto itemDto = new VoucherItemChangeDto();
|
||||
itemDto.setSummary(rule.getSummary());
|
||||
itemDto.setSubjectId(bookSubject.getId());
|
||||
if (isDebit) {
|
||||
itemDto.setDebitAmount(amount);
|
||||
} else {
|
||||
itemDto.setCreditAmount(amount);
|
||||
}
|
||||
itemDto.setAuxiliary(List.of());
|
||||
itemDto.setSubjectCode(bookSubject.getCode());
|
||||
itemDto.setSubjectName(bookSubject.getCode() + "-" + bookSubject.getName());
|
||||
itemDto.setDetailedAccounts("");
|
||||
// itemDto.setSubjectBalance(BigDecimal.ZERO);
|
||||
|
||||
return itemDto;
|
||||
}
|
||||
|
||||
private VoucherChangeDto createVoucherChangeDto(Book book, String bookId,
|
||||
Date voucherDate, Integer year, Integer month, BigDecimal amount) {
|
||||
|
||||
Integer wordNum = voucherService.getAbleWordNum(bookId, "记", null, null).getData();
|
||||
|
||||
VoucherChangeDto dto = new VoucherChangeDto();
|
||||
dto.setWordHead("记");
|
||||
dto.setWordNum(wordNum);
|
||||
dto.setBookId(bookId);
|
||||
dto.setCompanyName(book.getCompanyName());
|
||||
dto.setVoucherDate(voucherDate);
|
||||
dto.setVoucherYear(year);
|
||||
dto.setVoucherMonth(month);
|
||||
dto.setDebitAmount(amount);
|
||||
dto.setCreditAmount(amount);
|
||||
|
||||
return dto;
|
||||
}
|
||||
}
|
||||
|
||||
@ -28,6 +28,7 @@ import com.jinbooks.entity.hr.dto.SalaryDetailChangeDto;
|
||||
import com.jinbooks.entity.hr.dto.SalaryDetailPageDto;
|
||||
import com.jinbooks.entity.hr.dto.SalarySummaryChangeDto;
|
||||
import com.jinbooks.entity.idm.UserInfo;
|
||||
import com.jinbooks.entity.voucher.dto.GenerateVoucherDto;
|
||||
import com.jinbooks.persistence.service.EmployeeSalaryService;
|
||||
import com.jinbooks.validate.AddGroup;
|
||||
import com.jinbooks.validate.EditGroup;
|
||||
@ -108,4 +109,11 @@ public class EmployeeSalaryController {
|
||||
public Message<String> delete(@RequestBody ListIdsDto dto) {
|
||||
return employeeSalaryService.delete(dto);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/generate-voucher")
|
||||
public Message<String> generateVoucher(@Validated @RequestBody GenerateVoucherDto dto, @CurrentUser UserInfo currentUser) {
|
||||
dto.setBookId(currentUser.getBookId());
|
||||
return employeeSalaryService.generateVoucher(dto);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user