annul
This commit is contained in:
commit
a8f6b93cbd
|
|
@ -1,4 +1,3 @@
|
|||
# Author: Ahmad Samir <a.atta@exp-sa.com>
|
||||
name: Block Reserved Branches
|
||||
|
||||
on:
|
||||
|
|
@ -9,20 +8,63 @@ on:
|
|||
jobs:
|
||||
block-reserved-branches:
|
||||
runs-on: app-sever-project-runner
|
||||
|
||||
steps:
|
||||
- name: Check for reserved or pattern-matching branch names
|
||||
- name: Validate branch creator + reserved names
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GH_TOKEN }}
|
||||
REPO: ${{ github.repository }}
|
||||
BRANCH_NAME: ${{ github.ref_name }}
|
||||
CREATOR: ${{ github.actor }}
|
||||
run: |
|
||||
echo "Branch: $BRANCH_NAME"
|
||||
echo "Creator: $CREATOR"
|
||||
|
||||
#######################################################
|
||||
# 🟦 1) Allowed Users List
|
||||
#######################################################
|
||||
ALLOWED_USERS=(
|
||||
"expsa"
|
||||
"moutazmuhammad"
|
||||
"ronozoro"
|
||||
"Abubaker-Altaib"
|
||||
"altexp"
|
||||
"the5abir"
|
||||
"ahmadaking"
|
||||
"kchyounes19"
|
||||
"abdurrahman-saber"
|
||||
"maltayyar2"
|
||||
"esam-sermah"
|
||||
"mohammed-alkhazrji"
|
||||
)
|
||||
|
||||
IS_ALLOWED="false"
|
||||
for user in "${ALLOWED_USERS[@]}"; do
|
||||
if [[ "$CREATOR" == "$user" ]]; then
|
||||
IS_ALLOWED="true"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "$IS_ALLOWED" == "false" ]]; then
|
||||
echo "❌ User '$CREATOR' is NOT allowed to create branches. Deleting..."
|
||||
curl -s -X DELETE \
|
||||
-H "Authorization: token $GH_TOKEN" \
|
||||
https://api.github.com/repos/$REPO/git/refs/heads/$BRANCH_NAME
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✔ User '$CREATOR' is allowed."
|
||||
|
||||
#######################################################
|
||||
# 🟦 2) Reserved Branch Names (Your Existing List)
|
||||
#######################################################
|
||||
RESERVED_NAMES=(
|
||||
master
|
||||
dev_odex25_accounting
|
||||
dev_odex25_base
|
||||
dev_odex25_dms
|
||||
dev_odex25_donation
|
||||
dev_odex25_ensan
|
||||
dev_odex25_fleet
|
||||
dev_odex25_helpdesk
|
||||
dev_odex25_hr
|
||||
|
|
@ -39,11 +81,13 @@ jobs:
|
|||
dev_odex25_website
|
||||
dev_odex-event
|
||||
dev_openeducat_erp-14.0.1.0
|
||||
dev_odex25_benefit
|
||||
dev_odex25_takaful
|
||||
dev_odex25_ensan
|
||||
master_odex25_accounting
|
||||
master_odex25_base
|
||||
master_odex25_dms
|
||||
master_odex25_donation
|
||||
master_odex25_ensan
|
||||
master_odex25_fleet
|
||||
master_odex25_helpdesk
|
||||
master_odex25_hr
|
||||
|
|
@ -60,11 +104,13 @@ jobs:
|
|||
master_odex25_website
|
||||
master_odex-event
|
||||
master_openeducat_erp-14.0.1.0
|
||||
master_odex25_benefit
|
||||
master_odex25_takaful
|
||||
master_odex25_ensan
|
||||
preprod_odex25_accounting
|
||||
preprod_odex25_base
|
||||
preprod_odex25_dms
|
||||
preprod_odex25_donation
|
||||
preprod_odex25_ensan
|
||||
preprod_odex25_fleet
|
||||
preprod_odex25_helpdesk
|
||||
preprod_odex25_hr
|
||||
|
|
@ -81,19 +127,31 @@ jobs:
|
|||
preprod_odex25_website
|
||||
preprod_odex-event
|
||||
preprod_openeducat_erp-14.0.1.0
|
||||
preprod_odex25_benefit
|
||||
preprod_odex25_takaful
|
||||
preprod_odex25_ensan
|
||||
)
|
||||
# Check if branch is an exact reserved name
|
||||
|
||||
# Exact match
|
||||
for reserved in "${RESERVED_NAMES[@]}"; do
|
||||
if [[ "$BRANCH_NAME" == "$reserved" ]]; then
|
||||
echo "❌ Branch name '$BRANCH_NAME' is reserved. Deleting..."
|
||||
curl -s -X DELETE -H "Authorization: token $GH_TOKEN" https://api.github.com/repos/$REPO/git/refs/heads/$BRANCH_NAME
|
||||
curl -s -X DELETE \
|
||||
-H "Authorization: token $GH_TOKEN" \
|
||||
https://api.github.com/repos/$REPO/git/refs/heads/$BRANCH_NAME
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
# Check if branch name matches restricted patterns
|
||||
|
||||
#######################################################
|
||||
# 🟦 3) Pattern-based Restriction
|
||||
#######################################################
|
||||
if [[ "$BRANCH_NAME" == master_* || "$BRANCH_NAME" == preprod_* || "$BRANCH_NAME" == dev_* ]]; then
|
||||
echo "❌ Branch name '$BRANCH_NAME' matches restricted pattern. Deleting..."
|
||||
curl -s -X DELETE -H "Authorization: token $GH_TOKEN" https://api.github.com/repos/$REPO/git/refs/heads/$BRANCH_NAME
|
||||
curl -s -X DELETE \
|
||||
-H "Authorization: token $GH_TOKEN" \
|
||||
https://api.github.com/repos/$REPO/git/refs/heads/$BRANCH_NAME
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ Branch '$BRANCH_NAME' is allowed."
|
||||
|
|
@ -22,8 +22,10 @@ on:
|
|||
- dev_odex25_transactions
|
||||
- dev_odex25_website
|
||||
- dev_openeducat_erp-14.0.1.0
|
||||
- dev_odex25_ensan
|
||||
- dev_odex25_donation
|
||||
- dev_odex25_benefit
|
||||
- dev_odex25_takaful
|
||||
- dev_odex25_ensan
|
||||
- preprod_odex-event
|
||||
- preprod_odex25_accounting
|
||||
- preprod_odex25_base
|
||||
|
|
@ -43,8 +45,10 @@ on:
|
|||
- preprod_odex25_transactions
|
||||
- preprod_odex25_website
|
||||
- preprod_openeducat_erp-14.0.1.0
|
||||
- preprod_odex25_ensan
|
||||
- preprod_odex25_donation
|
||||
- preprod_odex25_benefit
|
||||
- preprod_odex25_takaful
|
||||
- preprod_odex25_ensan
|
||||
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
|
|
@ -82,7 +86,8 @@ jobs:
|
|||
github.ref == 'refs/heads/preprod_odex25_transactions' ||
|
||||
github.ref == 'refs/heads/preprod_odex25_website' ||
|
||||
github.ref == 'refs/heads/preprod_openeducat_erp-14.0.1.0' ||
|
||||
github.ref == 'refs/heads/preprod_odex25_ensan' ||
|
||||
github.ref == 'refs/heads/preprod_odex25_benefit' ||
|
||||
github.ref == 'refs/heads/preprod_odex25_takaful' ||
|
||||
github.ref == 'refs/heads/preprod_odex25_donation')
|
||||
|| (github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'preprod')
|
||||
steps:
|
||||
|
|
@ -120,7 +125,8 @@ jobs:
|
|||
github.ref == 'refs/heads/dev_odex25_transactions' ||
|
||||
github.ref == 'refs/heads/dev_odex25_website' ||
|
||||
github.ref == 'refs/heads/dev_openeducat_erp-14.0.1.0' ||
|
||||
github.ref == 'refs/heads/dev_odex25_ensan' ||
|
||||
github.ref == 'refs/heads/dev_odex25_benefit' ||
|
||||
github.ref == 'refs/heads/dev_odex25_takaful' ||
|
||||
github.ref == 'refs/heads/dev_odex25_donation')
|
||||
|| (github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'dev')
|
||||
steps:
|
||||
|
|
@ -158,7 +164,8 @@ jobs:
|
|||
github.ref == 'refs/heads/preprod_odex25_transactions' ||
|
||||
github.ref == 'refs/heads/preprod_odex25_website' ||
|
||||
github.ref == 'refs/heads/preprod_openeducat_erp-14.0.1.0' ||
|
||||
github.ref == 'refs/heads/preprod_odex25_ensan' ||
|
||||
github.ref == 'refs/heads/preprod_odex25_benefit' ||
|
||||
github.ref == 'refs/heads/preprod_odex25_takaful' ||
|
||||
github.ref == 'refs/heads/preprod_odex25_donation')
|
||||
|| (github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'preprod')
|
||||
steps:
|
||||
|
|
|
|||
|
|
@ -25,6 +25,8 @@ on:
|
|||
- dev_odex25_ensan
|
||||
- dev_odex25_helpdesk
|
||||
- dev_odex25_donation
|
||||
- dev_odex25_benefit
|
||||
- dev_odex25_takaful
|
||||
|
||||
- preprod_odex-event
|
||||
- preprod_odex25_accounting
|
||||
|
|
@ -47,6 +49,8 @@ on:
|
|||
- preprod_odex25_ensan
|
||||
- preprod_odex25_helpdesk
|
||||
- preprod_odex25_donation
|
||||
- preprod_odex25_benefit
|
||||
- preprod_odex25_takaful
|
||||
|
||||
- master_odex-event
|
||||
- master_odex25_accounting
|
||||
|
|
@ -69,7 +73,8 @@ on:
|
|||
- master_odex25_ensan
|
||||
- master_odex25_helpdesk
|
||||
- master_odex25_donation
|
||||
|
||||
- master_odex25_benefit
|
||||
- master_odex25_takaful
|
||||
|
||||
|
||||
jobs:
|
||||
|
|
@ -188,6 +193,17 @@ jobs:
|
|||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex25_benefit" && "${{ github.head_ref }}" != "dev_odex25_benefit" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex25_donation' from 'dev_odex25_donation' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "preprod_odex25_takaful" && "${{ github.head_ref }}" != "dev_odex25_takaful" ]]; then
|
||||
echo "::error ::You can only merge to 'preprod_odex25_donation' from 'dev_odex25_donation' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
# ✅ Master Branches
|
||||
if [[ "${{ github.base_ref }}" == "master_odex-event" && "${{ github.head_ref }}" != "preprod_odex-event" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex-event' from 'preprod_odex-event' branch!"
|
||||
|
|
@ -294,6 +310,19 @@ jobs:
|
|||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_odex25_benefit" && "${{ github.head_ref }}" != "preprod_odex25_benefit" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex25_donation' from 'preprod_odex25_donation' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${{ github.base_ref }}" == "master_odex25_takaful" && "${{ github.head_ref }}" != "preprod_odex25_takaful" ]]; then
|
||||
echo "::error ::You can only merge to 'master_odex25_donation' from 'preprod_odex25_donation' branch!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# ❌ Block ALL merges to 'master'
|
||||
if [[ "${{ github.base_ref }}" == "master" ]]; then
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ jobs:
|
|||
ensan_master_server:
|
||||
name: Deploy to Ensan Master
|
||||
runs-on: new-ensan-vpn-client-server-runner
|
||||
if: github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'Ensan Project - Production' && (github.ref == 'refs/heads/master_odex-event' || github.ref == 'refs/heads/master_odex25_helpdesk' || github.ref == 'refs/heads/master_odex25_accounting' || github.ref == 'refs/heads/master_odex25_base' || github.ref == 'refs/heads/master_odex25_dms' || github.ref == 'refs/heads/master_odex25_fleet' || github.ref == 'refs/heads/master_odex25_ENSAN' || github.ref == 'refs/heads/master_odex25_hr' || github.ref == 'refs/heads/master_odex25_inventory' || github.ref == 'refs/heads/master_odex25_maintenance' || github.ref == 'refs/heads/master_odex25_mobile' || github.ref == 'refs/heads/master_odex25_pos' || github.ref == 'refs/heads/master_odex25_project' || github.ref == 'refs/heads/master_odex25_purchase' || github.ref == 'refs/heads/master_odex25_realstate' || github.ref == 'refs/heads/master_odex25_sales' || github.ref == 'refs/heads/master_odex25_survey' || github.ref == 'refs/heads/master_odex25_transactions' || github.ref == 'refs/heads/master_odex25_website' || github.ref == 'refs/heads/master_openeducat_erp-14.0.1.0' || github.ref == 'refs/heads/master_odex25_ensan' || github.ref == 'refs/heads/master_odex25_donation') &&
|
||||
if: github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'Ensan Project - Production' && (github.ref == 'refs/heads/master_odex-event' || github.ref == 'refs/heads/master_odex25_helpdesk' || github.ref == 'refs/heads/master_odex25_accounting' || github.ref == 'refs/heads/master_odex25_base' || github.ref == 'refs/heads/master_odex25_dms' || github.ref == 'refs/heads/master_odex25_fleet' || github.ref == 'refs/heads/master_odex25_ENSAN' || github.ref == 'refs/heads/master_odex25_hr' || github.ref == 'refs/heads/master_odex25_inventory' || github.ref == 'refs/heads/master_odex25_maintenance' || github.ref == 'refs/heads/master_odex25_mobile' || github.ref == 'refs/heads/master_odex25_pos' || github.ref == 'refs/heads/master_odex25_project' || github.ref == 'refs/heads/master_odex25_purchase' || github.ref == 'refs/heads/master_odex25_realstate' || github.ref == 'refs/heads/master_odex25_sales' || github.ref == 'refs/heads/master_odex25_survey' || github.ref == 'refs/heads/master_odex25_transactions' || github.ref == 'refs/heads/master_odex25_website' || github.ref == 'refs/heads/master_openeducat_erp-14.0.1.0' || github.ref == 'refs/heads/master_odex25_takaful' || github.ref == 'refs/heads/master_odex25_benefit' || github.ref == 'refs/heads/master_odex25_donation' || github.ref == 'refs/heads/master_odex25_ensan') &&
|
||||
(github.actor == 'moutazmuhammad' ||
|
||||
github.actor == 'expsa' ||
|
||||
github.actor == 'ahmadaking' ||
|
||||
|
|
@ -50,7 +50,7 @@ jobs:
|
|||
helpdesk_maser_server:
|
||||
name: Deploy to Helpdesk Master
|
||||
runs-on: helpdesk_server
|
||||
if: github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'Helpdesk Khabir Project' && (github.ref == 'refs/heads/master_odex-event' || github.ref == 'refs/heads/master_odex25_accounting' || github.ref == 'refs/heads/master_odex25_base' || github.ref == 'refs/heads/master_odex25_dms' || github.ref == 'refs/heads/master_odex25_fleet' || github.ref == 'refs/heads/master_odex25_ENSAN' || github.ref == 'refs/heads/master_odex25_hr' || github.ref == 'refs/heads/master_odex25_inventory' || github.ref == 'refs/heads/master_odex25_maintenance' || github.ref == 'refs/heads/master_odex25_mobile' || github.ref == 'refs/heads/master_odex25_pos' || github.ref == 'refs/heads/master_odex25_project' || github.ref == 'refs/heads/master_odex25_purchase' || github.ref == 'refs/heads/master_odex25_realstate' || github.ref == 'refs/heads/master_odex25_sales' || github.ref == 'refs/heads/master_odex25_survey' || github.ref == 'refs/heads/master_odex25_transactions' || github.ref == 'refs/heads/master_odex25_website' || github.ref == 'refs/heads/master_openeducat_erp-14.0.1.0' || github.ref == 'refs/heads/master_odex25_ensan' || github.ref == 'refs/heads/master_odex25_helpdesk') &&
|
||||
if: github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'Helpdesk Khabir Project' && (github.ref == 'refs/heads/master_odex-event' || github.ref == 'refs/heads/master_odex25_accounting' || github.ref == 'refs/heads/master_odex25_base' || github.ref == 'refs/heads/master_odex25_dms' || github.ref == 'refs/heads/master_odex25_fleet' || github.ref == 'refs/heads/master_odex25_ENSAN' || github.ref == 'refs/heads/master_odex25_hr' || github.ref == 'refs/heads/master_odex25_inventory' || github.ref == 'refs/heads/master_odex25_maintenance' || github.ref == 'refs/heads/master_odex25_mobile' || github.ref == 'refs/heads/master_odex25_pos' || github.ref == 'refs/heads/master_odex25_project' || github.ref == 'refs/heads/master_odex25_purchase' || github.ref == 'refs/heads/master_odex25_realstate' || github.ref == 'refs/heads/master_odex25_sales' || github.ref == 'refs/heads/master_odex25_survey' || github.ref == 'refs/heads/master_odex25_transactions' || github.ref == 'refs/heads/master_odex25_website' || github.ref == 'refs/heads/master_openeducat_erp-14.0.1.0' || github.ref == 'refs/heads/master_odex25_takaful' || github.ref == 'refs/heads/master_odex25_benefit' || github.ref == 'refs/heads/master_odex25_helpdesk' || github.ref == 'refs/heads/master_odex25_ensan') &&
|
||||
(github.actor == 'moutazmuhammad' ||
|
||||
github.actor == 'expsa' ||
|
||||
github.actor == 'ahmadaking' ||
|
||||
|
|
@ -78,7 +78,7 @@ jobs:
|
|||
kaz_master_server:
|
||||
name: Deploy to KAZ Master
|
||||
runs-on: kaz-library-project-runner
|
||||
if: github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'King AbdelAziz Library Project' && (github.ref == 'refs/heads/master_odex-event' || github.ref == 'refs/heads/master_odex25_helpdesk' || github.ref == 'refs/heads/master_odex25_accounting' || github.ref == 'refs/heads/master_odex25_base' || github.ref == 'refs/heads/master_odex25_dms' || github.ref == 'refs/heads/master_odex25_fleet' || github.ref == 'refs/heads/master_odex25_ENSAN' || github.ref == 'refs/heads/master_odex25_hr' || github.ref == 'refs/heads/master_odex25_inventory' || github.ref == 'refs/heads/master_odex25_maintenance' || github.ref == 'refs/heads/master_odex25_mobile' || github.ref == 'refs/heads/master_odex25_pos' || github.ref == 'refs/heads/master_odex25_project' || github.ref == 'refs/heads/master_odex25_purchase' || github.ref == 'refs/heads/master_odex25_realstate' || github.ref == 'refs/heads/master_odex25_sales' || github.ref == 'refs/heads/master_odex25_survey' || github.ref == 'refs/heads/master_odex25_transactions' || github.ref == 'refs/heads/master_odex25_website' || github.ref == 'refs/heads/master_openeducat_erp-14.0.1.0' || github.ref == 'refs/heads/master_odex25_ensan') &&
|
||||
if: github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'King AbdelAziz Library Project' && (github.ref == 'refs/heads/master_odex-event' || github.ref == 'refs/heads/master_odex25_helpdesk' || github.ref == 'refs/heads/master_odex25_accounting' || github.ref == 'refs/heads/master_odex25_base' || github.ref == 'refs/heads/master_odex25_dms' || github.ref == 'refs/heads/master_odex25_fleet' || github.ref == 'refs/heads/master_odex25_ENSAN' || github.ref == 'refs/heads/master_odex25_hr' || github.ref == 'refs/heads/master_odex25_inventory' || github.ref == 'refs/heads/master_odex25_maintenance' || github.ref == 'refs/heads/master_odex25_mobile' || github.ref == 'refs/heads/master_odex25_pos' || github.ref == 'refs/heads/master_odex25_project' || github.ref == 'refs/heads/master_odex25_purchase' || github.ref == 'refs/heads/master_odex25_realstate' || github.ref == 'refs/heads/master_odex25_sales' || github.ref == 'refs/heads/master_odex25_survey' || github.ref == 'refs/heads/master_odex25_transactions' || github.ref == 'refs/heads/master_odex25_website' || github.ref == 'refs/heads/master_openeducat_erp-14.0.1.0' || github.ref == 'refs/heads/master_odex25_takaful' || github.ref == 'refs/heads/master_odex25_benefit' || github.ref == 'refs/heads/master_odex25_ensan') &&
|
||||
(github.actor == 'moutazmuhammad' ||
|
||||
github.actor == 'expsa' ||
|
||||
github.actor == 'ahmadaking' ||
|
||||
|
|
@ -107,7 +107,7 @@ jobs:
|
|||
twahod_master_server:
|
||||
name: Deploy to Twahod Master
|
||||
runs-on: twahod-client-project-runner
|
||||
if: github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'Twahod Project' && (github.ref == 'refs/heads/master_odex-event' || github.ref == 'refs/heads/master_odex25_accounting' || github.ref == 'refs/heads/master_odex25_helpdesk' || github.ref == 'refs/heads/master_odex25_base' || github.ref == 'refs/heads/master_odex25_dms' || github.ref == 'refs/heads/master_odex25_fleet' || github.ref == 'refs/heads/master_odex25_ENSAN' || github.ref == 'refs/heads/master_odex25_hr' || github.ref == 'refs/heads/master_odex25_inventory' || github.ref == 'refs/heads/master_odex25_maintenance' || github.ref == 'refs/heads/master_odex25_mobile' || github.ref == 'refs/heads/master_odex25_pos' || github.ref == 'refs/heads/master_odex25_project' || github.ref == 'refs/heads/master_odex25_purchase' || github.ref == 'refs/heads/master_odex25_realstate' || github.ref == 'refs/heads/master_odex25_sales' || github.ref == 'refs/heads/master_odex25_survey' || github.ref == 'refs/heads/master_odex25_transactions' || github.ref == 'refs/heads/master_odex25_website' || github.ref == 'refs/heads/master_openeducat_erp-14.0.1.0' || github.ref == 'refs/heads/master_odex25_ensan') &&
|
||||
if: github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'Twahod Project' && (github.ref == 'refs/heads/master_odex-event' || github.ref == 'refs/heads/master_odex25_accounting' || github.ref == 'refs/heads/master_odex25_helpdesk' || github.ref == 'refs/heads/master_odex25_base' || github.ref == 'refs/heads/master_odex25_dms' || github.ref == 'refs/heads/master_odex25_fleet' || github.ref == 'refs/heads/master_odex25_ENSAN' || github.ref == 'refs/heads/master_odex25_hr' || github.ref == 'refs/heads/master_odex25_inventory' || github.ref == 'refs/heads/master_odex25_maintenance' || github.ref == 'refs/heads/master_odex25_mobile' || github.ref == 'refs/heads/master_odex25_pos' || github.ref == 'refs/heads/master_odex25_project' || github.ref == 'refs/heads/master_odex25_purchase' || github.ref == 'refs/heads/master_odex25_realstate' || github.ref == 'refs/heads/master_odex25_sales' || github.ref == 'refs/heads/master_odex25_survey' || github.ref == 'refs/heads/master_odex25_transactions' || github.ref == 'refs/heads/master_odex25_website' || github.ref == 'refs/heads/master_openeducat_erp-14.0.1.0' || github.ref == 'refs/heads/master_odex25_takaful' || github.ref == 'refs/heads/master_odex25_benefit' || github.ref == 'refs/heads/master_odex25_ensan') &&
|
||||
(github.actor == 'moutazmuhammad' ||
|
||||
github.actor == 'expsa' ||
|
||||
github.actor == 'ahmadaking' ||
|
||||
|
|
@ -135,7 +135,7 @@ jobs:
|
|||
ekram_master_server:
|
||||
name: Deploy to Ekram Master
|
||||
runs-on: ekram-client-project-runner
|
||||
if: github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'Ekram Project' && (github.ref == 'refs/heads/master_odex-event' || github.ref == 'refs/heads/master_odex25_accounting' || github.ref == 'refs/heads/master_odex25_base' || github.ref == 'refs/heads/master_odex25_helpdesk' || github.ref == 'refs/heads/master_odex25_dms' || github.ref == 'refs/heads/master_odex25_fleet' || github.ref == 'refs/heads/master_odex25_ENSAN' || github.ref == 'refs/heads/master_odex25_hr' || github.ref == 'refs/heads/master_odex25_inventory' || github.ref == 'refs/heads/master_odex25_maintenance' || github.ref == 'refs/heads/master_odex25_mobile' || github.ref == 'refs/heads/master_odex25_pos' || github.ref == 'refs/heads/master_odex25_project' || github.ref == 'refs/heads/master_odex25_purchase' || github.ref == 'refs/heads/master_odex25_realstate' || github.ref == 'refs/heads/master_odex25_sales' || github.ref == 'refs/heads/master_odex25_survey' || github.ref == 'refs/heads/master_odex25_transactions' || github.ref == 'refs/heads/master_odex25_website' || github.ref == 'refs/heads/master_openeducat_erp-14.0.1.0' || github.ref == 'refs/heads/master_odex25_ensan') &&
|
||||
if: github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'Ekram Project' && (github.ref == 'refs/heads/master_odex-event' || github.ref == 'refs/heads/master_odex25_accounting' || github.ref == 'refs/heads/master_odex25_base' || github.ref == 'refs/heads/master_odex25_helpdesk' || github.ref == 'refs/heads/master_odex25_dms' || github.ref == 'refs/heads/master_odex25_fleet' || github.ref == 'refs/heads/master_odex25_ENSAN' || github.ref == 'refs/heads/master_odex25_hr' || github.ref == 'refs/heads/master_odex25_inventory' || github.ref == 'refs/heads/master_odex25_maintenance' || github.ref == 'refs/heads/master_odex25_mobile' || github.ref == 'refs/heads/master_odex25_pos' || github.ref == 'refs/heads/master_odex25_project' || github.ref == 'refs/heads/master_odex25_purchase' || github.ref == 'refs/heads/master_odex25_realstate' || github.ref == 'refs/heads/master_odex25_sales' || github.ref == 'refs/heads/master_odex25_survey' || github.ref == 'refs/heads/master_odex25_transactions' || github.ref == 'refs/heads/master_odex25_website' || github.ref == 'refs/heads/master_openeducat_erp-14.0.1.0' || github.ref == 'refs/heads/master_odex25_takaful' || github.ref == 'refs/heads/master_odex25_benefit' || github.ref == 'refs/heads/master_odex25_ensan') &&
|
||||
(github.actor == 'moutazmuhammad' ||
|
||||
github.actor == 'expsa' ||
|
||||
github.actor == 'ahmadaking' ||
|
||||
|
|
@ -218,7 +218,7 @@ jobs:
|
|||
jazala_master_server:
|
||||
name: Deploy to Jazala Master
|
||||
runs-on: jazala-client-project-runner
|
||||
if: github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'Jazala Project' && (github.ref == 'refs/heads/master_odex-event' || github.ref == 'refs/heads/master_odex25_accounting' || github.ref == 'refs/heads/master_odex25_base' || github.ref == 'refs/heads/master_odex25_dms' || github.ref == 'refs/heads/master_odex25_fleet' || github.ref == 'refs/heads/master_odex25_helpdesk' || github.ref == 'refs/heads/master_odex25_ENSAN' || github.ref == 'refs/heads/master_odex25_hr' || github.ref == 'refs/heads/master_odex25_inventory' || github.ref == 'refs/heads/master_odex25_maintenance' || github.ref == 'refs/heads/master_odex25_mobile' || github.ref == 'refs/heads/master_odex25_pos' || github.ref == 'refs/heads/master_odex25_project' || github.ref == 'refs/heads/master_odex25_purchase' || github.ref == 'refs/heads/master_odex25_realstate' || github.ref == 'refs/heads/master_odex25_sales' || github.ref == 'refs/heads/master_odex25_survey' || github.ref == 'refs/heads/master_odex25_transactions' || github.ref == 'refs/heads/master_odex25_website' || github.ref == 'refs/heads/master_openeducat_erp-14.0.1.0' || github.ref == 'refs/heads/master_odex25_ensan') &&
|
||||
if: github.event_name == 'workflow_dispatch' && github.event.inputs.environment == 'Jazala Project' && (github.ref == 'refs/heads/master_odex-event' || github.ref == 'refs/heads/master_odex25_accounting' || github.ref == 'refs/heads/master_odex25_base' || github.ref == 'refs/heads/master_odex25_dms' || github.ref == 'refs/heads/master_odex25_fleet' || github.ref == 'refs/heads/master_odex25_helpdesk' || github.ref == 'refs/heads/master_odex25_ENSAN' || github.ref == 'refs/heads/master_odex25_hr' || github.ref == 'refs/heads/master_odex25_inventory' || github.ref == 'refs/heads/master_odex25_maintenance' || github.ref == 'refs/heads/master_odex25_mobile' || github.ref == 'refs/heads/master_odex25_pos' || github.ref == 'refs/heads/master_odex25_project' || github.ref == 'refs/heads/master_odex25_purchase' || github.ref == 'refs/heads/master_odex25_realstate' || github.ref == 'refs/heads/master_odex25_sales' || github.ref == 'refs/heads/master_odex25_survey' || github.ref == 'refs/heads/master_odex25_transactions' || github.ref == 'refs/heads/master_odex25_website' || github.ref == 'refs/heads/master_openeducat_erp-14.0.1.0' || github.ref == 'refs/heads/master_odex25_takaful' || github.ref == 'refs/heads/master_odex25_benefit' || github.ref == 'refs/heads/master_odex25_ensan') &&
|
||||
(github.actor == 'moutazmuhammad' ||
|
||||
github.actor == 'expsa' ||
|
||||
github.actor == 'ahmadaking' ||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,102 @@
|
|||
name: Restrict PR Authors & Committers
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, reopened, synchronize]
|
||||
branches:
|
||||
- dev_odex-event
|
||||
- dev_odex25_accounting
|
||||
- dev_odex25_base
|
||||
- dev_odex25_dms
|
||||
- dev_odex25_fleet
|
||||
- dev_odex25_hr
|
||||
- dev_odex25_inventory
|
||||
- dev_odex25_maintenance
|
||||
- dev_odex25_mobile
|
||||
- dev_odex25_pos
|
||||
- dev_odex25_project
|
||||
- dev_odex25_purchase
|
||||
- dev_odex25_realstate
|
||||
- dev_odex25_sales
|
||||
- dev_odex25_survey
|
||||
- dev_odex25_transactions
|
||||
- dev_odex25_website
|
||||
- dev_openeducat_erp-14.0.1.0
|
||||
- dev_odex25_benefit
|
||||
- dev_odex25_takaful
|
||||
- dev_odex25_helpdesk
|
||||
- dev_odex25_donation
|
||||
- dev_odex25_ensan
|
||||
jobs:
|
||||
check_pr_author:
|
||||
runs-on: linting_odex25-standard-modules_runner
|
||||
|
||||
steps:
|
||||
- name: Validate PR Author & Commit Authors
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
github-token: ${{ secrets.GH_TOKEN }}
|
||||
script: |
|
||||
const allowed = [
|
||||
"expsa",
|
||||
"moutazmuhammad",
|
||||
"ronozoro",
|
||||
"Abubaker-Altaib",
|
||||
"altexp",
|
||||
"the5abir",
|
||||
"ahmadaking",
|
||||
"kchyounes19",
|
||||
"abdurrahman-saber",
|
||||
"maltayyar2",
|
||||
"esam-sermah",
|
||||
"mohammed-alkhazrji"
|
||||
];
|
||||
|
||||
const pr = context.payload.pull_request;
|
||||
const prAuthor = pr.user.login;
|
||||
const owner = context.repo.owner;
|
||||
const repo = context.repo.repo;
|
||||
|
||||
core.info(`PR author: ${prAuthor}`);
|
||||
|
||||
// Check PR author
|
||||
if (!allowed.includes(prAuthor)) {
|
||||
core.error(`Unauthorized PR author: ${prAuthor}. Closing PR...`);
|
||||
await github.rest.pulls.update({
|
||||
owner,
|
||||
repo,
|
||||
pull_number: pr.number,
|
||||
state: "closed"
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Check commit authors
|
||||
const commitList = await github.rest.pulls.listCommits({
|
||||
owner,
|
||||
repo,
|
||||
pull_number: pr.number
|
||||
});
|
||||
|
||||
for (const commit of commitList.data) {
|
||||
const commitAuthor = commit.author ? commit.author.login : null;
|
||||
|
||||
if (commitAuthor && !allowed.includes(commitAuthor)) {
|
||||
core.error(`Unauthorized commit author: ${commitAuthor}. Closing PR...`);
|
||||
|
||||
await github.rest.pulls.update({
|
||||
owner,
|
||||
repo,
|
||||
pull_number: pr.number,
|
||||
state: "closed"
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
core.info("All PR authors and committers are allowed.");
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
name: SonarQube Analysis
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master_odex-event
|
||||
- master_odex25_accounting
|
||||
- master_odex25_base
|
||||
- master_odex25_dms
|
||||
- master_odex25_fleet
|
||||
- master_odex25_helpdesk
|
||||
- master_odex25_hr
|
||||
- master_odex25_inventory
|
||||
- master_odex25_maintenance
|
||||
- master_odex25_mobile
|
||||
- master_odex25_pos
|
||||
- master_odex25_project
|
||||
- master_odex25_purchase
|
||||
- master_odex25_realstate
|
||||
- master_odex25_sales
|
||||
- master_odex25_survey
|
||||
- master_odex25_transactions
|
||||
- master_odex25_website
|
||||
- master_openeducat_erp-14.0.1.0
|
||||
- master_odex25_ensan
|
||||
- master_odex25_donation
|
||||
|
||||
|
||||
jobs:
|
||||
sonar:
|
||||
runs-on: sonarqube
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Run SonarScanner
|
||||
run: |
|
||||
export BRANCH_NAME="${GITHUB_REF#refs/heads/}"
|
||||
export SAFE_BRANCH_NAME="${BRANCH_NAME//\//_}"
|
||||
export PROJECT_KEY="odex25_standard_modules_${SAFE_BRANCH_NAME}"
|
||||
export PROJECT_NAME="Standard Modules ${SAFE_BRANCH_NAME^}"
|
||||
export SOURCE_FOLDER_NAME="${BRANCH_NAME#master_}"
|
||||
export PROJECT_VERSION="1.0"
|
||||
export SONAR_HOST_URL=${{ secrets.SONAR_HOST_URL }}
|
||||
export SONAR_TOKEN=${{ secrets.SONAR_TOKEN }}
|
||||
|
||||
sonar-scanner \
|
||||
-Dsonar.projectKey="$PROJECT_KEY" \
|
||||
-Dsonar.projectName="$PROJECT_NAME" \
|
||||
-Dsonar.projectVersion="$PROJECT_VERSION" \
|
||||
-Dsonar.sources="$SOURCE_FOLDER_NAME" \
|
||||
-Dsonar.inclusions="**/*.py, **/*.xml, **/*.js, **/*.html, **/*.css" \
|
||||
-Dsonar.exclusions="**/__manifest__.py, **/migrations/**, **/__pycache__/**" \
|
||||
-Dsonar.sourceEncoding="UTF-8" \
|
||||
-Dsonar.host.url="$SONAR_HOST_URL" \
|
||||
-Dsonar.login="$SONAR_TOKEN"
|
||||
|
||||
- name: Cleanup workspace
|
||||
if: always()
|
||||
run: |
|
||||
rm -rf $GITHUB_WORKSPACE/*
|
||||
|
|
@ -19,12 +19,12 @@
|
|||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<header>
|
||||
<button name="action_send" string="Send" type="object" states="draft" groups="purchase.group_purchase_user"/>
|
||||
<button name="action_ssd_approve" string="SSD Approve" type="object" states="ssd" groups="hr_base.group_services_manager"/>
|
||||
<button name="action_ssd_reject" string="SSD Reject" type="object" states="ssd" groups="hr_base.group_services_manager"/>
|
||||
<button name="action_gm_approve" string="GM Approve (Add to Agreement)" type="object" states="gm" groups="hr_base.group_general_manager"/>
|
||||
<button name="action_gm_reject" string="GM Reject" type="object" states="gm" groups="hr_base.group_general_manager"/>
|
||||
<button name="action_cancel" string="Cancel" type="object" states="draft,ssd,gm"/>
|
||||
<button name="action_send" string="Send" type="object" states="draft" groups="purchase.group_purchase_user" class="btn-primary" icon="fa-send"/>
|
||||
<button name="action_ssd_approve" string="SSD Approve" type="object" states="ssd" groups="hr_base.group_services_manager" class="btn-primary" icon="fa-check-circle"/>
|
||||
<button name="action_ssd_reject" string="SSD Reject" type="object" states="ssd" groups="hr_base.group_services_manager" class="btn-danger" icon="fa-times-circle"/>
|
||||
<button name="action_gm_approve" string="GM Approve (Add to Agreement)" type="object" states="gm" groups="hr_base.group_general_manager" class="btn-primary" icon="fa-check-circle"/>
|
||||
<button name="action_gm_reject" string="GM Reject" type="object" states="gm" groups="hr_base.group_general_manager" class="btn-danger" icon="fa-times-circle"/>
|
||||
<button name="action_cancel" string="Cancel" type="object" states="draft,ssd,gm" class="btn-secondary" icon="fa-ban"/>
|
||||
<field name="state" widget="statusbar" statusbar_visible="draft,ssd,gm,approved,rejected,cancel"/>
|
||||
</header>
|
||||
|
||||
|
|
|
|||
|
|
@ -23,18 +23,20 @@
|
|||
<form string="Annual Purchase Request">
|
||||
<header>
|
||||
<field name="can_create_agreement" invisible="1"/>
|
||||
<button name="action_send" string="Send" type="object" states="draft" class="oe_highlight" groups="purchase.group_purchase_user"/>
|
||||
<button name="action_manager_approve" string="Approve" type="object" class="oe_highlight" states="to_manager" groups="purchase.group_purchase_manager"/>
|
||||
<button name="action_manager_reject" string="Reject" type="object" states="to_manager" groups="purchase.group_purchase_manager"/>
|
||||
<button name="action_send_to_committee" string="Send to Committee" type="object" class="oe_highlight" groups="purchase.group_purchase_user" attrs="{'invisible': ['|', ('committee_enabled','=',False), ('state','not in',['procurement','rejected_by_committee'])]}"/>
|
||||
<button name="action_create_rfq" string="Create RFQ" type="object" class="oe_highlight" states="procurement,rejected_by_committee" groups="purchase.group_purchase_user"/>
|
||||
<button name="action_cancel" string="Cancel" type="object" states="procurement,rejected_by_committee,committee" groups="purchase.group_purchase_user"/>
|
||||
<button name="action_ssd_approve" string="Approve" class="oe_highlight" type="object" states="ssd" groups="hr_base.group_services_manager"/>
|
||||
<button name="action_ssd_reject" string="Reject" type="object" states="ssd" groups="hr_base.group_services_manager"/>
|
||||
<button name="action_ceo_approve" string="Approve" class="oe_highlight" type="object" states="ceo" groups="hr_base.group_general_manager"/>
|
||||
<button name="action_ceo_reject" string="Reject" type="object" states="ceo" groups="hr_base.group_general_manager"/>
|
||||
<button name="action_create_agreement" string="Create Agreement" type="object" states="purchase" class="oe_highlight" groups="purchase.group_purchase_manager,purchase.group_purchase_user"/>
|
||||
<button name="action_to_draft" string="Back To Draft" type="object" states="rejected" class="oe_highlight" groups="odex25_annual_purchase.group_annual_to_draft" />
|
||||
|
||||
<button name="action_send" string="Send" type="object" states="draft" class="btn-primary" groups="purchase.group_purchase_user" icon="fa-send"/>
|
||||
<button name="action_manager_approve" string="Approve" type="object" class="btn-primary" states="to_manager" groups="purchase.group_purchase_manager" icon="fa-check-circle"/>
|
||||
<button name="action_manager_reject" string="Reject" type="object" states="to_manager" groups="purchase.group_purchase_manager" class="btn-danger" icon="fa-times-circle"/>
|
||||
<button name="action_send_to_committee" string="Send to Committee" type="object" class="btn-info" groups="purchase.group_purchase_user" attrs="{'invisible': ['|', ('committee_enabled','=',False), ('state','not in',['procurement','rejected_by_committee'])]}" icon="fa-users"/>
|
||||
<button name="action_create_rfq" string="Create RFQ" type="object" class="btn-primary" states="procurement,rejected_by_committee" groups="purchase.group_purchase_user" icon="fa-file-text-o"/>
|
||||
<button name="action_cancel" string="Cancel" type="object" states="procurement,rejected_by_committee,committee" groups="purchase.group_purchase_user" class="btn-secondary" icon="fa-ban"/>
|
||||
<button name="action_ssd_approve" string="Approve" class="btn-primary" type="object" states="ssd" groups="hr_base.group_services_manager" icon="fa-check-circle"/>
|
||||
<button name="action_ssd_reject" string="Reject" type="object" states="ssd" groups="hr_base.group_services_manager" class="btn-danger" icon="fa-times-circle"/>
|
||||
<button name="action_ceo_approve" string="Approve" class="btn-primary" type="object" states="ceo" groups="hr_base.group_general_manager" icon="fa-check-circle"/>
|
||||
<button name="action_ceo_reject" string="Reject" type="object" states="ceo" groups="hr_base.group_general_manager" class="btn-danger" icon="fa-times-circle"/>
|
||||
<button name="action_create_agreement" string="Create Agreement" type="object" states="purchase" class="btn-primary" groups="purchase.group_purchase_manager" icon="fa-file-contract"/>
|
||||
<button name="action_to_draft" string="Back To Draft" type="object" states="rejected" class="btn-secondary" groups="odex25_annual_purchase.group_annual_to_draft" icon="fa-undo" />
|
||||
|
||||
<field name="state" widget="statusbar" statusbar_visible="draft,to_manager,procurement,committee,ssd,ceo,approved,rejected,cancel"/>
|
||||
</header>
|
||||
<sheet attrs="{'readonly': [('state', '!=', 'draft')]}">
|
||||
|
|
|
|||
|
|
@ -23,10 +23,10 @@
|
|||
</group>
|
||||
<footer>
|
||||
<button name="action_create_search_html" string="View" target="_blank" type="object"
|
||||
class="btn-primary"/>
|
||||
class="btn-primary" icon="fa-eye"/>
|
||||
<button name="action_create_search_pdf" string="Pdf" type="object"
|
||||
class="btn-primary"/>
|
||||
<button string="Cancel" class="btn-secondary" special="cancel"/>
|
||||
class="btn-primary" icon="fa-file-pdf-o"/>
|
||||
<button string="Cancel" class="btn-secondary" special="cancel" icon="fa-times"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
|
|
|
|||
|
|
@ -21,10 +21,10 @@
|
|||
</group>
|
||||
<footer>
|
||||
<button name="action_create_search_html" string="View" target="_blank" type="object"
|
||||
class="btn-primary"/>
|
||||
class="btn-primary" icon="fa-eye"/>
|
||||
<button name="action_create_search_pdf" string="Pdf" type="object"
|
||||
class="btn-primary"/>
|
||||
<button string="Cancel" class="btn-secondary" special="cancel"/>
|
||||
class="btn-primary" icon="fa-file-pdf-o"/>
|
||||
<button string="Cancel" class="btn-secondary" special="cancel" icon="fa-times"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
|
|
|
|||
|
|
@ -41,16 +41,16 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="" create="false" delete="false">
|
||||
<header>
|
||||
<button name="action_confirm" type="object" class="oe_highlight" states="draft" string="Confirm"
|
||||
groups="odex25_purchase_coc.group_coc_user,odex25_purchase_coc.group_coc_manager"/>
|
||||
<button name="action_confirm" type="object" class="btn-primary" states="draft" string="Confirm"
|
||||
groups="odex25_purchase_coc.group_coc_user,odex25_purchase_coc.group_coc_manager" icon="fa-check-circle"/>
|
||||
|
||||
<button name="action_cancel" type="object" class="oe_highlight" states="draft" string="Reject"
|
||||
groups="odex25_purchase_coc.group_coc_manager"/>
|
||||
<button name="action_cancel" type="object" class="btn-danger" states="draft" string="Reject"
|
||||
groups="odex25_purchase_coc.group_coc_manager" icon="fa-times-circle"/>
|
||||
<button name="action_approve"
|
||||
type="object"
|
||||
string="Manager Approve"
|
||||
states="manager"
|
||||
class="oe_highlight"
|
||||
class="btn-primary" icon="fa-check-circle"
|
||||
groups="odex25_purchase_coc.group_purchase_coc_direct_manager"
|
||||
/>
|
||||
|
||||
|
|
@ -58,11 +58,11 @@
|
|||
type="object"
|
||||
string="Manager Reject"
|
||||
states="manager"
|
||||
class="oe_highlight"
|
||||
class="btn-danger" icon="fa-times-circle"
|
||||
groups="odex25_purchase_coc.group_purchase_coc_direct_manager"
|
||||
/>
|
||||
|
||||
<button name="action_draft" type="object" class="oe_highlight" states="cancel" string="Set to Draft"/>
|
||||
<button name="action_draft" type="object" class="btn-secondary" states="cancel" string="Set to Draft" icon="fa-undo"/>
|
||||
<field name="state" widget="statusbar"/>
|
||||
</header>
|
||||
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ You have processed less product than the initial order.
|
|||
</p>
|
||||
|
||||
<footer>
|
||||
<button name="action_confirm" string="Create Backorder" type="object" class="btn-primary"/>
|
||||
<button name="action_cancel" string="No Backorder" type="object" class="btn-secondary"/>
|
||||
<button name="action_confirm" string="Create Backorder" type="object" class="btn-primary" icon="fa-plus-circle"/>
|
||||
<button name="action_cancel" string="No Backorder" type="object" class="btn-secondary" icon="fa-ban"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
|
|
|
|||
|
|
@ -21,8 +21,8 @@
|
|||
<field name="state" widget="statusbar" statusbar_visible="draft,dm,str_pro_department,direct_manager,send_budget,wait_budget,budget_approve,general_supervisor,waiting"/>
|
||||
</xpath>
|
||||
<xpath expr="//button[@name='action_pc_confirm']" position="replace">
|
||||
<button name="action_pc_confirm" groups="governmental_purchase.executive_director_of_purchase_and_contract" type="object" string="Approve" states="budget_approve" class="oe_highlight"/>
|
||||
<button name="%(purchase_requisition_custom.purchase_request_cancel_wizard_action)d" string="Refuse" states="budget_approve" type="action" groups="governmental_purchase.executive_director_of_purchase_and_contract"/>
|
||||
<button name="action_pc_confirm" groups="governmental_purchase.executive_director_of_purchase_and_contract" type="object" string="Approve" states="budget_approve" class="btn-primary" icon="fa-check-circle"/>
|
||||
<button name="%(purchase_requisition_custom.purchase_request_cancel_wizard_action)d" string="Refuse" states="budget_approve" type="action" groups="governmental_purchase.executive_director_of_purchase_and_contract" class="btn-danger" icon="fa-times-circle"/>
|
||||
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='partner_id']" position="after">
|
||||
|
|
@ -30,9 +30,9 @@
|
|||
<field name="check_chief_executive" invisible="1"/>
|
||||
</xpath>
|
||||
<xpath expr="//button[@name='action_confirm']" position="replace">
|
||||
<button name="action_confirm_button" groups="purchase_requisition_custom.group_direct_manger" type="object" string="Submit" class="oe_highlight" attrs="{'invisible': ['|',('check_chief_executive','=',False),('state','!=', 'dm')]}"/>
|
||||
<button name="technical_department" type="object" groups="odex25_taqeem_purchase.strategy_project_group" string="Technical Department" states="str_pro_department" class="oe_highlight"/>
|
||||
<button name="%(purchase_requisition_custom.purchase_request_cancel_wizard_action)d" string="Refuse" type="action" groups="odex25_taqeem_purchase.strategy_project_group" states="str_pro_department"/>
|
||||
<button name="action_confirm_button" groups="purchase_requisition_custom.group_direct_manger" type="object" string="Submit" class="btn-primary" attrs="{'invisible': ['|',('check_chief_executive','=',False),('state','!=', 'dm')]}" icon="fa-send"/>
|
||||
<button name="technical_department" type="object" groups="odex25_taqeem_purchase.strategy_project_group" string="Technical Department" states="str_pro_department" class="btn-info" icon="fa-cogs"/>
|
||||
<button name="%(purchase_requisition_custom.purchase_request_cancel_wizard_action)d" string="Refuse" type="action" groups="odex25_taqeem_purchase.strategy_project_group" states="str_pro_department" class="btn-danger" icon="fa-times-circle"/>
|
||||
</xpath>
|
||||
<!-- <xpath expr="//field[@name='line_ids']//field[@name='sum_total']" position="attributes">
|
||||
<attribute name="readonly">1</attribute>
|
||||
|
|
|
|||
|
|
@ -32,10 +32,10 @@
|
|||
<xpath expr="//button[@name='action_pc_confirm']" position="replace">
|
||||
<button name="action_pc_confirm"
|
||||
groups="governmental_purchase.executive_director_of_purchase_and_contract" type="object"
|
||||
string="Approve" states="budget_approve" class="oe_highlight"/>
|
||||
string="Approve" states="budget_approve" class="btn-primary" icon="fa-check-circle"/>
|
||||
<button name="%(purchase_requisition_custom.purchase_request_cancel_wizard_action)d" string="Refuse"
|
||||
states="budget_approve" type="action"
|
||||
groups="governmental_purchase.executive_director_of_purchase_and_contract"/>
|
||||
groups="governmental_purchase.executive_director_of_purchase_and_contract" class="btn-danger" icon="fa-times-circle"/>
|
||||
|
||||
</xpath>
|
||||
|
||||
|
|
@ -45,7 +45,7 @@
|
|||
</xpath>
|
||||
<xpath expr="//button[@name='action_confirm']" position="replace">
|
||||
<button name="action_confirm" groups="purchase_requisition_custom.group_direct_manger" type="object"
|
||||
string="Submit" class="oe_highlight"
|
||||
string="Submit" class="btn-primary" icon="fa-send"
|
||||
attrs="{'invisible': ['|',('check_chief_executive','=',False),('state','!=', 'dm')]}"/>
|
||||
</xpath>
|
||||
<xpath expr="//page[@name='base_info_dep_use']" position="replace"/>
|
||||
|
|
|
|||
|
|
@ -29,19 +29,19 @@
|
|||
</xpath>
|
||||
<xpath expr="//button[@name='action_confirm']" position="replace">
|
||||
<button name="action_confirm" groups="purchase_requisition_custom.group_direct_manger" type="object"
|
||||
string="Submit" class="oe_highlight"
|
||||
string="Submit" class="btn-primary" icon="fa-send"
|
||||
attrs="{'invisible': ['|',('check_chief_executive','=',False),('state','!=', 'dm')]}"/>
|
||||
|
||||
</xpath>
|
||||
<xpath expr="//button[@name='action_pc_confirm']" position="replace">
|
||||
<button name="action_pc_confirm"
|
||||
groups="governmental_purchase.executive_director_of_purchase_and_contract" type="object"
|
||||
string="Approve" states="budget_approve" class="oe_highlight"/>
|
||||
string="Approve" states="budget_approve" class="btn-primary" icon="fa-check-circle"/>
|
||||
|
||||
<button name="%(purchase_requisition_custom.purchase_request_cancel_wizard_action)d" string="Refuse"
|
||||
|
||||
states="budget_approve" type="action"
|
||||
groups="governmental_purchase.executive_director_of_purchase_and_contract"/>
|
||||
groups="governmental_purchase.executive_director_of_purchase_and_contract" class="btn-danger" icon="fa-times-circle"/>
|
||||
</xpath>
|
||||
<!-- <xpath expr="//button[@name='%(purchase_requisition_custom.purchase_request_cancel_wizard_action)d']"-->
|
||||
<!-- position="replace">-->
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@
|
|||
<field name="inherit_id" ref="purchase_requisition.view_purchase_requisition_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//button[@name='action_in_progress']" position="after">
|
||||
<button name="action_show_portal" attrs="{'invisible':['|','|',('state' , '!=' , 'in_progress' ),('published_in_portal' , '=' , True),('publish_in_portal' , '!=' , True)]}" string="Show in Portal" type="object" class="btn-primary"/>
|
||||
<button name="extend_availability" attrs="{'invisible':['|',('state' , '!=' , 'open' ),('published_in_portal' , '!=' , True)]}" type="object" string="Extend Availability" />
|
||||
<button name="action_show_portal" attrs="{'invisible':['|','|',('state' , '!=' , 'in_progress' ),('published_in_portal' , '=' , True),('publish_in_portal' , '!=' , True)]}" string="Show in Portal" type="object" class="btn-primary" icon="fa-globe"/>
|
||||
<button name="extend_availability" attrs="{'invisible':['|',('state' , '!=' , 'open' ),('published_in_portal' , '!=' , True)]}" type="object" string="Extend Availability" class="btn-info" icon="fa-clock-o" />
|
||||
</xpath>
|
||||
<xpath expr="//div[@class='oe_button_box']" position="inside">
|
||||
<button name="application" type="object" class="oe_stat_button" icon="fa-globe"
|
||||
|
|
@ -61,7 +61,7 @@
|
|||
</group>
|
||||
<footer>
|
||||
<div>
|
||||
<button name="action_extend" string="Extend" type="object" default_focus="1" class="oe_highlight"/>
|
||||
<button name="action_extend" string="Extend" type="object" default_focus="1" class="btn-primary" icon="fa-clock-o"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="Online Tender Configuration" create="false" delete="false">
|
||||
<header>
|
||||
<button name="action_tender" confirm="Are you sure you want to shortlisting this Request?" states="draft" string="Tender" type="object"/>
|
||||
<button name="action_reject" states="draft" string="Reject" type="object"/>
|
||||
<button name="action_tender" confirm="Are you sure you want to shortlisting this Request?" states="draft" string="Tender" type="object" class="btn-primary" icon="fa-gavel"/>
|
||||
<button name="action_reject" states="draft" string="Reject" type="object" class="btn-danger" icon="fa-times-circle"/>
|
||||
<field name="state" widget="statusbar" statusbar_visible="draft,tender,contract"/>
|
||||
</header>
|
||||
<sheet>
|
||||
|
|
@ -61,7 +61,7 @@
|
|||
<field name="reject_reason" required="1"/>
|
||||
<footer>
|
||||
<div>
|
||||
<button name="action_reject" string="Reject" type="object" default_focus="1" class="oe_highlight"/>
|
||||
<button name="action_reject" string="Reject" type="object" default_focus="1" class="btn-danger" icon="fa-times-circle"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
</group>
|
||||
</sheet>
|
||||
<footer>
|
||||
<button name="print_report" string="Print" type="object" class="btn-primary"/>
|
||||
<button name="print_report" string="Print" type="object" class="btn-primary" icon="fa-print"/>
|
||||
<button string="Cancel" class="btn-default" special="cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
|
|
@ -66,7 +66,7 @@
|
|||
</group>
|
||||
</sheet>
|
||||
<footer>
|
||||
<button name="print_report" string="Print" type="object" class="btn-primary"/>
|
||||
<button name="print_report" string="Print" type="object" class="btn-primary" icon="fa-print"/>
|
||||
<button string="Cancel" class="btn-default" special="cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
|
|
@ -111,7 +111,7 @@
|
|||
</group>
|
||||
</sheet>
|
||||
<footer>
|
||||
<button name="print_report" string="Print" type="object" class="btn-primary"/>
|
||||
<button name="print_report" string="Print" type="object" class="btn-primary" icon="fa-print"/>
|
||||
<button string="Cancel" class="btn-default" special="cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
|
|
|
|||
|
|
@ -17,9 +17,9 @@
|
|||
</group>
|
||||
<footer>
|
||||
<div>
|
||||
<button name="action_print" string="Print" type="object" default_focus="1" class="oe_highlight"/>
|
||||
<button name="action_print" string="Print" type="object" default_focus="1" class="btn-primary" icon="fa-print"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
<button string="Cancel" class="btn-secondary" special="cancel" icon="fa-times" />
|
||||
</div>
|
||||
</footer>
|
||||
</form>
|
||||
|
|
|
|||
|
|
@ -18,9 +18,9 @@
|
|||
</group>
|
||||
<footer>
|
||||
<div>
|
||||
<button name="action_print" string="Print" type="object" default_focus="1" class="oe_highlight"/>
|
||||
<button name="action_print" string="Print" type="object" default_focus="1" class="btn-primary" icon="fa-print"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
<button string="Cancel" class="btn-secondary" special="cancel" icon="fa-times" />
|
||||
</div>
|
||||
</footer>
|
||||
</form>
|
||||
|
|
|
|||
|
|
@ -17,9 +17,9 @@
|
|||
</group>
|
||||
<footer>
|
||||
<div>
|
||||
<button name="action_print" string="Print" type="object" default_focus="1" class="oe_highlight"/>
|
||||
<button name="action_print" string="Print" type="object" default_focus="1" class="btn-primary" icon="fa-print"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
<button string="Cancel" class="btn-secondary" special="cancel" icon="fa-times" />
|
||||
</div>
|
||||
</footer>
|
||||
</form>
|
||||
|
|
|
|||
|
|
@ -18,9 +18,9 @@
|
|||
</group>
|
||||
<footer>
|
||||
<div>
|
||||
<button name="action_print" string="Print" type="object" default_focus="1" class="oe_highlight"/>
|
||||
<button name="action_print" string="Print" type="object" default_focus="1" class="btn-primary" icon="fa-print"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
<button string="Cancel" class="btn-secondary" special="cancel" icon="fa-times" />
|
||||
</div>
|
||||
</footer>
|
||||
</form>
|
||||
|
|
|
|||
|
|
@ -18,9 +18,9 @@
|
|||
</group>
|
||||
<footer>
|
||||
<div>
|
||||
<button name="action_print" string="Print" type="object" default_focus="1" class="oe_highlight"/>
|
||||
<button name="action_print" string="Print" type="object" default_focus="1" class="btn-primary" icon="fa-print"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
<button string="Cancel" class="btn-secondary" special="cancel" icon="fa-times" />
|
||||
</div>
|
||||
</footer>
|
||||
</form>
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ msgstr ""
|
|||
#. module: purchase_custom_stock
|
||||
#: model:ir.model.fields,field_description:purchase_custom_stock.field_purchase_request__show_approve_warehouse
|
||||
msgid "Approve Warehouse"
|
||||
msgstr ""
|
||||
msgstr "موافقة المستودع"
|
||||
|
||||
#. module: purchase_custom_stock
|
||||
#: model:ir.model.fields,field_description:purchase_custom_stock.field_asset_operation_return_line__asset_id
|
||||
|
|
|
|||
|
|
@ -47,15 +47,15 @@
|
|||
</button>
|
||||
</xpath>
|
||||
<xpath expr="/form/header/button[@name='action_done']" position="replace">
|
||||
<button name="action_done" type="object" string="Delivery Done" class="oe_highlight"
|
||||
<button name="action_done" type="object" string="Delivery Done" class="btn-success"
|
||||
groups="purchase_requisition_custom.create_purchase_request"
|
||||
attrs="{'invisible':[('show_emp_button' , '=' , False)]}"/>
|
||||
attrs="{'invisible':[('show_emp_button' , '=' , False)]}" icon="fa-check-circle"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='use_analytic']" position="attributes">
|
||||
<attribute name="attrs">{'readonly':[('state','!=','draft')]}</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//group[1]" position="after">
|
||||
<group col="2" colspan="2">
|
||||
<xpath expr="//group[@name='other_details_group']" position="after">
|
||||
<group string="Warehouse Management" name="warehouse_management_group">
|
||||
<field name="view_location_id" invisible="1"/>
|
||||
<field name="edit_locations" invisible="1"/>
|
||||
<field name="show_emp_button" invisible="1"/>
|
||||
|
|
@ -64,20 +64,12 @@
|
|||
<field name="show_asset_release_button" invisible="1"/>
|
||||
<field name="all_assets_released" invisible="1"/>
|
||||
<field name="asset_custody_complete" invisible="1"/>
|
||||
<div>
|
||||
<label for="warehouse_id"/>
|
||||
<field name="warehouse_id"
|
||||
attrs="{'readonly':['|',('edit_locations' , '=' , False),('state' , '!=' , 'warehouse')]}"
|
||||
groups="stock.group_stock_user,stock.group_stock_manager"/>
|
||||
|
||||
</div>
|
||||
<div>
|
||||
<label for="location_id"/>
|
||||
<field name="location_id"
|
||||
attrs="{'readonly':['|',('edit_locations' , '=' , False),('state' , '!=' , 'warehouse')]}"
|
||||
groups="stock.group_stock_user,stock.group_stock_manager"/>
|
||||
|
||||
</div>
|
||||
</group>
|
||||
</xpath>
|
||||
<xpath expr="//button[@name='open_requisition']" position="after">
|
||||
|
|
@ -104,7 +96,7 @@
|
|||
groups="stock.group_stock_user,stock.group_stock_manager"/>
|
||||
<button name="action_refuse" type="object" string="Refuse" id="prs_request_refuse"
|
||||
groups="stock.group_stock_manager"
|
||||
attrs="{'invisible' : [('state' , '!=' , 'warehouse')]}"/>
|
||||
attrs="{'invisible' : [('state' , '!=' , 'warehouse')]}" class="btn-danger" icon="fa-times-circle"/>
|
||||
</xpath>
|
||||
<xpath expr="//button[@name='action_draft']" position="before">
|
||||
<button name="create_asset_custody_lines"
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ msgstr "طلب عرض سعر"
|
|||
#: code:addons/purchase_requisition_custom/models/purchase_requisition_custom.py:0
|
||||
#, python-format
|
||||
msgid " No budget for this service "
|
||||
msgstr ""
|
||||
msgstr "لا توجد ميزانية لهذه الخدمة"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model:ir.actions.report,print_report_name:purchase_requisition_custom.action_report_committee_meeting_minutes
|
||||
|
|
@ -102,13 +102,13 @@ msgstr "الموعد النهائي لاستقبال عروض الاسعار"
|
|||
#. module: purchase_requisition_custom
|
||||
#: model:ir.model.fields,field_description:purchase_requisition_custom.field_purchase_requisition__name
|
||||
msgid "Agreement Reference"
|
||||
msgstr ""
|
||||
msgstr "مرجع الاتفاقية"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model:ir.model.fields,field_description:purchase_requisition_custom.field_purchase_order__requisition_type_exclusive
|
||||
#: model:ir.model.fields,field_description:purchase_requisition_custom.field_purchase_requisition__type_exclusive
|
||||
msgid "Agreement Selection Type"
|
||||
msgstr ""
|
||||
msgstr "نوع اختيار الاتفاقية"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model:ir.model.fields,field_description:purchase_requisition_custom.field_purchase_request__type_id
|
||||
|
|
@ -124,7 +124,7 @@ msgstr "تاريخ توقيع الاتفاقية"
|
|||
#. module: purchase_requisition_custom
|
||||
#: model:ir.model.fields,field_description:purchase_requisition_custom.field_purchase_order__already_voted
|
||||
msgid "Already Voted"
|
||||
msgstr ""
|
||||
msgstr "تم التصويت بالفعل"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model:ir.model.fields,field_description:purchase_requisition_custom.field_purchase_request_line__account_id
|
||||
|
|
@ -2397,7 +2397,7 @@ msgstr "عدد الرسائل غير المقروءة"
|
|||
#. module: purchase_requisition_custom
|
||||
#: model:ir.model.fields,field_description:purchase_requisition_custom.field_purchase_request__use_analytic
|
||||
msgid "Use Analytic"
|
||||
msgstr "استخدام حساب تحليلى (بند موازنة) اخر"
|
||||
msgstr "حساب تحليلي آخر؟"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model:ir.model.fields,field_description:purchase_requisition_custom.field_purchase_requisition__is_analytic
|
||||
|
|
@ -2946,6 +2946,186 @@ msgstr "نوع الطلب"
|
|||
msgid "Month"
|
||||
msgstr "الشهر"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_form
|
||||
msgid "Request Information"
|
||||
msgstr "معلومات الطلب"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_form
|
||||
msgid "Request Details"
|
||||
msgstr "تفاصيل الطلب"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_form
|
||||
msgid "Vendor"
|
||||
msgstr "المورد"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_form
|
||||
msgid "Accounting"
|
||||
msgstr "المحاسبة"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_form
|
||||
msgid "Enter purchase request justifications..."
|
||||
msgstr "أدخل مبررات طلب الشراء..."
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_form
|
||||
msgid "Enter additional notes..."
|
||||
msgstr "أدخل ملاحظات إضافية..."
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_form
|
||||
msgid "Vendor and Accounting"
|
||||
msgstr "المورد والمحاسبة"
|
||||
|
||||
#. module: purchase_custom_stock
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_custom_stock.purchase_request_form_inherit
|
||||
msgid "Warehouse Management"
|
||||
msgstr "إدارة المستودعات"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_form
|
||||
msgid "Suggested vendor for this purchase request"
|
||||
msgstr "المورد المقترح لهذا الطلب"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_form
|
||||
msgid "Analytic account for budget tracking"
|
||||
msgstr "الحساب التحليلي لتتبع الموازنة"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_form
|
||||
msgid "Other Details"
|
||||
msgstr "تفاصيل أخرى"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_form
|
||||
msgid "Warehouse Management"
|
||||
msgstr "إدارة المستودعات"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_requisition_custom_form_view
|
||||
msgid "Select"
|
||||
msgstr "اختيار"
|
||||
|
||||
#. module: purchase_custom_stock
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_custom_stock.purchase_request_form_inherit
|
||||
msgid "Delivery Done"
|
||||
msgstr "تم التسليم"
|
||||
|
||||
#. module: purchase_custom_stock
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_custom_stock.purchase_request_form_inherit
|
||||
msgid "Create Asset Custody"
|
||||
msgstr "إنشاء عهدة أصول"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_tree
|
||||
msgid "Purchase State"
|
||||
msgstr "حالة الشراء"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_tree
|
||||
msgid "State"
|
||||
msgstr "الحالة"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_tree
|
||||
msgid "Categories"
|
||||
msgstr "الفئات"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_tree
|
||||
msgid "Branch"
|
||||
msgstr "الفرع"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_tree
|
||||
msgid "Department"
|
||||
msgstr "القسم"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_tree
|
||||
msgid "Employee"
|
||||
msgstr "الموظف"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_tree
|
||||
msgid "Date"
|
||||
msgstr "التاريخ"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_tree
|
||||
msgid "Request Number"
|
||||
msgstr "رقم الطلب"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_requisition_custom_form_view
|
||||
msgid "Approve Order"
|
||||
msgstr "موافقة الطلب"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_requisition_custom_form_view
|
||||
msgid "PO To Contract"
|
||||
msgstr "تحويل إلى عقد"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_requisition_custom_form_view
|
||||
msgid "Sign"
|
||||
msgstr "توقيع"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_requisition_custom_form_view
|
||||
msgid "Choose All"
|
||||
msgstr "اختيار الكل"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_requisition_custom_form_view
|
||||
msgid "Send To Committee"
|
||||
msgstr "إرسال للجنة"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_requisition_custom_form_view
|
||||
msgid "Confirm Purchase"
|
||||
msgstr "تأكيد الشراء"
|
||||
|
||||
#. module: odex25_purchase_coc
|
||||
#: model_terms:ir.ui.view,arch_db:odex25_purchase_coc.purchase_coc_form_view
|
||||
msgid "Manager Approve"
|
||||
msgstr "موافقة المدير"
|
||||
|
||||
#. module: odex25_purchase_coc
|
||||
#: model_terms:ir.ui.view,arch_db:odex25_purchase_coc.purchase_coc_form_view
|
||||
msgid "Manager Reject"
|
||||
msgstr "رفض المدير"
|
||||
|
||||
#. module: vendor_evaluation
|
||||
#: model_terms:ir.ui.view,arch_db:vendor_evaluation.vendor_evaluation_wizard_view
|
||||
msgid "Evaluate"
|
||||
msgstr "تقييم"
|
||||
|
||||
#. module: odex25_taqeem_purchase
|
||||
#: model_terms:ir.ui.view,arch_db:odex25_taqeem_purchase.competitive_purchase_view
|
||||
msgid "Technical Department"
|
||||
msgstr "القسم الفني"
|
||||
|
||||
#. module: odex25_purchase_coc
|
||||
#: model_terms:ir.ui.view,arch_db:odex25_purchase_coc.purchase_coc_form_view
|
||||
msgid "Create Backorder"
|
||||
msgstr "إنشاء طلب متأخر"
|
||||
|
||||
#. module: odex25_purchase_coc
|
||||
#: model_terms:ir.ui.view,arch_db:odex25_purchase_coc.purchase_coc_form_view
|
||||
msgid "No Backorder"
|
||||
msgstr "بدون طلب متأخر"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_form
|
||||
msgid "Request Lines"
|
||||
msgstr "بنود الطلب"
|
||||
|
||||
#. module: purchase_requisition_custom
|
||||
#: model_terms:ir.ui.view,arch_db:purchase_requisition_custom.purchase_request_search
|
||||
msgid "Year"
|
||||
|
|
|
|||
|
|
@ -12,32 +12,38 @@
|
|||
<button name="action_submit" groups="purchase_requisition_custom.create_purchase_request"
|
||||
type="object"
|
||||
string="Submit"
|
||||
class="oe_highlight"
|
||||
class="btn-primary"
|
||||
icon="fa-paper-plane"
|
||||
attrs="{'invisible': ['|',('is_creator', '=', False),('state','!=','draft')]}"/>
|
||||
<button name="action_confirm" groups="purchase_requisition_custom.group_direct_manger"
|
||||
type="object" string="Approve" states="direct_manager" class="oe_highlight"/>
|
||||
|
||||
|
||||
type="object" string="Approve" states="direct_manager"
|
||||
class="btn-primary" icon="fa-check-circle"/>
|
||||
|
||||
<button name="create_requisition"
|
||||
groups="purchase.group_purchase_user,purchase.group_purchase_manager" type="object"
|
||||
string="Create Requisition"
|
||||
class="oe_highlight"
|
||||
class="btn-primary"
|
||||
icon="fa-file-text-o"
|
||||
attrs="{'invisible' : ['|',('state' , '!=' , 'waiting'),('purchase_create' , '=' , True)]}"/>
|
||||
|
||||
<button name="create_purchase_order2" type="object" string="Create Purchase Order"
|
||||
class="oe_highlight" groups="purchase.group_purchase_user"
|
||||
class="btn-primary" groups="purchase.group_purchase_user"
|
||||
icon="fa-shopping-cart"
|
||||
attrs="{'invisible' : ['|',('state' , '!=' , 'waiting'),('purchase_create' , '=' , True)]}"/>
|
||||
|
||||
<button name="action_refuse" type="object" string="Refuse" id="prc_request_refuse"
|
||||
groups="purchase_requisition_custom.group_refuse_purchase"
|
||||
class="btn-danger"
|
||||
icon="fa-times-circle"
|
||||
attrs="{'invisible' : [('state' , 'not in' , ('direct_manager','waiting'))]}"/>
|
||||
|
||||
<button name="action_done" type="object" string="Done" class="oe_stat_button"
|
||||
groups="purchase.group_purchase_manager" states="waiting"/>
|
||||
groups="purchase.group_purchase_manager" states="waiting"
|
||||
icon="fa-check-circle"/>
|
||||
|
||||
<button name="action_draft" type="object" string="Reset To Draft" class="oe_highlight"
|
||||
states="refuse" groups="purchase_requisition_custom.group_purchase_set_to_draft"/>
|
||||
<button name="action_draft" type="object" string="Reset To Draft" class="btn-secondary"
|
||||
states="refuse" groups="purchase_requisition_custom.group_purchase_set_to_draft"
|
||||
icon="fa-undo"/>
|
||||
|
||||
<field name="state" widget="statusbar"/>
|
||||
|
||||
|
|
@ -47,11 +53,11 @@
|
|||
<field name="is_requisition" invisible="1"/>
|
||||
<field name="is_creator" invisible="1"/>
|
||||
<button class="oe_stat_button" name="open_requisition" type="object"
|
||||
string="Purchase Agreement" icon="fa-list-ol"
|
||||
string="Purchase Agreement" icon="fa-file-text-o"
|
||||
attrs="{'invisible' : [('is_requisition' , '=' , False)]}"
|
||||
groups="purchase.group_purchase_user,purchase.group_purchase_manager"/>
|
||||
<button class="oe_stat_button" name="open_purchase" type="object"
|
||||
string="Purchase Orders" icon="fa-list-ol"
|
||||
string="Purchase Orders" icon="fa-shopping-cart"
|
||||
attrs="{'invisible' : [('purchase_create' , '=' , False)]}"
|
||||
groups="purchase.group_purchase_user,purchase.group_purchase_manager"/>
|
||||
</div>
|
||||
|
|
@ -61,40 +67,44 @@
|
|||
<field name="name" required="1" readonly="1" class="oe_inline"/>
|
||||
</h1>
|
||||
</div>
|
||||
<group col="4" colspan="3">
|
||||
<group>
|
||||
<group string="Request Information">
|
||||
<field name="date" readonly="1" widget="date"/>
|
||||
<field name="by_purchase" groups="purchase.group_purchase_user"/>
|
||||
<field name="picking_type_id" invisible="1"/>
|
||||
<field name="employee_id" attrs="{'readonly':[('by_purchase' , '=' , False)]}" required="1"
|
||||
options="{'no_create' : True , 'no_edit' : True ,'no_open' : True}"/>
|
||||
<field name="department_id" force_save="1"
|
||||
attrs="{'readonly' : ['|',('state' , '!=' , 'draft'),('by_purchase' , '!=' , True)] , 'required' : [('by_purchase' , '=' , True)]}"
|
||||
readonly="1" context="{'show_department_short': True}"/>
|
||||
<field name="branch_id" readonly="1" context="{'show_branch_short': True}"/>
|
||||
<field name="employee_id" attrs="{'readonly':[('by_purchase' , '=' , False)]}" required="1"
|
||||
options="{'no_create' : True , 'no_edit' : True ,'no_open' : True}"/>
|
||||
</group>
|
||||
<group string="Request Details">
|
||||
<field name="product_category_ids" widget="many2many_tags"/>
|
||||
<field name="purchase_purpose" required="1"
|
||||
attrs="{'readonly':[('state' , '!=' , 'draft')]}"/>
|
||||
<field name="date" readonly="1"/>
|
||||
<field name="purchase_create" invisible="1"/>
|
||||
attrs="{'readonly':[('state' , '!=' , 'draft')]}"
|
||||
placeholder="Enter purchase request justifications..."/>
|
||||
<field name="partner_id"
|
||||
domain="[('supplier_rank','>', 0)]"
|
||||
options="{'no_create' : True , 'no_edit' : True ,'no_open' : True}"
|
||||
attrs="{'readonly':['|',('edit_partner_id' , '=' , False),('state' , '!=' , 'waiting')]}"/>
|
||||
<!-- <div>-->
|
||||
<!-- <label for="use_analytic"/>-->
|
||||
attrs="{'readonly':['|',('edit_partner_id' , '=' , False),('state' , '!=' , 'waiting')]}"
|
||||
help="Suggested vendor for this purchase request"/>
|
||||
</group>
|
||||
<group string="Other Details" name="other_details_group">
|
||||
<field name="use_analytic"/>
|
||||
<field name="account_analytic_id"
|
||||
options="{'no_create' : True , 'no_edit' : True ,'no_open' : True}"
|
||||
attrs="{'invisible':[('use_analytic' , '=' , False)],'required':[('use_analytic' , '=' , True)],'readonly':[('state' , '!=' , 'draft')]}"/>
|
||||
<!-- </div>-->
|
||||
|
||||
attrs="{'invisible':[('use_analytic' , '=' , False)],'required':[('use_analytic' , '=' , True)],'readonly':[('state' , '!=' , 'draft')]}"
|
||||
help="Analytic account for budget tracking"/>
|
||||
</group>
|
||||
<field name="picking_type_id" invisible="1"/>
|
||||
<field name="purchase_create" invisible="1"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
<field name="edit_partner_id" invisible="1"/>
|
||||
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Items" name="purchase_request_info">
|
||||
<page string="Items" name="purchase_request_info" icon="fa-list">
|
||||
<field name="line_ids" attrs="{'readonly':[('state' , '!=' , 'draft')]}">
|
||||
<tree editable="bottom">
|
||||
<tree editable="bottom" string="Request Lines">
|
||||
<field name="product_id"
|
||||
domain="[('purchase_ok', '=', True)]"
|
||||
options="{'no_create' : True , 'no_edit' : True ,'no_open' : True}"
|
||||
|
|
@ -113,8 +123,8 @@
|
|||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Note">
|
||||
<field name="note"/>
|
||||
<page string="Note" icon="fa-sticky-note-o">
|
||||
<field name="note" placeholder="Enter additional notes..."/>
|
||||
</page>
|
||||
</notebook>
|
||||
</sheet>
|
||||
|
|
@ -131,15 +141,21 @@
|
|||
<field name="name">Purchase Request</field>
|
||||
<field name="model">purchase.request</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
<field name="date"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="department_id" context="{'show_department_short': True}"/>
|
||||
<field name="branch_id" context="{'show_branch_short': True}"/>
|
||||
<field name="product_category_ids" widget="many2many_tags"/>
|
||||
<field name="state"/>
|
||||
<field name="purchase_state_summary" optional="show"/>
|
||||
<tree string="Purchase Requests">
|
||||
<field name="name" string="Request Number"/>
|
||||
<field name="date" widget="date" string="Date"/>
|
||||
<field name="employee_id" string="Employee"/>
|
||||
<field name="department_id" string="Department" context="{'show_department_short': True}"/>
|
||||
<field name="branch_id" string="Branch" context="{'show_branch_short': True}"/>
|
||||
<field name="product_category_ids" widget="many2many_tags" string="Categories"/>
|
||||
<field name="state" string="State" widget="badge"
|
||||
decoration-muted="state == 'draft'"
|
||||
decoration-warning="state in ['direct_manager', 'wait_for_send']"
|
||||
decoration-info="state in ['waiting', 'warehouse', 'initial']"
|
||||
decoration-primary="state == 'employee'"
|
||||
decoration-success="state == 'done'"
|
||||
decoration-danger="state in ['cancel', 'refuse']"/>
|
||||
<field name="purchase_state_summary" optional="show" widget="badge" string="Purchase State"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
|||
|
|
@ -171,23 +171,23 @@
|
|||
<field name="requisition_state" invisible="1"/>
|
||||
<field name="requisition_type_exclusive" invisible="1"/>
|
||||
<!-- <button type="object" name="action_to_approve" class="oe_highlight" states="to approve" string="Approve"/>-->
|
||||
<button type="object" name="action_sign" class="oe_highlight"
|
||||
<button type="object" name="action_sign" class="btn-primary"
|
||||
groups="purchase_requisition_custom.group_sign_purchase_order"
|
||||
attrs="{'invisible':['|',('requisition_id','=',False),
|
||||
'|', ('state','in',['sign','purchase','to approve','done',
|
||||
'cancel','budget_rejected','wait_for_send','waiting']), ('is_signed', '=', True)]}"
|
||||
string="Sign"/>
|
||||
string="Sign" icon="fa-signature"/>
|
||||
<!-- <button type="object" name="action_approve_po" string="Confirm Purchase" class="oe_highlight"-->
|
||||
<!-- attrs="{'invisible':['|',('requisition_id','=',False),'|','&',('requisition_type_exclusive', '!=','exclusive'),('is_purchase_budget','=',False),('state','not in',('to approve'))]}"/>-->
|
||||
<button type="object" name="action_approve_po" string="Confirm Purchase" class="oe_highlight" invisible="1"/>
|
||||
<button type="object" name="action_approve_po" string="Confirm Purchase" class="btn-primary" invisible="1" icon="fa-check-circle"/>
|
||||
|
||||
<button type="object" name="action_select" groups="purchase_requisition_custom.committe_member"
|
||||
attrs="{'invisible':['|', ('state','in',['done','purchase','waiting','cancel']),('can_committee_vote', '=', False)]}"
|
||||
string="Select"/>
|
||||
string="Select" class="btn-primary" icon="fa-check-circle"/>
|
||||
|
||||
<button type="object" name="action_refuse" groups="purchase_requisition_custom.committe_member"
|
||||
attrs="{'invisible':['|',('state','in',['done','purchase','waiting','cancel']),('can_committee_vote', '=', False)]}"
|
||||
string="Refuse"/>
|
||||
string="Refuse" class="btn-danger" icon="fa-times-circle"/>
|
||||
<button type="object" name="action_recommend"
|
||||
groups="purchase_requisition_custom.group_select_recommended_offer"
|
||||
confirm="Are you sure you want to process ?"
|
||||
|
|
@ -197,28 +197,30 @@
|
|||
<button type="object" name="action_unsign"
|
||||
groups="purchase_requisition_custom.group_unsign_purchase_order" string="UnSign"
|
||||
states="sign"/>
|
||||
<button type="object" name="budget_resend" string="Resend To Budget Check" class="oe_highlight"
|
||||
states="budget_rejected"/>
|
||||
<button type="object" name="action_budget" string="Send To Budget Check" class="oe_highlight"
|
||||
attrs="{'invisible':[('hide_action_budget_button', '=', True)]}"/>
|
||||
<button type="object" name="budget_resend" string="Resend To Budget Check" class="btn-info"
|
||||
states="budget_rejected" icon="fa-refresh"/>
|
||||
<button type="object" name="action_budget" string="Send To Budget Check" class="btn-primary"
|
||||
attrs="{'invisible':[('hide_action_budget_button', '=', True)]}" icon="fa-send"/>
|
||||
<button name="action_skip_budget" type="object" string="Skip Budget"
|
||||
attrs="{'invisible':[('hide_action_budget_button', '=', True)]}"
|
||||
groups="purchase_requisition_custom.group_skip_purchase_budget"/>
|
||||
groups="purchase_requisition_custom.group_skip_purchase_budget"
|
||||
class="btn-warning" icon="fa-forward"/>
|
||||
<!-- <button name="button_draft" states="cancel" string="Set to Draft" type="object"/>-->
|
||||
</xpath>
|
||||
<xpath expr="//button[@name='button_approve']" position="replace">
|
||||
<button name="button_approve" type="object"
|
||||
attrs="{'invisible':['|',('requisition_id','!=',False),('state','not in',('to approve'))]}"
|
||||
string="Approve Order" class="oe_highlight" groups="purchase.group_purchase_manager"/>
|
||||
string="Approve Order" class="btn-primary" groups="purchase.group_purchase_manager" icon="fa-check-circle"/>
|
||||
</xpath>
|
||||
<xpath expr="//button[@name='button_draft']" position="after">
|
||||
|
||||
<button string='PO To Contract' name="open_convert_po_contract" type="object"
|
||||
class="oe_highlight" groups="purchase.group_purchase_manager"
|
||||
class="btn-info" groups="purchase.group_purchase_manager" icon="fa-file-contract"
|
||||
attrs="{'invisible':[('state','in',('draft','wait','wait_for_send','sent','to approve','sign','waiting','purchase','cancel'))]}"/>
|
||||
</xpath>
|
||||
<xpath expr="//button[@name='button_draft']" position="attributes">
|
||||
<attribute name="class">oe_highlight</attribute>
|
||||
<attribute name="class">btn-warning</attribute>
|
||||
<attribute name="icon">fa-undo</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='date_order']" position="after">
|
||||
<field name="type"/>
|
||||
|
|
@ -233,7 +235,8 @@
|
|||
<xpath expr="/form/header/button[@id='draft_confirm']" position="attributes">
|
||||
<attribute name="groups">purchase.group_purchase_manager</attribute>
|
||||
<attribute name="states">draft</attribute>
|
||||
<attribute name="class">oe_highlight</attribute>
|
||||
<attribute name="class">btn-primary</attribute>
|
||||
<attribute name="icon">fa-check-circle</attribute>
|
||||
</xpath>
|
||||
<!-- ('is_purchase_budget', '=', False)-->
|
||||
<xpath expr="/form/header/button[@id='bid_confirm']" position="attributes">
|
||||
|
|
@ -310,9 +313,9 @@
|
|||
<field name="purpose" attrs="{'readonly': [('state','in',['done','cancel'])]}"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='order_line']" position="before">
|
||||
<button name="action_select_all" class="oe_highlight" type="object"
|
||||
<button name="action_select_all" class="btn-info" type="object"
|
||||
attrs="{'invisible':[('state','in',('done','cancel','waiting', 'sign','purchase'))]}"
|
||||
string="Choose All"/>
|
||||
string="Choose All" icon="fa-check-square"/>
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//field[@name='order_line']/tree//field[@name='name']" position="after">
|
||||
|
|
@ -381,18 +384,19 @@
|
|||
<button type="object" groups="purchase_requisition_custom.group_accept_purchase_requisition"
|
||||
name="action_accept" string="Accept"
|
||||
attrs="{'invisible':['|',('state','!=','in_progress'),('type','!=','project')]}"
|
||||
class="oe_highlight"/>
|
||||
class="btn-primary" icon="fa-check-circle"/>
|
||||
<button type="object" groups="purchase_requisition_custom.group_quotation_purchase_requisition"
|
||||
name="action_quotation" string="Quotation"
|
||||
attrs="{'invisible':['&','|',('state','!=','accept'),('type','!=','project'),'|',('state','not in',('in_progress', 'ongoing','rejected_by_committee')),('type','!=','operational')]}"
|
||||
class="btn-primary"/>
|
||||
<button type="object" groups="purchase.group_purchase_user" name="action_budget"
|
||||
string="Send To Budget" attrs="{'invisible':['|', ('state','!=', 'purchase_manager'),('is_purchase_budget','=',False)]}"
|
||||
class="btn-primary"/>
|
||||
class="btn-primary" icon="fa-send"/>
|
||||
|
||||
<button name="action_skip_purchase_budget" type="object" string="Skip Budget"
|
||||
attrs="{'invisible':['|', ('state','!=', 'purchase_manager'),('is_purchase_budget','=',False)]}"
|
||||
groups="purchase_requisition_custom.group_skip_purchase_budget"/>
|
||||
groups="purchase_requisition_custom.group_skip_purchase_budget"
|
||||
class="btn-warning" icon="fa-forward"/>
|
||||
|
||||
<button type="object" groups="purchase_requisition_custom.group_approve_purchase_requisition"
|
||||
name="action_approve" string="Approve" states="checked" class="btn-primary"/>
|
||||
|
|
@ -402,9 +406,9 @@
|
|||
<button type="object" groups="purchase_requisition_custom.purchase_requisition_third_approve"
|
||||
name="third_approve" string="Approve" states="third_approve" class="btn-primary"/>
|
||||
|
||||
<button name="to_committee" class="oe_highlight"
|
||||
<button name="to_committee" class="btn-info"
|
||||
attrs="{'invisible' : ['|','|',('order_count','=', 0),('purchase_commitee','=',False),'&',('purchase_commitee','=',True),('sent_to_commitee','=', True)]}"
|
||||
type="object" string="Send To Committee"
|
||||
type="object" string="Send To Committee" icon="fa-users"
|
||||
groups="purchase_requisition_custom.purchase_rfq_send_to_committee"/>
|
||||
|
||||
<field name="sent_to_commitee" invisible="1"/>
|
||||
|
|
@ -619,8 +623,8 @@
|
|||
<field name="origin" invisible="1"/>
|
||||
<field name="reject_reason" required="1"/>
|
||||
<footer>
|
||||
<button name="action_reject" string="Confirm" type="object" class="oe_highlight"/>
|
||||
<button string="Cancel" class="btn btn-default" special="cancel"/>
|
||||
<button name="action_reject" string="Confirm" type="object" class="btn-danger" icon="fa-times-circle"/>
|
||||
<button string="Cancel" class="btn-secondary" special="cancel" icon="fa-times"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
|
|
@ -634,8 +638,8 @@
|
|||
<field name="order_id" invisible="1"/>
|
||||
<field name="select_reason" required="1"/>
|
||||
<footer>
|
||||
<button name="action_select" string="Confirm" type="object" class="oe_highlight"/>
|
||||
<button string="Cancel" class="btn btn-default" special="cancel"/>
|
||||
<button name="action_select" string="Confirm" type="object" class="btn-primary" icon="fa-check-circle"/>
|
||||
<button string="Cancel" class="btn-secondary" special="cancel" icon="fa-times"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
|
|
@ -651,8 +655,8 @@
|
|||
<field name="order_id" invisible="1"/>
|
||||
<field name="refuse_reason" required="1"/>
|
||||
<footer>
|
||||
<button name="action_refuse" string="Confirm" type="object" class="oe_highlight"/>
|
||||
<button string="Cancel" class="btn btn-default" special="cancel"/>
|
||||
<button name="action_refuse" string="Confirm" type="object" class="btn-danger" icon="fa-times-circle"/>
|
||||
<button string="Cancel" class="btn-secondary" special="cancel" icon="fa-times"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
<field name="user_id" invisible="1"/>
|
||||
<field name="reason"/>
|
||||
<footer>
|
||||
<button string='Save' name="request_cancel_reason" type="object" class="oe_highlight"/>
|
||||
<button string='Save' name="request_cancel_reason" type="object" class="btn-primary" icon="fa-save"/>
|
||||
<button string="Cancel" class="oe_link" special="cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
</group>
|
||||
|
||||
<footer>
|
||||
<button string='Save' name="action_create_contract" type="object" class="oe_highlight"/>
|
||||
<button string='Save' name="action_create_contract" type="object" class="btn-primary" icon="fa-save"/>
|
||||
<button string="Cancel" class="oe_link" special="cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<field name="inherit_id" ref="account.view_move_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//button[last()]" position="before">
|
||||
<button name="action_vendor_eval" type="object" string="Evaluate"/>
|
||||
<button name="action_vendor_eval" type="object" string="Evaluate" class="btn-info" icon="fa-star"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<field name="inherit_id" ref="purchase.purchase_order_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//button[@name='button_confirm']" position="before">
|
||||
<button name="action_vendor_eval" type="object" string="Evaluate" attrs="{'invisible':[('requisition_id','=',False)]}" />
|
||||
<button name="action_vendor_eval" type="object" string="Evaluate" attrs="{'invisible':[('requisition_id','=',False)]}" class="btn-info" icon="fa-star" />
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
<field name="inherit_id" ref="stock.view_picking_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//button[@name='button_validate']" position="before">
|
||||
<button name="action_vendor_eval" type="object" string="Evaluate"/>
|
||||
<button name="action_vendor_eval" type="object" string="Evaluate" class="btn-info" icon="fa-star"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@
|
|||
</group>
|
||||
<footer>
|
||||
<div>
|
||||
<button name="action_print" string="Print" type="object" default_focus="1" class="oe_highlight"/>
|
||||
<button name="action_print" string="Print" type="object" default_focus="1" class="btn-primary" icon="fa-print"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue