Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
BookingMyHrManagement
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Registry
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chanachai
BookingMyHrManagement
Commits
4c4314e6
Commit
4c4314e6
authored
Mar 18, 2025
by
Ooh-Ao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fd
parent
a3a4f0b1
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
31 additions
and
13 deletions
+31
-13
borrow_controller.cpython-312.pyc
...controllers/__pycache__/borrow_controller.cpython-312.pyc
+0
-0
borrow_controller.py
API-Fast/src/controllers/borrow_controller.py
+19
-6
borrow_schema.cpython-312.pyc
...ast/src/schemas/__pycache__/borrow_schema.cpython-312.pyc
+0
-0
borrow_schema.py
API-Fast/src/schemas/borrow_schema.py
+4
-1
borrow-transactions.ts
Web-Manage/src/app/DPU/models/borrow-transactions.ts
+8
-6
No files found.
API-Fast/src/controllers/__pycache__/borrow_controller.cpython-312.pyc
View file @
4c4314e6
No preview for this file type
API-Fast/src/controllers/borrow_controller.py
View file @
4c4314e6
...
@@ -16,14 +16,16 @@ from ..schemas.borrow_schema import BorrowTransactionBase
...
@@ -16,14 +16,16 @@ from ..schemas.borrow_schema import BorrowTransactionBase
# CREATE
# CREATE
async
def
create_borrow_transaction
(
db
:
AsyncSession
,
borrow_in
:
BorrowTransactionBase
):
async
def
create_borrow_transaction
(
db
:
AsyncSession
,
borrow_in
:
BorrowTransactionBase
):
"""
"""
สมมติว่าตอนสร้างจะเป็นสถานะ requested ก่อน
สร้าง BorrowTransaction โดยที่ถ้าสถานะเป็น 'approved'
ยังไม่ตัดจำนวนใน project_equipment
ระบบจะตัดจำนวนในสต็อกทันที (deduct stock) และบันทึกสถานะเป็น 'approved'
Admin เป็นผู้สร้าง transaction นี้และระบุ memberId ที่เบิกอุปกรณ์
"""
"""
# หา ProjectEquipment ที่อ้างอิง
pe_db
=
await
db
.
get
(
ProjectEquipment
,
borrow_in
.
peId
)
pe_db
=
await
db
.
get
(
ProjectEquipment
,
borrow_in
.
peId
)
if
not
pe_db
:
if
not
pe_db
:
raise
HTTPException
(
status_code
=
404
,
detail
=
"ProjectEquipment not found"
)
raise
HTTPException
(
status_code
=
404
,
detail
=
"ProjectEquipment not found"
)
# ตรวจสอบ member อยู่ใน project หรือไม่
# ตรวจสอบ
ว่า
member อยู่ใน project หรือไม่
result_pm
=
await
db
.
execute
(
result_pm
=
await
db
.
execute
(
select
(
ProjectMember
)
.
where
(
select
(
ProjectMember
)
.
where
(
ProjectMember
.
memberId
==
borrow_in
.
memberId
,
ProjectMember
.
memberId
==
borrow_in
.
memberId
,
...
@@ -34,13 +36,25 @@ async def create_borrow_transaction(db: AsyncSession, borrow_in: BorrowTransacti
...
@@ -34,13 +36,25 @@ async def create_borrow_transaction(db: AsyncSession, borrow_in: BorrowTransacti
if
not
pm_db
:
if
not
pm_db
:
raise
HTTPException
(
status_code
=
403
,
detail
=
"Member is not in this project"
)
raise
HTTPException
(
status_code
=
403
,
detail
=
"Member is not in this project"
)
# สร้าง BorrowTransaction (สถานะเริ่มต้นเป็น requested)
# กำหนดสถานะเริ่มต้นจาก input ถ้ามี, ถ้าไม่ระบุให้เป็น "requested"
status
=
borrow_in
.
status
if
borrow_in
.
status
else
"requested"
new_borrow
=
BorrowTransaction
(
new_borrow
=
BorrowTransaction
(
memberId
=
borrow_in
.
memberId
,
memberId
=
borrow_in
.
memberId
,
peId
=
borrow_in
.
peId
,
peId
=
borrow_in
.
peId
,
quantity_borrowed
=
borrow_in
.
quantity_borrowed
,
quantity_borrowed
=
borrow_in
.
quantity_borrowed
,
status
=
borrow_in
.
status
or
"requested"
# ตั้งเป็น requested ถ้าไม่กำหนด
status
=
status
)
)
# ถ้าสถานะเป็น "approved" ให้ทำการตรวจสอบและตัดสต็อกทันที
if
status
==
"approved"
:
if
pe_db
.
quantity_in_project
<
borrow_in
.
quantity_borrowed
:
raise
HTTPException
(
status_code
=
400
,
detail
=
"Not enough equipment to approve"
)
pe_db
.
quantity_in_project
-=
borrow_in
.
quantity_borrowed
# บันทึกการตัดสต็อก (อาจเพิ่ม approved_by, approved_at ได้ที่นี่)
new_borrow
.
approved_by
=
borrow_in
.
approved_by
# ถ้ามีการส่ง admin id
new_borrow
.
approved_at
=
datetime
.
utcnow
()
db
.
add
(
pe_db
)
try
:
try
:
db
.
add
(
new_borrow
)
db
.
add
(
new_borrow
)
...
@@ -52,7 +66,6 @@ async def create_borrow_transaction(db: AsyncSession, borrow_in: BorrowTransacti
...
@@ -52,7 +66,6 @@ async def create_borrow_transaction(db: AsyncSession, borrow_in: BorrowTransacti
return
new_borrow
return
new_borrow
# UPDATE
# UPDATE
async
def
update_borrow_transaction
(
db
:
AsyncSession
,
borrow_id
:
UUID
,
borrow_up
:
BorrowTransactionBase
):
async
def
update_borrow_transaction
(
db
:
AsyncSession
,
borrow_id
:
UUID
,
borrow_up
:
BorrowTransactionBase
):
borrow_db
=
await
db
.
get
(
BorrowTransaction
,
borrow_id
)
borrow_db
=
await
db
.
get
(
BorrowTransaction
,
borrow_id
)
...
...
API-Fast/src/schemas/__pycache__/borrow_schema.cpython-312.pyc
View file @
4c4314e6
No preview for this file type
API-Fast/src/schemas/borrow_schema.py
View file @
4c4314e6
...
@@ -4,10 +4,13 @@ from typing import Optional
...
@@ -4,10 +4,13 @@ from typing import Optional
from
datetime
import
datetime
from
datetime
import
datetime
class
BorrowTransactionBase
(
BaseModel
):
class
BorrowTransactionBase
(
BaseModel
):
# peId: UUID
quantity_borrowed
:
int
quantity_borrowed
:
int
status
:
str
=
"borrowed"
# เช่น requested, borrowed, returned
status
:
str
=
"borrowed"
# เช่น requested, borrowed, returned
returned_date
:
Optional
[
datetime
]
=
None
returned_date
:
Optional
[
datetime
]
=
None
memberId
:
UUID
# approved_by: UUID
class
BorrowTransactionCreate
(
BorrowTransactionBase
):
class
BorrowTransactionCreate
(
BorrowTransactionBase
):
peId
:
UUID
peId
:
UUID
memberId
:
UUID
memberId
:
UUID
...
...
Web-Manage/src/app/DPU/models/borrow-transactions.ts
View file @
4c4314e6
...
@@ -2,18 +2,20 @@ import { TranslateService } from "@ngx-translate/core";
...
@@ -2,18 +2,20 @@ import { TranslateService } from "@ngx-translate/core";
import
{
BaseModel
}
from
"./base.model"
;
import
{
BaseModel
}
from
"./base.model"
;
export
class
BorrowTransactionsModel
extends
BaseModel
{
export
class
BorrowTransactionsModel
extends
BaseModel
{
borrow_id
:
string
;
pe_id
:
string
;
quantity_borrowed
:
number
;
quantity_borrowed
:
number
;
status
:
string
;
status
:
string
;
returned_date
?:
string
;
returned_date
:
string
;
borrowId
:
string
;
created_at
:
string
;
peId
:
string
;
memberId
:
string
;
constructor
(
data
?:
Partial
<
BorrowTransactionsModel
>
,
translateService
?:
TranslateService
)
{
constructor
(
data
?:
Partial
<
BorrowTransactionsModel
>
,
translateService
?:
TranslateService
)
{
super
(
data
,
translateService
);
super
(
data
,
translateService
);
this
.
borrow
_id
=
data
?.
borrow_i
d
??
''
;
this
.
borrow
Id
=
data
?.
borrowI
d
??
''
;
this
.
pe
_id
=
data
?.
pe_i
d
??
''
;
this
.
pe
Id
=
data
?.
peI
d
??
''
;
this
.
quantity_borrowed
=
data
?.
quantity_borrowed
??
0
;
this
.
quantity_borrowed
=
data
?.
quantity_borrowed
??
0
;
this
.
status
=
data
?.
status
??
''
;
this
.
status
=
data
?.
status
??
''
;
this
.
returned_date
=
data
?.
returned_date
??
null
;
this
.
returned_date
=
data
?.
returned_date
??
''
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment