feat: 實作應付帳款與銷售訂單權限管理與進貨單權限修正
All checks were successful
ERP-Deploy-Demo / deploy-demo (push) Successful in 1m17s

This commit is contained in:
2026-02-24 17:29:09 +08:00
parent 455f945296
commit e406ecd63d
8 changed files with 57 additions and 33 deletions

View File

@@ -10,6 +10,7 @@ import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, DialogD
import { Input } from '@/Components/ui/input';
import { Label } from '@/Components/ui/label';
import { toast } from 'sonner';
import { Can } from '@/Components/Permission/Can';
const getStatusBadgeVariant = (status: string) => {
switch (status) {
@@ -117,23 +118,27 @@ export default function AccountPayableShow({ payable }: any) {
</div>
<div className="flex items-center gap-2">
<Button
variant="outline"
className="gap-2 button-outlined-primary"
onClick={() => setInvoiceDialogOpen(true)}
>
<FileText className="h-4 w-4" />
</Button>
<Can permission="account_payables.edit">
<Button
variant="outline"
className="gap-2 button-outlined-primary"
onClick={() => setInvoiceDialogOpen(true)}
>
<FileText className="h-4 w-4" />
</Button>
</Can>
{payable.status !== 'paid' && (
<Button
className="gap-2 button-filled-primary"
onClick={() => setPaymentDialogOpen(true)}
>
<CheckCircle className="h-4 w-4" />
</Button>
<Can permission="account_payables.pay">
<Button
className="gap-2 button-filled-primary"
onClick={() => setPaymentDialogOpen(true)}
>
<CheckCircle className="h-4 w-4" />
</Button>
</Can>
)}
</div>
</div>
@@ -225,14 +230,16 @@ export default function AccountPayableShow({ payable }: any) {
<FileText className="h-5 w-5 text-primary-main" />
</h2>
<Button
variant="ghost"
size="sm"
className="text-primary-main hover:text-primary-dark hover:bg-primary-main/10"
onClick={() => setInvoiceDialogOpen(true)}
>
{payable.invoice_number ? '修改' : '填寫'}
</Button>
<Can permission="account_payables.edit">
<Button
variant="ghost"
size="sm"
className="text-primary-main hover:text-primary-dark hover:bg-primary-main/10"
onClick={() => setInvoiceDialogOpen(true)}
>
{payable.invoice_number ? '修改' : '填寫'}
</Button>
</Can>
</div>
<div className="space-y-4">
<div>

View File

@@ -250,7 +250,7 @@ function GoodsReceiptActions({ receipt }: { receipt: GoodsReceipt }) {
// 權限判斷
const canView = isSuperAdmin || permissions.includes('goods_receipts.view');
const canEdit = isSuperAdmin || permissions.includes('goods_receipts.update');
const canEdit = isSuperAdmin || permissions.includes('goods_receipts.edit');
const canDelete = isSuperAdmin || permissions.includes('goods_receipts.delete');
const canSubmit = canEdit || canView;