PageSourceSearch

https://nukt.com.br/assets/Contratos-XCgkQyu4.js

js nukt.com.br collected 2026-10-02 01:18:41 UTC 18,839 bytes, 13 lines download raw bytes

1import{r as p,j as e,u as ye,d as P,e as M}from"./vendor-query-CeYLmLzt.js";import{_ as w,al as se,a9 as be,a as d,ag as Se,au as De,ah as Ie,ai as Z,aj as Q,aN as $,$ as ee,D as Fe,q as Ee,t as qe,w as Te,N as Le,L as ke,a5 as Be,an as Pe,ao as Me,ap as ze,aq as Ae,ar as te,as as Ve,s as m}from"./index-C9GI-6TB.js";import{S as Ke}from"./SearchInput-CThd72gq.js";import{L as u}from"./label-CF4wLb5c.js";import{S as ne,a as ce,b as le,c as de,d as z}from"./select-CIRUJm7L.js";import{S as X}from"./searchable-select-qwxda2Fa.js";import{D as A}from"./date-picker-input-Cbp7v9ZI.js";import{S as Re}from"./scrollable-table-CnSgk_wl.js";import{B as ae}from"./badge-CDpuswoh.js";import{S as Oe}from"./switch-B3yy6rT0.js";import{u as He}from"./TablePagination-Dqymv64Q.js";import{u as Qe}from"./useSorting-DmGCKVFJ.js";import{C as $e}from"./currency-input-BggYfJZz.js";import{b as Xe,c as Ge,d as oe,e as N,T as Je,a as h}from"./table-CLkXubLJ.js";import{D as Ue}from"./DeleteConfirmDialog-GreNnLp-.js";import{c as T,d as re}from"./compact-table-NO3Dd7k9.js";import"./vendor-react-BPOX-wWs.js";import"./vendor-supabase-Cc8l7PMd.js";import"./vendor-motion-BtWo1fWB.js";import"./index-BdQq_4o_.js";import"./index-B1iJygXQ.js";import"./differenceInCalendarDays-Bu8By2ZG.js";import"./format-BwfTtEE5.js";import"./addDays-DSCzji-7.js";import"./pt-BR-Bksn6Y5X.js";import"./useScrollShadow-C0qIt916.js";import"./empty-state-DpNMpomS.js";import"./alert-dialog-BRbFycEL.js";const We=s=>{if(s==null||s==="")return"-";const o=typeof s=="string"?parseFloat(s):s;return isNaN(o)?"-":o.toLocaleString("pt-BR",{style:"currency",currency:"BRL"})},ie=s=>s?new Date(s+"T00:00:00").toLocaleDateString("pt-BR"):"-";function Ye({items:s,onItemsChange:o,availableItems:_,disabled:x=!1}){const[n,f]=p.useState({item_id:"",valor_item:"0",inicio_item:"",fim_item:"",tipo:"F"}),V=()=>{if(!n.item_id){d.error("Selecione um item");return}const r=_.find(c=>c.id===n.item_id);if(s.some(c=>c.item_id===n.item_id)){d.error("Este item já foi adicionado");return}const i={...n,item_nome:r?.nome};o([...s,i]),f({item_id:"",valor_item:"0",inicio_item:"",fim_item:"",tipo:"F"})},C=r=>{const i=[...s];i.splice(r,1),o(i)},y=r=>{const i=_.find(c=>c.id===r);f({...n,item_id:r,valor_item:i?.valor?.toFixed(2)||"0"})};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"border rounded-lg p-4 space-y-3 bg-muted/30",children:[e.jsx(u,{className:"text-sm font-medium",children:"Adicionar Item"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(u,{className:"text-xs text-muted-foreground",children:"Item *"}),e.jsx(X,{value:n.item_id,onValueChange:y,placeholder:"Selecione o item",searchPlaceholder:"Buscar item...",emptyMessage:"Nenhum item encontrado.",disabled:x,options:_.map(r=>({value:r.id,label:r.nome}))})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(u,{className:"text-xs text-muted-foreground",children:"Valor"}),e.jsx($e,{value:n.valor_item,onChange:r=>f({...n,valor_item:r}),placeholder:"0,00",disabled:x})]})]}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(u,{className:"text-xs text-muted-foreground",children:"Início"}),e.jsx(A,{value:n.inicio_item,onChange:r=>f({...n,inicio_item:r}),disabled:x})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(u,{className:"text-xs text-muted-foreground",children:"Fim"}),e.jsx(A,{value:n.fim_item,onChange:r=>f({...n,fim_item:r}),disabled:x})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(u,{className:"text-xs text-muted-foreground",children:"Tipo"}),e.jsxs(ne,{value:n.tipo,onValueChange:r=>f({...n,tipo:r}),disabled:x,children:[e.jsx(ce,{children:e.jsx(le,{})}),e.jsxs(de,{children:[e.jsx(z,{value:"F",children:"Fixo"}),e.jsx(z,{value:"E",children:"Eventual"})]})]})]})]}),e.jsxs(w,{type:"button",size:"sm",onClick:V,disabled:x||!n.item_id,className:"w-full md:w-auto",children:[e.jsx(se,{className:"h-4 w-4 mr-1"}),"Adicionar"]})]}),s.length>0&&e.jsx("div",{className:"border rounded-lg overflow-hidden",children:e.jsxs(Xe,{children:[e.jsx(Ge,{children:e.jsxs(oe,{className:"bg-muted/50",children:[e.jsx(N,{className:"text-xs",children:"Item"}),e.jsx(N,{className:"text-xs text-right w-[100px]",children:"Valor"}),e.jsx(N,{className:"text-xs text-center w-[90px]",children:"Início"}),e.jsx(N,{className:"text-xs text-center w-[90px]",children:"Fim"}),e.jsx(N,{className:"text-xs text-center w-[60px]",children:"Tipo"}),e.jsx(N,{className:"w-[50px]"})]})}),e.jsx(Je,{children:s.map((r,i)=>{const c=_.find(b=>b.id===r.item_id);return e.jsxs(oe,{children:[e.jsx(h,{className:"text-sm py-2",children:r.item_nome||c?.nome||"-"}),e.jsx(h,{className:"text-sm text-right py-2",children:We(r.valor_item)}),e.jsx(h,{className:"text-sm text-center py-2",children:ie(r.inicio_item)}),e.jsx(h,{className:"text-sm text-center py-2",children:ie(r.fim_item)}),e.jsx(h,{className:"text-sm text-center py-2",children:r.tipo==="F"?"Fixo":"Eventual"}),e.jsx(h,{className:"py-2",children:e.jsx(w,{type:"button",variant:"ghost",size:"sm",onClick:()=>C(i),disabled:x,className:"h-7 w-7 p-0 text-destructive hover:text-destructive",children:e.jsx(be,{className:"h-4 w-4"})})})]},i)})})]})}),s.length===0&&e.jsx("div",{className:"text-center py-4 text-muted-foreground text-sm border rounded-lg",children:"Nenhum item adicionado ao contrato"})]})}const Ze=s=>s?new Date(s+"T00:00:00").toLocaleDateString("pt-BR"):"-";function It(){Se();
1const s=ye(),o=De(),{isAdmin:_,canCreate:x,canEdit:n,canDelete:f}=Ie(),[V,C]=p.useState(!1),[y,r]=p.useState(null),[i,c]=p.useState({nome:"",cliente_id:"",inicio_contrato:"",fim_contrato:"",data_vencimento:"",atividade_id:""}),[b,S]=p.useState([]),[v,G]=p.useState(""),[K,R]=p.useState(null),{data:me}=P({queryKey:["empresas_clientes_fornecedores",o],queryFn:async()=>{if(!o)return[];const{data:t,error:a}=await m.from("empresas_clientes_fornecedores").select("id, razao_social, inscricao, ativo").eq("empresa_id",o).eq("ativo",!0).order("razao_social",{ascending:!0});if(a)throw a;return t},enabled:!!o}),{data:ue}=P({queryKey:["empresas_nfs_atividades",o],queryFn:async()=>{if(!o)return[];const{data:t,error:a}=await m.from("empresas_nfs_atividades").select("id, descricao, ativo").eq("empresa_id",o).eq("ativo",!0).order("descricao",{ascending:!0});if(a)throw a;return t},enabled:!!o}),{data:he}=P({queryKey:["honorarios_itens",o],queryFn:async()=>{if(!o)return[];const{data:t,error:a}=await m.from("honorarios_itens").select("id, nome, valor").eq("empresa_id",o).order("nome",{ascending:!0});if(a)throw a;return t},enabled:!!o}),{data:D,isLoading:xe}=P({queryKey:["honorarios_contratos",o],queryFn:async()=>{if(!o)return[];const{data:t,error:a}=await m.from("honorarios_contratos").select(`
2          *,
3          cliente:empresas_clientes_fornecedores(id, razao_social, inscricao),
4          atividade:empresas_nfs_atividades(id, descricao)
5        `).eq("empresa_id",o).order("contrato",{ascending:!1});if(a)throw a;return t},enabled:!!o}),L=M({mutationFn:async t=>{if(!o)throw new Error("Selecione uma empresa");const{data:a,error:l}=await m.rpc("generate_contrato_numero",{p_empresa_id:o});if(l)throw l;const{data:j,error:E}=await m.from("honorarios_contratos").insert({empresa_id:o,nome:t.formData.nome.trim(),contrato:a,cliente_id:t.formData.cliente_id||null,inicio_contrato:t.formData.inicio_contrato,fim_contrato:t.formData.fim_contrato||null,data_vencimento:t.formData.data_vencimento?parseInt(t.formData.data_vencimento):null,atividade_id:t.formData.atividade_id}).select().single();if(E)throw E;if(t.items.length>0){const g=t.items.map(q=>({contrato_id:j.id,item_id:q.item_id||null,valor_item:parseFloat(q.valor_item)||null,inicio_item:q.inicio_item||null,fim_item:q.fim_item||null,tipo:q.tipo||null})),{error:Y}=await m.from("honorarios_contratos_itens").insert(g);if(Y)throw Y}},onSuccess:()=>{s.invalidateQueries({queryKey:["honorarios_contratos"]}),d.success("Contrato criado com sucesso!"),O()},onError:t=>{d.error(t.message||"Erro ao criar contrato")}}),k=M({mutationFn:async t=>{const{error:a}=await m.from("honorarios_contratos").update({nome:t.formData.nome.trim(),cliente_id:t.formData.cliente_id||null,inicio_contrato:t.formData.inicio_contrato,fim_contrato:t.formData.fim_contrato||null,data_vencimento:t.formData.data_vencimento?parseInt(t.formData.data_vencimento):null,atividade_id:t.formData.atividade_id}).eq("id",t.formData.id);if(a)throw a;const{error:l}=await m.from("honorarios_contratos_itens").delete().eq("contrato_id",t.formData.id);if(l)throw l;if(t.items.length>0){const j=t.items.map(g=>({contrato_id:t.formData.id,item_id:g.item_id||null,valor_item:parseFloat(g.valor_item)||null,inicio_item:g.inicio_item||null,fim_item:g.fim_item||null,tipo:g.tipo||null})),{error:E}=await m.from("honorarios_contratos_itens").insert(j);if(E)throw E}},onSuccess:()=>{s.invalidateQueries({queryKey:["honorarios_contratos"]}),d.success("Contrato atualizado com sucesso!"),O()},onError:t=>{d.error(t.message||"Erro ao atualizar contrato")}}),pe=M({mutationFn:async t=>{const{error:a}=await m.from("honorarios_contratos").delete().eq("id",t);if(a)throw a},onSuccess:()=>{s.invalidateQueries({queryKey:["honorarios_contratos"]}),d.success("Contrato excluído com sucesso!")},onError:t=>{d.error(t.message||"Erro ao excluir contrato")}}),_e=M({mutationFn:async({id:t,isActive:a})=>{const l=a?null:new Date().toISOString().split("T")[0],{error:j}=await m.from("honorarios_contratos").update({fim_contrato:l}).eq("id",t);if(j)throw j},onSuccess:()=>{s.invalidateQueries({queryKey:["honorarios_contratos"]}),d.success("Status do contrato atualizado!")},onError:t=>{d.error(t.message||"Erro ao atualizar status")}}),J=async t=>{if(t){r(t),c({nome:t.nome,cliente_id:t.cliente_id||"",inicio_contrato:t.inicio_contrato,fim_contrato:t.fim_contrato||"",data_vencimento:t.data_vencimento?.toString()||"",atividade_id:t.atividade_id});const{data:a}=await m.from("honorarios_contratos_itens").select(`
6          id,
7          item_id,
8          valor_item,
9          inicio_item,
10          fim_item,
11          tipo,
12          item:honorarios_itens(id, nome)
13        `).eq("contrato_id",t.id);S(a?a.map(l=>({id:l.id,item_id:l.item_id||"",item_nome:l.item?.nome||"",valor_item:l.valor_item?.toString()||"0",inicio_item:l.inicio_item||"",fim_item:l.fim_item||"",tipo:l.tipo||"F"})):[])}else r(null),c({nome:"",cliente_id:"",inicio_contrato:"",fim_contrato:"",data_vencimento:"",atividade_id:""}),S([]);C(!0)},O=()=>{C(!1),r(null),c({nome:"",cliente_id:"",inicio_contrato:"",fim_contrato:"",data_vencimento:"",atividade_id:""}),S([])},fe=t=>{if(t.preventDefault(),!i.nome.trim()){d.error("Nome é obrigatório");return}if(!i.cliente_id){d.error("Cliente é obrigatório");return}if(!i.inicio_contrato){d.error("Data de início é obrigatória");return}if(!i.atividade_id){d.error("Atividade é obrigatória");return}y?k.mutate({formData:{id:y.id,...i},items:b}):L.mutate({formData:i,items:b})},ge=t=>{R(t)},ve=()=>{K&&(pe.mutate(K),R(null))},U=_||x("/contratos"),I=_||n("/contratos"),B=_||f("/contratos"),W=p.useMemo(()=>D?.filter(t=>{const a=v.toLowerCase();return t.nome.toLowerCase().includes(a)||t.contrato.toLowerCase().includes(a)||t.cliente?.razao_social?.toLowerCase().includes(a)})||[],[D,v]),F=Qe(W),H=He(F.sortedItems,{itemsPerPage:100});p.useEffect(()=>{H.resetPage()},[v]);const je=D?.length||0,Ne=D?.filter(t=>!t.fim_contrato)?.length||0,we=D?.filter(t=>t.fim_contrato)?.length||0,Ce=t=>t.fim_contrato?e.jsx(ae,{className:"bg-red-500/10 text-red-500 hover:bg-red-500/20",children:"Encerrado"}):e.jsx(ae,{className:"bg-green-500/10 text-green-500 hover:bg-green-500/20",children:"Ativo"});return o?e.jsxs(Z,{title:"Contratos",children:[e.jsxs("div",{className:"flex flex-col h-[calc(100vh-5rem)] md:h-[calc(100vh-4rem)] overflow-hidden pt-1",children:[e.jsxs("div",{className:"flex-shrink-0 space-y-4 pb-4 px-0.5",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-4 gap-4",children:[e.jsx(Q,{title:"Total",value:je,icon:$,iconColor:"text-blue-500",iconBgColor:"bg-blue-500/10",valueColor:"text-blue-600",borderColor:"border-blue-500",className:"hover:shadow-none border-4",variant:"compact"}),e.jsx(Q,{title:"Ativos",value:Ne,icon:$,iconColor:"text-green-500",iconBgColor:"bg-green-500/10",valueColor:"text-green-600",borderColor:"border-green-500",className:"hover:shadow-none border-4",variant:"compact"}),e.jsx(Q,{title:"Inativos",value:we,icon:$,iconColor:"text-red-500",iconBgColor:"bg-red-500/10",valueColor:"text-red-600",borderColor:"border-red-500",className:"hover:shadow-none border-4",variant:"compact"}),U&&e.jsxs("button",{type:"button",onClick:()=>J(),className:"rounded-lg border-4 border-black bg-card text-card-foreground shadow-sm p-3 hover:bg-accent/50 hover:shadow-none transition-colors cursor-pointer flex items-center gap-3",children:[e.jsx("div",{className:"rounded-lg bg-black/10 p-2",children:e.jsx(se,{className:"h-5 w-5 text-black"})}),e.jsx("span",{className:"text-sm font-medium",children:"Incluir"})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 justify-between",children:[e.jsxs("div",{className:"flex flex-1 gap-2 max-w-lg",children:[e.jsx(Ke,{value:v,onCh
13ange:G,placeholder:"Buscar por Nome, Contrato ou Cliente",className:"flex-1",hideClearButton:!0,hideSearchIcon:!0}),v&&e.jsx(w,{variant:"destructive",size:"icon",title:"Limpar filtros","aria-label":"Limpar filtros",onClick:()=>G(""),children:e.jsx(ee,{className:"h-4 w-4"})})]}),e.jsx("div",{className:"flex gap-2",children:U&&e.jsx(Fe,{open:V,onOpenChange:C,children:e.jsxs(Ee,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",hideCloseButton:!0,children:[e.jsx(qe,{children:e.jsx(Te,{children:y?"Editar Contrato":"Novo Contrato"})}),e.jsxs("form",{onSubmit:fe,noValidate:!0,className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(u,{htmlFor:"nome",children:"Nome *"}),e.jsx(Le,{id:"nome",value:i.nome,onChange:t=>c({...i,nome:t.target.value}),maxLength:255,placeholder:"Nome do contrato"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(u,{htmlFor:"cliente",children:"Cliente *"}),e.jsx(X,{value:i.cliente_id,onValueChange:t=>c({...i,cliente_id:t}),placeholder:"Selecione o cliente (opcional)",searchPlaceholder:"Buscar cliente...",emptyMessage:"Nenhum cliente encontrado.",options:me?.map(t=>({value:t.id,label:t.razao_social}))||[]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(u,{htmlFor:"atividade",children:"Atividade *"}),e.jsx(X,{value:i.atividade_id,onValueChange:t=>c({...i,atividade_id:t}),placeholder:"Selecione a atividade",searchPlaceholder:"Buscar atividade...",emptyMessage:"Nenhuma atividade encontrada.",options:ue?.map(t=>({value:t.id,label:t.descricao}))||[]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(u,{htmlFor:"inicio_contrato",children:"Início *"}),e.jsx(A,{value:i.inicio_contrato,onChange:t=>c({...i,inicio_contrato:t})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(u,{htmlFor:"fim_contrato",children:"Fim"}),e.jsx(A,{value:i.fim_contrato,onChange:t=>c({...i,fim_contrato:t})})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(u,{htmlFor:"data_vencimento",children:"Dia de Vencimento"}),e.jsxs(ne,{value:i.data_vencimento||"__none__",onValueChange:t=>c({...i,data_vencimento:t==="__none__"?"":t}),children:[e.jsx(ce,{children:e.jsx(le,{placeholder:"Selecione o dia"})}),e.jsxs(de,{children:[e.jsx(z,{value:"__none__",children:"Nenhum"}),Array.from({length:31},(t,a)=>a+1).map(t=>e.jsx(z,{value:t.toString(),children:t},t))]})]})]}),e.jsxs("div",{className:"space-y-2 border-t pt-4",children:[e.jsx(u,{className:"text-sm font-semibold",children:"Itens do Contrato"}),e.jsx(Ye,{items:b,onItemsChange:S,availableItems:he||[],disabled:L.isPending||k.isPending})]}),e.jsxs("div",{className:"flex justify-end gap-2 pt-4",children:[e.jsxs(w,{type:"button",variant:"destructive",onClick:O,children:[e.jsx(ee,{className:"h-4 w-4 mr-2"}),"Fechar"]}),e.jsx(w,{type:"submit",disabled:L.isPending||k.isPending,children:L.isPending||k.isPending?e.jsxs(e.Fragment,{children:[e.jsx(ke,{className:"h-4 w-4 mr-2 animate-spin"}),"Salvando..."]}):e.jsxs(e.Fragment,{children:[e.jsx(Be,{className:"h-4 w-4 mr-2"}),"Salvar"]})})]})]})]})})})]})]}),e.jsx("div",{className:"flex-1 min-h-0 overflow-hidden",children:e.jsx(Re,{data:W,paginatedItems:H.paginatedItems,isLoading:xe,emptyMessage:"Nenhum contrato cadastrado",emptySearchMessage:"Nenhum contrato encontrado",hasSearch:!!v,getRowKey:t=>t.id,renderHeader:()=>e.jsxs(e.Fragment,{children:[e.jsx(T,{className:"text-center w-[100px] normal-case",children:"Status"}),e.jsx(re,{sortDirection:F.getSortDirection("contrato"),onSort:()=>F.requestSort("contrato"),className:"w-[150px] normal-case",children:"Contrato"}),e.jsx(re,{sortDirection:F.getSortDirection("nome"),onSort:()=>F.requestSort("nome"),className:"min-w-[300px] normal-case",children:"Identificação"}),e.jsx(T,{className:"w-[200px] normal-case",children:"Cliente"}),e.jsx(T,{className:"w-[100px] normal-case",children:"Início"}),e.jsx(T,{className:"text-center w-[80px] normal-case",children:"Vencimento"}),(I||B)&&e.jsx(T,{className:"text-right w-[150px] normal-case"})]}),renderRow:t=>e.jsxs(e.Fragment,{children:[e.jsx(h,{className:"text-center py-1.5",children:I?e.jsx(Oe,{checked:!t.fim_contrato,onCheckedChange:a=>_e.mutate({id:t.id,isActive:a}),className:"h-5 w-9 [&>span]:h-4 [&>span]:w-4 [&>span[data-state=checked]]:translate-x-4"}):Ce(t)}),e.jsx(h,{className:"text-sm py-1.5",children:t.contrato}),e.jsx(h,{className:"font-medium text-sm py-1.5",children:t.nome}),e.jsx(h,{className:"text-sm py-1.5",children:t.cliente?.razao_social||"-"}),e.jsx(h,{className:"text-sm py-1.5",children:Ze(t.inicio_contrato)}),e.jsx(h,{className:"text-center text-sm py-1.5",children:t.data_vencimento||"-"}),(I||B)&&e.jsx(h,{className:"text-right py-1.5 w-[150px]",children:e.jsx("div",{className:"flex justify-end gap-1",children:e.jsxs(Pe,{children:[e.jsx(Me,{asChild:!0,children:e.jsxs(w,{size:"sm",className:"h-6 text-xs px-2 bg-black hover:bg-black/90 text-white hover:text-white border-black",children:[e.jsx(ze,{className:"h-3 w-3 mr-1"}),"Opções"]})}),e.jsxs(Ae,{align:"end",className:"bg-popover",children:[I&&e.jsx(te,{onClick:()=>J(t),children:"Editar"}),I&&B&&e.jsx(Ve,{}),B&&e.jsx(te,{className:"text-red-600 focus:text-red-600 focus:bg-red-50",onClick:()=>ge(t.id),children:"Excluir"})]})]})})})]}),pagination:H})})]}),e.jsx(Ue,{open:!!K,onOpenChange:()=>R(null),onConfirm:ve})]}):e.jsx(Z,{title:"Contratos",children:e.jsx("div",{className:"flex items-center justify-center h-64 text-muted-foreground",children:"Selecione uma empresa para visualizar os contratos."})})}export{It as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.