| Version 5 (modified by , 7 days ago) ( diff ) |
|---|
DatabaseProgramming
Во оваа фаза се изработени функции, процедури и тригери за основните операции потребни за правилно функционирање на системот.
Функции и процедури
approve_inventory_transaction- За дадена трансакција ги извршува сите нејзини movements (ако има movements кои се уште не се одобрени или откажани, односно accepted_by = NULL). Под извршување се подразбира: Доколку има source bin (од кој вадиме роба) - се ажурира INVENTORY за тој bin да се намали количината, а доколку има destination bin (во кој пристигнува роба) - се ажурира INVENTORY за тој bin за да се внесе робата која пристигнала. Става вредност на accepted_by на id-то на вработениот кој ја одобрил. Ова е втора фаза на финализирање на трансакциите, која настапува по нивно креирање со една од функциите под точка 3.
cancel_pending_transaction- Ја откажува дадената трансакција (само доколку уште не е одобрена): ги ослободува сите резервации кои биле направени кога таа била креирана и ја става вредноста на accepted_by = -1, односно на сентинел вредност за да знаеме дека трансакцијата е откажана. Мора да внесеме employee со id = -1 кој ќе го користиме за оваа логика.
- Функции за креирање/ажурирање на трансакција:
3а.
receive_delivery- Креира delivery трансакција во INVENTORY_TRANSACTIONS со робата која е добиена од доставувач. Враќа BIGINT - transaction_id. Ја Става вредноста на accepted_by на null.
3б.
ship_stock- Креира pending shipment трансакција со робата која треба да се испрати. Бидејќи зема роба од source bin, ја резервира таа роба, за да не се испрати на друго место додека оваа трансакција чека да биде одобрена. Враќа BIGINT - transaction_id. Ја Става вредноста на accepted_by на null.
3в.
transfer_stock- Креира pending внатрешна трансакција - за преместување на роба од еден во друг bin во рамките на нашиот магацин. Исто како ship_stock, ја резервира таа роба. Ја Става вредноста на accepted_by на null.
3г.
adjust_inventory- Креира pending трансакција за рачна промена на количина на роба. Го користи помошниот тип adjustment_item, кој ја има променливата quantity_change (позитивни вредности на оваа променлива додаваат, а негативни одземаат роба). Враќа BIGINT - transaction_id.
create_product- Креира продукт со име и опис и го внесува во табелата PRODUCTS.
update_product- Ажурира продукт - го наоѓа преку id и ги менува името и описот, и ја ажурира табелата PRODUCTS.
create_category- Креира категорија за продукти - внимавајќи дали е таа подкатегорија со променливата parent_id која го дава id-то на родителот на категоријата (доколку го има; доколку не тоа е null). Ја додава категоријата во табелата CATEGORIES.
update_category- Ажурира категорија во табелата CATEGORIES.
assign_product_category- Задава категорија на продукт - во табелата PRODUCT_CATEGORIES го внесува product_id и името на категоријата.
remove_product_category- Ја брише дадената категорија на продуктот - го брише редот од табелата PRODUCT_CATEGORIES каде што е зададена таа категорија за тој продукт.
create_attribute- Креира атрибут и го внесува во табелата ATTRIBUTES
add_attribute_value- Додава вредност за дадениот атрибут во табелата ATTRIBUTE_VALUES.
create_product_variant- Креира варијанта на даден продукт и ја внесува во табелата PRODUCT_VARIANTS.
update_product_variant- Ажурира варијанта на продукт во табелата PRODUCT_VARIANTS.
assign_variant_attribute- Дава атрибут на одредена варијанта на продукт и внесува во VARIANT_ATTRIBUTES.
remove_variant_attribute- Брише атрибут на одредена варијанта од табелата VARIANT_ATTRIBUTES.
create_warehouse- Креира warehouse и го внесува во табелата WAREHOUSES.
update_warehouse- Ажурира warehouse во табелата WAREHOUSES.
create_section- Креира оддел за warehouse со p_warehouse_id и го внесува во табелата SECTIONS.
update_section- Ажурира оддел во табелата SECTIONS.
create_location- Креира локација и ја внесува во табелата LOCATIONS.
update_location- Ажурира локација во табелата LOCATIONS.
create_bin- Креира bin и го внесува во табелата BINS.
update_bin- Ажурира bin во табелата BINS.
hire_employee- Внесува вработен со сите потребни податоци во табелата EMPLOYEES и го враќа неговиот id.
update_employee- Ажурира вработен во табелата EMPLOYEES.
terminate_employee- Отпушта вработен, т.е. го ажурира статусот на вработениот во 'TERMINATED' и ја става вредноста на сегашен timestamp во променливата terminated_at - во табелата EMPLOYEES.
assign_employee_to_warehouse- Внесува задача, т.е. id на вработен и id на warehouse во табелата EMPLOYEE_WAREHOUSE_ASSIGNMENTS, како и почетен и краен датум кога почнал вработениот да работи на оваа задача и boolean вредност - дали ова му е примарна задача или не. Го враќа id на задачата.
end_warehouse_assignment- Го внесува денешниот датум како краен датум во end_date во задачата со id p_assignment_id во табелата EMPLOYEE_WAREHOUSE_ASSIGNMENTS.
assign_role_to_employee- Додава улога со p_role_id на дадениот вработен, и ги внесува двете id во ROLES_EMPLOYEES.
remove_role_from_employee- Ги брише редовите од табелата ROLES_EMPLOYEES каде id-ата се совпаѓаат со дадените.
assign_permission_to_role- Додава пермисија за дадената улога, и ги внесува permissions_id и roles_id во табелата PERMISSIONS_ROLES.
remove_permission_from_role- Ги брише од табелата PERMISSIONS_ROLES.
