import { Extension, ExtensionContext } from '@flow/sdk';
import { z } from 'zod';
const Input = z.object({
freight_id: z.string(),
amount: z.number().positive(),
});
export default class FrigopaivaErpBridge extends Extension {
onStageEntered = async (ctx: ExtensionContext) => {
if (ctx.stage.id !== 'agendada') return;
const input = Input.parse({
freight_id: ctx.entity.id,
amount: ctx.entity.data.price,
});
const result = await ctx.integrations.webhook_out.call({
action: 'create_invoice',
input,
retry: {
attempts: 3,
backoff: 'exponential',
},
});
await ctx.entity.setField('invoice_id', result.id);
ctx.events.emit('extension.invoice_created', {
freight_id: input.freight_id,
invoice_id: result.id,
});
};
}