This commit is contained in:
2026-07-27 06:28:06 +08:00
parent 5f8c5a8430
commit d823cedd3c
7 changed files with 226 additions and 66 deletions
+2
View File
@@ -1554,6 +1554,8 @@ namespace Model
public string u_date { get; set; } public string u_date { get; set; }
public string u_time { get; set; } public string u_time { get; set; }
public string addr { get; set; } public string addr { get; set; }
public string receipt_date { get; set; }
public string receipt_item { get; set; }
} }
} }
namespace Model namespace Model
+7 -1
View File
@@ -812,6 +812,8 @@
<Property Name="u_date" Type="varchar" MaxLength="10" /> <Property Name="u_date" Type="varchar" MaxLength="10" />
<Property Name="u_time" Type="varchar" MaxLength="6" /> <Property Name="u_time" Type="varchar" MaxLength="6" />
<Property Name="addr" Type="nvarchar" MaxLength="255" /> <Property Name="addr" Type="nvarchar" MaxLength="255" />
<Property Name="receipt_date" Type="varchar" MaxLength="10" />
<Property Name="receipt_item" Type="nvarchar" MaxLength="100" />
</EntityType> </EntityType>
<EntityType Name="receipt_master"> <EntityType Name="receipt_master">
<Key> <Key>
@@ -5464,6 +5466,8 @@
<Property Name="u_date" Type="String" MaxLength="10" FixedLength="false" Unicode="false" /> <Property Name="u_date" Type="String" MaxLength="10" FixedLength="false" Unicode="false" />
<Property Name="u_time" Type="String" MaxLength="6" FixedLength="false" Unicode="false" /> <Property Name="u_time" Type="String" MaxLength="6" FixedLength="false" Unicode="false" />
<Property Name="addr" Type="String" MaxLength="255" FixedLength="false" Unicode="true" /> <Property Name="addr" Type="String" MaxLength="255" FixedLength="false" Unicode="true" />
<Property Name="receipt_date" Type="String" MaxLength="10" FixedLength="false" Unicode="true" />
<Property Name="receipt_item" Type="String" MaxLength="100" FixedLength="false" Unicode="true" />
</EntityType> </EntityType>
<EntityType Name="receipt_master"> <EntityType Name="receipt_master">
<Key> <Key>
@@ -6584,7 +6588,9 @@
<EntitySetMapping Name="receipt_detail"> <EntitySetMapping Name="receipt_detail">
<EntityTypeMapping TypeName="Model.receipt_detail"> <EntityTypeMapping TypeName="Model.receipt_detail">
<MappingFragment StoreEntitySet="receipt_detail"> <MappingFragment StoreEntitySet="receipt_detail">
<ScalarProperty Name="addr" ColumnName="addr" /> <ScalarProperty Name="receipt_item" ColumnName="receipt_item" />
<ScalarProperty Name="receipt_date" ColumnName="receipt_date" />
<ScalarProperty Name="addr" ColumnName="addr" />
<ScalarProperty Name="u_time" ColumnName="u_time" /> <ScalarProperty Name="u_time" ColumnName="u_time" />
<ScalarProperty Name="u_date" ColumnName="u_date" /> <ScalarProperty Name="u_date" ColumnName="u_date" />
<ScalarProperty Name="u_user" ColumnName="u_user" /> <ScalarProperty Name="u_user" ColumnName="u_user" />
+2
View File
@@ -38,5 +38,7 @@ namespace Model.ViewModel
public int? amt { get; set; } public int? amt { get; set; }
public string caseofficer { get; set; } public string caseofficer { get; set; }
public string addr { get; set; } public string addr { get; set; }
public string receipt_date { get; set; }
public string receipt_item { get; set; }
} }
} }
+15 -10
View File
@@ -37,20 +37,20 @@ public class receiptController: ApiController
// //
} }
public string generend_receiptNo(string source) public string generend_receiptNo(string source,string receipt_date)
{ {
string start = source + "A"; string start ="1"+ (source=="1"?"A":"B");
string no = start + DateTime.Now.ToString("yyyyMMdd"); string no = start + receipt_date; //DateTime.Now.ToString("yyyyMMdd");
var qry = _db.receipt_detail.Where(x => x.receipt_no.StartsWith(no)); var qry = _db.receipt_detail.Where(x => x.receipt_no.StartsWith(no));
var receipt_no=qry.Select(x => x.receipt_no).Max(); var receipt_no=qry.Select(x => x.receipt_no).Max();
if (!string.IsNullOrEmpty(receipt_no)) if (!string.IsNullOrEmpty(receipt_no))
{ {
receipt_no= receipt_no.Remove(0,(start + DateTime.Now.ToString("yyyyMMdd")).Length); receipt_no= receipt_no.Remove(0,(start + receipt_date.Replace("-","")).Length);
return start + DateTime.Now.ToString("yyyyMMdd")+string.Format("{0:D4}", Int32.Parse(receipt_no)+1); return start + receipt_date.Replace("-", "") + string.Format("{0:D4}", Int32.Parse(receipt_no)+1);
} }
else else
{ {
return start + DateTime.Now.ToString("yyyyMMdd") + "0001"; return start + receipt_date.Replace("-", "") + "0001";
} }
} }
@@ -94,17 +94,19 @@ public class receiptController: ApiController
receipt_detail dd = new receipt_detail(); receipt_detail dd = new receipt_detail();
if (string.IsNullOrEmpty(pre_no)) if (string.IsNullOrEmpty(pre_no))
{ {
dd.receipt_no = generend_receiptNo(master.source); dd.receipt_no = generend_receiptNo(master.source,d.receipt_date.Replace("-",""));
} }
else else
{ {
string new_no = pre_no.Remove(0, 10); string new_no = pre_no.Remove(0, 10);
dd.receipt_no = master.source + "A" + DateTime.Now.ToString("yyyyMMdd") + string.Format("{0:D4}", Int32.Parse(new_no) + 1); dd.receipt_no = "1"+(master.source=="1"?"A":"B" )+d.receipt_date.Replace("-","") + string.Format("{0:D4}", Int32.Parse(new_no) + 1);
} }
dd.addr = d.addr; dd.addr = d.addr;
dd.title = d.title; dd.title = d.title;
dd.amt = d.amt; dd.amt = d.amt;
dd.caseofficer = d.caseofficer; dd.caseofficer = d.caseofficer;
dd.receipt_date= d.receipt_date;
dd.receipt_item = d.receipt_item;
dd.receipt_num = master.num; dd.receipt_num = master.num;
dd.c_date = DateTime.Now.ToString("yyyyMMdd"); dd.c_date = DateTime.Now.ToString("yyyyMMdd");
dd.c_time = DateTime.Now.ToString("HHmmss"); dd.c_time = DateTime.Now.ToString("HHmmss");
@@ -119,6 +121,7 @@ public class receiptController: ApiController
dd.title=d.title; dd.title=d.title;
dd.amt=d.amt; dd.amt=d.amt;
dd.caseofficer=d.caseofficer; dd.caseofficer=d.caseofficer;
dd.receipt_item=d.receipt_item;
dd.u_time = DateTime.Now.ToString("HHmmss"); dd.u_time = DateTime.Now.ToString("HHmmss");
dd.u_date = DateTime.Now.ToString("yyyyMMdd"); dd.u_date = DateTime.Now.ToString("yyyyMMdd");
} }
@@ -170,17 +173,19 @@ public class receiptController: ApiController
receipt_detail dd = new receipt_detail(); receipt_detail dd = new receipt_detail();
if (string.IsNullOrEmpty(pre_no)) if (string.IsNullOrEmpty(pre_no))
{ {
dd.receipt_no = generend_receiptNo(m.source); dd.receipt_no = generend_receiptNo(m.source, d.receipt_date.Replace("-", ""));
} }
else else
{ {
string new_no = pre_no.Remove(0,10); string new_no = pre_no.Remove(0,10);
dd.receipt_no = m.source + "A" + DateTime.Now.ToString("yyyyMMdd") + string.Format("{0:D4}", Int32.Parse(new_no)+1); dd.receipt_no ="1"+ (m.source=="1"?"A":"B") + d.receipt_date.Replace("-", "") + string.Format("{0:D4}", Int32.Parse(new_no)+1);
} }
dd.addr = d.addr; dd.addr = d.addr;
dd.title = d.title; dd.title = d.title;
dd.amt = d.amt; dd.amt = d.amt;
dd.caseofficer = d.caseofficer; dd.caseofficer = d.caseofficer;
dd.receipt_date=d.receipt_date;
dd.receipt_item = d.receipt_item;
dd.receipt_num = m.num; dd.receipt_num = m.num;
dd.c_date = DateTime.Now.ToString("yyyyMMdd"); dd.c_date = DateTime.Now.ToString("yyyyMMdd");
dd.c_time = DateTime.Now.ToString("HHmmss"); dd.c_time = DateTime.Now.ToString("HHmmss");
+32 -5
View File
@@ -106,7 +106,7 @@
<v-dialog v-model="modify_dialog.show" class="modify_modal"> <v-dialog v-model="modify_dialog.show" class="modify_modal">
<template> <template>
<keep-alive> <keep-alive exclude="receipt_component" >
<component :is="currentView" :num="twoData" :mode="modify_dialog.mode" @close-dialog="changeModifyDialog($event)"></component> <component :is="currentView" :num="twoData" :mode="modify_dialog.mode" @close-dialog="changeModifyDialog($event)"></component>
</keep-alive> </keep-alive>
@@ -115,6 +115,22 @@
</div> </div>
</asp:Content> </asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="offCanvasRight" Runat="Server"> <asp:Content ID="Content4" ContentPlaceHolderID="offCanvasRight" Runat="Server">
<div id="search_panel" alt="查詢收據資料">
<div class="mb-3">
<label class="form-label">資料來源</label>
<v-select :items="sources_items" item-text="text" item-value="value" v-model="search.source">
</v-select>
</div>
<div class="mb-3">
<label class="form-label">報名單號</label>
<input type="text" v-model="search.order_no" class="form-control" placeholder="" id="s_order_no" runat="server">
</div>
<div class="mb-3 p-2 border-top">
<a @click="btn_search" class="btn btn-outline-primary"><i class="mdi mdi-filter"></i> 搜尋</a>
<a class="btn btn-outline-secondary" @click="btn_all"><i class="mdi mdi-filter-remove"></i> 所有資料</a>
</div>
</div>
</asp:Content> </asp:Content>
<asp:Content ID="Content5" ContentPlaceHolderID="footer_script" Runat="Server"> <asp:Content ID="Content5" ContentPlaceHolderID="footer_script" Runat="Server">
<script> <script>
@@ -137,7 +153,6 @@
header: [ header: [
{ text: '序號', value: 'num' }, { text: '序號', value: 'num' },
{ text: '來源', value: 'source' }, { text: '來源', value: 'source' },
{ text: '開立日期', value: 'receipt_date' },
{ text: '報名單號', value: 'order_no', align: 'start' }, { text: '報名單號', value: 'order_no', align: 'start' },
{ text: '信眾', value: 'follower.u_name' }, { text: '信眾', value: 'follower.u_name' },
{ text: '總金額', value: 'total_amt' }, { text: '總金額', value: 'total_amt' },
@@ -192,6 +207,11 @@
source: '', source: '',
order_no: '', order_no: '',
}, },
sources_items: [
{ text: "法會/活動", value: "1" },
{text:"其他",value:"2"}
],
currentView: 'receipt-component' currentView: 'receipt-component'
} }
@@ -221,9 +241,12 @@
changeModifyDialog(event) { changeModifyDialog(event) {
this.modify_dialog.show = false this.modify_dialog.show = false
this.modify_dialog.mode = "" this.modify_dialog.mode = ""
this.twoData = 0
this.currentView = ""; this.currentView = "";
this.twoData = 0
if (event === "reload") { if (event === "reload") {
this.getDefault() this.getDefault()
} }
}, },
getSourceName(id) { getSourceName(id) {
@@ -400,13 +423,17 @@
} }
}, },
btn_search() { btn_search() {
this.isSearched = true;
this.search.activity_num = '';
this.getDefault(true) this.getDefault()
bootstrap.Offcanvas.getInstance(document.getElementById("offcanvasRight")).hide() bootstrap.Offcanvas.getInstance(document.getElementById("offcanvasRight")).hide()
}, },
btn_all() {
this.search.source = "";
this.search.order_no = "";
clearObjProps(this.search);
this.btn_search();
},
}, },
computed: { computed: {
pageCount() { pageCount() {
+144 -48
View File
@@ -28,7 +28,7 @@
</button> </button>
</div> </div>
</div> </div>
<div class="mb-3 col-12 col-md-6"> <!--<div class="mb-3 col-12 col-md-6">
<label for="" class="form-label">開立日期 <span class="text-danger">*</span></label> <label for="" class="form-label">開立日期 <span class="text-danger">*</span></label>
<v-menu ref="menu" <v-menu ref="menu"
v-model="menu" v-model="menu"
@@ -63,7 +63,7 @@
</v-btn> </v-btn>
</v-date-picker> </v-date-picker>
</v-menu> </v-menu>
</div> </div>-->
<div class="mb-3 col-12 col-md-6"> <div class="mb-3 col-12 col-md-6">
<label for="receiptStyle" class="form-label">收據格式 <span class="text-danger">*</span></label> <label for="receiptStyle" class="form-label">收據格式 <span class="text-danger">*</span></label>
<select class="form-select" id="receiptStyle" v-model="formData.style_num" required <select class="form-select" id="receiptStyle" v-model="formData.style_num" required
@@ -75,11 +75,13 @@
</select> </select>
</div> </div>
<div class="mb-3 col-12 col-md-6"> <div class="mb-3 col-12 col-md-6">
<v-text-field v-model="formData.total_amt" label="應收總金額" <label for="total_amt" class="form-label" >應收總金額</label>
<v-text-field v-model="formData.total_amt" id="total_amt"
:disabled="mode=='view'||mode=='edit'||formData.source=='1'"></v-text-field><!--從報名來的不能改總金額--> :disabled="mode=='view'||mode=='edit'||formData.source=='1'"></v-text-field><!--從報名來的不能改總金額-->
</div> </div>
<div class="mb-3 col-12 col-md-6"> <div class="mb-3 col-12 col-md-6">
<v-text-field v-model="alreadyAmt" label="已收總金額" <label for="alreadyAmt" class="form-label">已收總金額</label>
<v-text-field v-model="alreadyAmt" id="alreadyAmt"
:disabled="mode=='view'||mode=='edit'||formData.source=='1'"></v-text-field> :disabled="mode=='view'||mode=='edit'||formData.source=='1'"></v-text-field>
</div> </div>
</div> </div>
@@ -91,56 +93,102 @@
</div> </div>
<div class="card-body"> <div class="card-body">
<div class="row" v-show="mode!='view'"> <div class="row" v-show="mode!='view'">
<!--<div class="col-12 col-md-2">
<v-text-field v-model="newDetail.receipt_no" label="編號" :readonly="true"></v-text-field>
</div>-->
<div class="col-12 col-md-2"> <div class="col-12 col-md-2">
<v-text-field v-model="newDetail.title" label="抬頭"></v-text-field> <label for="" class="form-label">抬頭 <span class="text-danger">*</span></label>
<v-text-field v-model="newDetail.title"></v-text-field>
</div> </div>
<div class="col-12 col-md-2"> <div class="col-12 col-md-2">
<v-text-field v-model="newDetail.amt" label="金額"></v-text-field> <label for="" class="form-label">金額 <span class="text-danger">*</span></label>
</div> <v-text-field v-model="newDetail.amt"></v-text-field>
<div class="col-12 col-md-4">
<v-text-field v-model="newDetail.addr" label="地址"></v-text-field>
</div> </div>
<div class="col-12 col-md-2"> <div class="col-12 col-md-2">
<v-text-field v-model="newDetail.caseofficer" label="經手人"></v-text-field> <label for="" class="form-label">開立日期 <span class="text-danger">*</span></label>
<v-menu ref="menu"
v-model="menu"
:close-on-content-click="false"
:return-value.sync="newDetail.receipt_date"
transition="scale-transition"
offset-y
min-width="auto"
:disabled="mode=='view'||mode=='edit'">
<template v-slot:activator="{ on, attrs }">
<v-text-field v-model="newDetail.receipt_date"
prepend-icon="mdi-calendar"
readonly
v-bind="attrs"
v-on="on"></v-text-field>
</template>
<v-date-picker v-model="newDetail.receipt_date"
:active-picker.sync="activePicker"
:max="(new Date(Date.now() - (new Date()).getTimezoneOffset() * 60000)).toISOString().substring(0, 10)"
min="1950-01-01">
<v-spacer></v-spacer>
<v-btn text
color="primary"
@click.prevent="menu = false">
Cancel
</v-btn>
<v-btn text
color="primary"
@click.prevent="$refs.menu.save(newDetail.receipt_date)">
OK
</v-btn>
</v-date-picker>
</v-menu>
</div>
<div class="col-12 col-md-6">
<label for="" class="form-label">功德項目</label>
<v-text-field v-model="newDetail.receipt_item"> </v-text-field>
</div>
<!--</div>
<div class="row" v-show="mode!='view'">-->
<div class="col-12 col-md-8">
<label for="" class="form-label">地址</label>
<v-text-field v-model="newDetail.addr" ></v-text-field>
</div>
<div class="col-12 col-md-2">
<label for="" class="form-label">經手人 <span class="text-danger">*</span></label>
<v-text-field v-model="newDetail.caseofficer" ></v-text-field>
</div> </div>
<div class="col-12 col-md-2"> <div class="col-12 col-md-2">
<button class="btn btn-info" @click.prevent="addDetail">新增</button> <button class="btn btn-info" @click.prevent="addDetail">新增</button>
</div> </div>
</div> </div>
<div class="row" v-for="d in formDetail"> <div class="row" v-for="d in formDetail">
<div class="row">
<div class="col-12 col-md-2">
<v-text-field v-model="d.title" label="抬頭" :disabled="mode=='view'"></v-text-field>
</div>
<div class="col-12 col-md-2">
<v-text-field v-model="d.amt" label="金額" :disabled="mode=='view'"></v-text-field>
</div>
<div class="col-12 col-md-2">
<v-text-field v-model="d.receipt_date" label="開立日期" :disabled="mode=='view'||mode=='edit'"></v-text-field>
</div>
<div class="col-12 col-md-6">
<v-text-field v-model="d.receipt_item" label="功德項目" :disabled="mode=='view'"></v-text-field>
</div>
<div class="col-12 col-md-8">
<v-text-field v-model="d.addr" label="地址" :disabled="mode=='view'"></v-text-field>
</div>
<div class="col-12 col-md-2">
<v-text-field v-model="d.caseofficer" label="經手人" :disabled="mode=='view'"></v-text-field>
</div>
<div class="col-12 col-md-2">
<v-text-field v-model="d.receipt_no" label="收據編號" v-show="mode=='view'" :disabled="mode=='view'||mode=='edit'"></v-text-field>
</div>
</div>
</div>
<div class="row"> <div class="row">
<!--<div class="col-12 col-md-2">
<v-text-field v-model="d.receipt_no" label="編號"></v-text-field>
</div>-->
<div class="col-12 col-md-2"> <div class="col-12 col-md-2">
<v-text-field v-model="d.title" label="抬頭" :disabled="mode=='view'"></v-text-field> 收據已開立總金額 {{ countReceiptTotal() }}
</div>
<div class="col-12 col-md-2">
<v-text-field v-model="d.amt" label="金額" :disabled="mode=='view'"></v-text-field>
</div>
<div class="col-12 col-md-4">
<v-text-field v-model="d.addr" label="地址" :disabled="mode=='view'"></v-text-field>
</div>
<div class="col-12 col-md-2">
<v-text-field v-model="d.caseofficer" label="經手人" :disabled="mode=='view'"></v-text-field>
</div>
<div class="col-12 col-md-2">
<v-text-field v-model="d.receipt_no" label="收據編號" v-show="mode=='view'" :disabled="mode=='view'"></v-text-field>
</div> </div>
</div> </div>
</div>
</div>
<div class="row">
<div class="col-12 col-md-2">
收據已開立總金額 {{ countReceiptTotal() }}
</div>
</div>
</div> </div>
</div>
<div class="card"> <div class="card">
<div class="card-footer"> <div class="card-footer">
<button class="btn btn-primary" @click.prevent="saveReceipt" v-show="mode!='view'">存檔</button> <button class="btn btn-primary" @click.prevent="saveReceipt" v-show="mode!='view'">存檔</button>
@@ -204,6 +252,7 @@
<script> <script>
module.exports = { module.exports = {
name:"receipt_component",
props: { props: {
num: { num: {
type: Number // num type: Number // num
@@ -237,7 +286,9 @@
title: "", title: "",
addr: "", addr: "",
amt: 0, amt: 0,
caseofficer: "" caseofficer: "",
receipt_date: "",
receipt_item:"",
}, },
formDetail: [ formDetail: [
], ],
@@ -286,7 +337,8 @@
deep:true, deep:true,
}, },
num: { num: {
handler() { handler(newVal) {
console.log("........", newVal)
this.formData = { this.formData = {
source: '', source: '',
order_no: '', order_no: '',
@@ -296,7 +348,7 @@
style_num: 0, style_num: 0,
num: 0 num: 0
} }
if (this.mode == "view"||this.mode=="edit") { if ((this.mode == "view"||this.mode=="edit")&&newVal!=0) {
this.getReceipt(); this.getReceipt();
} }
}, },
@@ -373,6 +425,22 @@
.catch(error => console.log(error)) .catch(error => console.log(error))
}, },
addDetail() { addDetail() {
if (this.newDetail.title === "") {
this.showSnack("抬頭必須填寫")
return
}
if (this.newDetail.amt ===0 ) {
this.showSnack("金額不可為0")
return
}
if (this.newDetail.receipt_date === "") {
this.showSnack("開立日期必須填寫")
return
}
if (this.newDetail.caseofficer === "") {
this.showSnack("經手人必須填寫")
return
}
this.formDetail.push({ ...this.newDetail }) this.formDetail.push({ ...this.newDetail })
this.newDetail = { this.newDetail = {
receipt_no: "", receipt_no: "",
@@ -381,7 +449,9 @@
amt: 0, amt: 0,
caseofficer: "", caseofficer: "",
num: 0, num: 0,
receipt_num:0 receipt_num: 0,
receipt_date: "",
receipt_item:""
} }
}, },
@@ -403,10 +473,10 @@
this.showSnack("請選擇活動/法會"); this.showSnack("請選擇活動/法會");
return false; return false;
} }
if (this.formData.receipt_date == "") { //if (this.formData.receipt_date == "") {
this.showSnack("請選擇開立日期"); // this.showSnack("請選擇開立日期");
return false; // return false;
} //}
if (this.formData.style_num==0) { if (this.formData.style_num==0) {
this.showSnack("請選擇收據格式"); this.showSnack("請選擇收據格式");
return false; return false;
@@ -443,6 +513,7 @@
.catch(error => console.log(error)) .catch(error => console.log(error))
}, },
closeWindow(param) { closeWindow(param) {
//this.num=0
this.formDetail.length = 0 this.formDetail.length = 0
this.formData = { this.formData = {
source: '', source: '',
@@ -510,7 +581,7 @@
} }
this.formDetail.length = 0; this.formDetail.length = 0;
this.alreadyAmt = 0; this.alreadyAmt = 0;
console.log("deactivated");
}, },
activated() { activated() {
this.getReceiptStyles(); this.getReceiptStyles();
@@ -526,8 +597,33 @@
this.formDetail.length = 0; this.formDetail.length = 0;
this.alreadyAmt = 0; this.alreadyAmt = 0;
}, },
beforeUnmount() {
console.log("beforeUnmount");
this.formData = {
source: '',
order_no: '',
receipt_date: null,
receipt_style: "",
total_amt: 0,
style_num: 0,
num: 0
}
this.formDetail.length = 0;
this.alreadyAmt = 0;
},
mounted() { mounted() {
//this.formDetail.push() this.getReceiptStyles();
this.formData = {
source: '',
order_no: '',
receipt_date: null,
receipt_style: "",
total_amt: 0,
style_num: 0,
num: 0
}
this.formDetail.length = 0;
this.alreadyAmt = 0;
}, },
computed: { computed: {
+22
View File
@@ -1,9 +1,13 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Antlr" version="3.5.0.2" targetFramework="net48" /> <package id="Antlr" version="3.5.0.2" targetFramework="net48" />
<package id="BouncyCastle.Cryptography" version="2.6.2" targetFramework="net48" />
<package id="DocumentFormat.OpenXml" version="3.5.1" targetFramework="net48" /> <package id="DocumentFormat.OpenXml" version="3.5.1" targetFramework="net48" />
<package id="DocumentFormat.OpenXml.Framework" version="3.5.1" targetFramework="net48" /> <package id="DocumentFormat.OpenXml.Framework" version="3.5.1" targetFramework="net48" />
<package id="EntityFramework" version="6.4.4" targetFramework="net48" /> <package id="EntityFramework" version="6.4.4" targetFramework="net48" />
<package id="Enums.NET" version="5.0.0" targetFramework="net48" />
<package id="ExtendedNumerics.BigDecimal" version="2025.1001.2.129" targetFramework="net48" />
<package id="MathNet.Numerics.Signed" version="5.0.0" targetFramework="net48" />
<package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net48" /> <package id="Microsoft.AspNet.Razor" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net48" /> <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net48" />
<package id="Microsoft.AspNet.Web.Optimization.WebForms" version="1.1.3" targetFramework="net48" /> <package id="Microsoft.AspNet.Web.Optimization.WebForms" version="1.1.3" targetFramework="net48" />
@@ -12,12 +16,30 @@
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.7" targetFramework="net48" /> <package id="Microsoft.AspNet.WebApi.Core" version="5.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.7" targetFramework="net48" /> <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.7" targetFramework="net48" />
<package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net48" /> <package id="Microsoft.AspNet.WebPages" version="3.2.7" targetFramework="net48" />
<package id="Microsoft.Build.Tasks.Git" version="8.0.0" targetFramework="net48" developmentDependency="true" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="3.6.0" targetFramework="net48" /> <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="3.6.0" targetFramework="net48" />
<package id="Microsoft.IO.RecyclableMemoryStream" version="3.0.1" targetFramework="net48" />
<package id="Microsoft.Owin" version="4.2.0" targetFramework="net48" /> <package id="Microsoft.Owin" version="4.2.0" targetFramework="net48" />
<package id="Microsoft.Owin.Security" version="4.2.0" targetFramework="net48" /> <package id="Microsoft.Owin.Security" version="4.2.0" targetFramework="net48" />
<package id="Microsoft.SourceLink.Common" version="8.0.0" targetFramework="net48" developmentDependency="true" />
<package id="Microsoft.SourceLink.GitHub" version="8.0.0" targetFramework="net48" developmentDependency="true" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net48" /> <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net48" />
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net48" /> <package id="Newtonsoft.Json" version="6.0.8" targetFramework="net48" />
<package id="NPOI" version="2.8.0" targetFramework="net48" />
<package id="Owin" version="1.0" targetFramework="net48" /> <package id="Owin" version="1.0" targetFramework="net48" />
<package id="PagedList" version="1.17.0.0" targetFramework="net48" /> <package id="PagedList" version="1.17.0.0" targetFramework="net48" />
<package id="SharpZipLib" version="1.4.2" targetFramework="net48" />
<package id="SkiaSharp" version="3.119.2" targetFramework="net48" />
<package id="SkiaSharp.NativeAssets.Linux.NoDependencies" version="3.119.2" targetFramework="net48" />
<package id="SkiaSharp.NativeAssets.macOS" version="3.119.2" targetFramework="net48" />
<package id="SkiaSharp.NativeAssets.Win32" version="3.119.2" targetFramework="net48" />
<package id="System.Buffers" version="4.5.1" targetFramework="net48" />
<package id="System.Memory" version="4.5.5" targetFramework="net48" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net48" />
<package id="System.Security.Cryptography.Xml" version="8.0.2" targetFramework="net48" />
<package id="System.Text.Encoding.CodePages" version="8.0.0" targetFramework="net48" />
<package id="System.Threading.Tasks.Extensions" version="4.5.2" targetFramework="net48" />
<package id="WebGrease" version="1.6.0" targetFramework="net48" /> <package id="WebGrease" version="1.6.0" targetFramework="net48" />
<package id="ZString" version="2.6.0" targetFramework="net48" />
</packages> </packages>