implement transition recording

This commit is contained in:
ragilap
2026-03-10 17:04:44 +07:00
parent 44a5c51023
commit 1b499bc967
2 changed files with 47 additions and 7 deletions
@@ -107,6 +107,13 @@ const RowOptionsMenu = ({
};
const isRecordingEditable = (recording: Recording) => {
const isGrowingCategory =
recording.project_flock?.project_flock_category === 'GROWING';
const isGrowingLockedByLaying = isGrowingCategory && recording.is_laying;
if (isGrowingLockedByLaying) {
return false;
}
const currentIsLaying =
recording.project_flock?.project_flock_category === 'LAYING';
@@ -123,6 +130,20 @@ const RowOptionsMenu = ({
};
const getRecordingRestrictionInfo = (recording: Recording) => {
const isGrowingCategory =
recording.project_flock?.project_flock_category === 'GROWING';
const isGrowingLockedByLaying = isGrowingCategory && recording.is_laying;
if (isGrowingLockedByLaying) {
return {
canEditStock: false,
canEditDepletion: false,
canEditEgg: false,
isLocked: true,
lockReason:
'Recording Growing tidak dapat diubah karena sudah masuk fase laying dan dipakai pada recording laying',
};
}
const currentIsLaying =
recording.project_flock?.project_flock_category === 'LAYING';
@@ -800,10 +821,11 @@ const RecordingTable = () => {
{
header: 'Kategori',
cell: (props) => {
const isLaying = props.row.original.is_laying;
const isTransition = props.row.original.is_transition;
const category = isLaying ? 'LAYING' : 'GROWING';
const color = isLaying ? 'info' : 'warning';
const category =
props.row.original.project_flock?.project_flock_category ||
'GROWING';
const color = category === 'LAYING' ? 'info' : 'warning';
return (
<div className='flex flex-col gap-1'>
<StatusBadge color={color} text={formatTitleCase(category)} />
@@ -420,13 +420,15 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
});
const projectFlockKandangLookupUrl = useMemo(() => {
if (!selectedProjectFlock || !selectedKandang) return null;
if (!selectedProjectFlock || !selectedKandang || !selectedRecordDate)
return null;
const params = new URLSearchParams({
project_flock_id: selectedProjectFlock.value.toString(),
kandang_id: selectedKandang.value.toString(),
record_date: selectedRecordDate,
});
return `${ProjectFlockApi.basePath}/kandangs/lookup?${params.toString()}`;
}, [selectedProjectFlock, selectedKandang]);
}, [selectedProjectFlock, selectedKandang, selectedRecordDate]);
const { data: projectFlockKandangLookupData } = useSWR(
projectFlockKandangLookupUrl,
@@ -548,6 +550,13 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
const isRecordingEditable = useCallback((recording?: Recording) => {
if (!recording) return true;
const isGrowingCategory =
recording.project_flock?.project_flock_category === 'GROWING';
const isGrowingLockedByLaying = isGrowingCategory && recording.is_laying;
if (isGrowingLockedByLaying) {
return false;
}
const currentIsLaying =
recording.project_flock?.project_flock_category === 'LAYING';
@@ -2066,13 +2075,22 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
<div>
<span className='text-sm text-gray-600'>Kategori</span>
<p className='font-semibold'>
{(() => {
const category =
initialValues.project_flock?.project_flock_category ||
'GROWING';
const color =
category === 'LAYING' ? 'info' : 'warning';
return (
<Badge
variant='soft'
color={initialValues.is_laying ? 'info' : 'warning'}
color={color}
size='sm'
>
{initialValues.is_laying ? 'LAYING' : 'GROWING'}
{category}
</Badge>
);
})()}
</p>
</div>
<div>