@hed-hog/contact 0.0.300 → 0.0.302
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/contact.module.d.ts.map +1 -1
- package/dist/contact.module.js +2 -0
- package/dist/contact.module.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/person/person.service.d.ts +2 -0
- package/dist/person/person.service.d.ts.map +1 -1
- package/dist/person/person.service.js +111 -127
- package/dist/person/person.service.js.map +1 -1
- package/dist/person/person.service.spec.d.ts +2 -0
- package/dist/person/person.service.spec.d.ts.map +1 -0
- package/dist/person/person.service.spec.js +106 -0
- package/dist/person/person.service.spec.js.map +1 -0
- package/dist/proposal/dto/proposal.dto.d.ts +152 -0
- package/dist/proposal/dto/proposal.dto.d.ts.map +1 -0
- package/dist/proposal/dto/proposal.dto.js +396 -0
- package/dist/proposal/dto/proposal.dto.js.map +1 -0
- package/dist/proposal/proposal-contract.subscriber.d.ts +11 -0
- package/dist/proposal/proposal-contract.subscriber.d.ts.map +1 -0
- package/dist/proposal/proposal-contract.subscriber.js +51 -0
- package/dist/proposal/proposal-contract.subscriber.js.map +1 -0
- package/dist/proposal/proposal-event.types.d.ts +122 -0
- package/dist/proposal/proposal-event.types.d.ts.map +1 -0
- package/dist/proposal/proposal-event.types.js +13 -0
- package/dist/proposal/proposal-event.types.js.map +1 -0
- package/dist/proposal/proposal.controller.d.ts +56 -0
- package/dist/proposal/proposal.controller.d.ts.map +1 -0
- package/dist/proposal/proposal.controller.js +191 -0
- package/dist/proposal/proposal.controller.js.map +1 -0
- package/dist/proposal/proposal.module.d.ts +3 -0
- package/dist/proposal/proposal.module.d.ts.map +1 -0
- package/dist/proposal/proposal.module.js +32 -0
- package/dist/proposal/proposal.module.js.map +1 -0
- package/dist/proposal/proposal.service.d.ts +100 -0
- package/dist/proposal/proposal.service.d.ts.map +1 -0
- package/dist/proposal/proposal.service.js +2137 -0
- package/dist/proposal/proposal.service.js.map +1 -0
- package/dist/proposal/proposal.service.spec.d.ts +2 -0
- package/dist/proposal/proposal.service.spec.d.ts.map +1 -0
- package/dist/proposal/proposal.service.spec.js +175 -0
- package/dist/proposal/proposal.service.spec.js.map +1 -0
- package/hedhog/data/menu.yaml +35 -18
- package/hedhog/data/route.yaml +44 -0
- package/hedhog/frontend/app/accounts/_components/account-form-sheet.tsx.ejs +517 -346
- package/hedhog/frontend/app/activities/_components/activity-detail-sheet.tsx.ejs +42 -17
- package/hedhog/frontend/app/activities/_components/activity-types.ts.ejs +1 -1
- package/hedhog/frontend/app/activities/page.tsx.ejs +315 -101
- package/hedhog/frontend/app/follow-ups/page.tsx.ejs +172 -22
- package/hedhog/frontend/app/page.tsx.ejs +1 -1
- package/hedhog/frontend/app/person/_components/person-form-sheet.tsx.ejs +1 -1
- package/hedhog/frontend/app/pipeline/_components/lead-detail-sheet.tsx.ejs +253 -210
- package/hedhog/frontend/app/pipeline/_components/lead-proposals-tab.tsx.ejs +1661 -0
- package/hedhog/frontend/app/pipeline/page.tsx.ejs +30 -4
- package/hedhog/frontend/app/proposals/_components/proposals-management-page.tsx.ejs +773 -0
- package/hedhog/frontend/app/proposals/approvals/page.tsx.ejs +5 -0
- package/hedhog/frontend/app/proposals/page.tsx.ejs +5 -0
- package/hedhog/frontend/app/reports/page.tsx.ejs +431 -375
- package/hedhog/frontend/messages/en.json +236 -43
- package/hedhog/frontend/messages/pt.json +235 -42
- package/hedhog/table/proposal.yaml +112 -0
- package/hedhog/table/proposal_approval.yaml +63 -0
- package/hedhog/table/proposal_document.yaml +77 -0
- package/hedhog/table/proposal_item.yaml +64 -0
- package/hedhog/table/proposal_revision.yaml +78 -0
- package/package.json +5 -4
- package/src/contact.module.ts +2 -0
- package/src/index.ts +3 -0
- package/src/person/person.service.spec.ts +143 -0
- package/src/person/person.service.ts +147 -158
- package/src/proposal/dto/proposal.dto.ts +341 -0
- package/src/proposal/proposal-contract.subscriber.ts +43 -0
- package/src/proposal/proposal-event.types.ts +130 -0
- package/src/proposal/proposal.controller.ts +168 -0
- package/src/proposal/proposal.module.ts +19 -0
- package/src/proposal/proposal.service.spec.ts +196 -0
- package/src/proposal/proposal.service.ts +2855 -0
|
@@ -688,6 +688,52 @@
|
|
|
688
688
|
"invalidRange": "The start date must be less than or equal to the end date."
|
|
689
689
|
}
|
|
690
690
|
},
|
|
691
|
+
"ProposalsPage": {
|
|
692
|
+
"title": "Proposal center",
|
|
693
|
+
"description": "View, approve and track all commercial proposals outside the pipeline.",
|
|
694
|
+
"pendingTitle": "Pending approvals",
|
|
695
|
+
"pendingDescription": "Quickly review the proposals waiting for a decision.",
|
|
696
|
+
"listTitle": "Proposal list",
|
|
697
|
+
"listDescription": "Use the filters to focus on drafts, pending approvals and approved proposals.",
|
|
698
|
+
"searchPlaceholder": "Search by code, title or customer...",
|
|
699
|
+
"viewMode": "View",
|
|
700
|
+
"viewModeTable": "Table",
|
|
701
|
+
"viewModeCards": "Cards",
|
|
702
|
+
"resultsCount": "{count} proposal(s)",
|
|
703
|
+
"visibleTotal": "Visible value in this list: {value}",
|
|
704
|
+
"emptyTitle": "No proposals found",
|
|
705
|
+
"emptyDescription": "Adjust the filters or create a new proposal from the pipeline.",
|
|
706
|
+
"inboxTitle": "Approval inbox",
|
|
707
|
+
"inboxDescription": "{count} proposal(s) are waiting for a decision.",
|
|
708
|
+
"cards": {
|
|
709
|
+
"total": "Total proposals",
|
|
710
|
+
"pending": "Pending approval",
|
|
711
|
+
"approved": "Approved",
|
|
712
|
+
"converted": "Converted"
|
|
713
|
+
},
|
|
714
|
+
"filters": {
|
|
715
|
+
"statusPlaceholder": "Status",
|
|
716
|
+
"all": "All",
|
|
717
|
+
"pending_approval": "Pending",
|
|
718
|
+
"approved": "Approved",
|
|
719
|
+
"draft": "Drafts",
|
|
720
|
+
"rejected": "Rejected"
|
|
721
|
+
},
|
|
722
|
+
"columns": {
|
|
723
|
+
"proposal": "Proposal",
|
|
724
|
+
"customer": "Customer",
|
|
725
|
+
"status": "Status",
|
|
726
|
+
"total": "Amount",
|
|
727
|
+
"validUntil": "Valid until",
|
|
728
|
+
"updatedAt": "Updated at",
|
|
729
|
+
"actions": "Actions"
|
|
730
|
+
},
|
|
731
|
+
"actions": {
|
|
732
|
+
"refresh": "Refresh",
|
|
733
|
+
"viewPending": "View pending",
|
|
734
|
+
"showAll": "Show all"
|
|
735
|
+
}
|
|
736
|
+
},
|
|
691
737
|
"CrmPipeline": {
|
|
692
738
|
"title": "Conversion pipeline",
|
|
693
739
|
"subtitle": "Commercial Kanban with owner filtering to follow registration progress inside the CRM.",
|
|
@@ -744,6 +790,10 @@
|
|
|
744
790
|
"lost": "Lost opportunity",
|
|
745
791
|
"owner": "Owner",
|
|
746
792
|
"source": "Source",
|
|
793
|
+
"tabs": {
|
|
794
|
+
"overview": "Overview",
|
|
795
|
+
"proposals": "Proposals"
|
|
796
|
+
},
|
|
747
797
|
"advanceStage": "Advance stage",
|
|
748
798
|
"moveTo": "Move to {stage}",
|
|
749
799
|
"timeline": "Timeline",
|
|
@@ -762,6 +812,125 @@
|
|
|
762
812
|
"note": "Note"
|
|
763
813
|
}
|
|
764
814
|
},
|
|
815
|
+
"proposals": {
|
|
816
|
+
"new": "New proposal",
|
|
817
|
+
"count": "{count} proposal(s)",
|
|
818
|
+
"selectHint": "Review proposals linked to this opportunity and follow the approval flow with live backend data.",
|
|
819
|
+
"loading": "Loading proposals...",
|
|
820
|
+
"emptyTitle": "No linked proposals yet",
|
|
821
|
+
"emptyDescription": "Create the first commercial proposal for this opportunity using the real backend endpoints already available.",
|
|
822
|
+
"emptyAction": "Create proposal",
|
|
823
|
+
"detailTitle": "Proposal details",
|
|
824
|
+
"notSelected": "Select a proposal to view its details.",
|
|
825
|
+
"fields": {
|
|
826
|
+
"status": "Status",
|
|
827
|
+
"validUntil": "Valid until",
|
|
828
|
+
"revision": "Revision",
|
|
829
|
+
"contractCategory": "Contract category",
|
|
830
|
+
"contractType": "Contract type",
|
|
831
|
+
"billingModel": "Billing model"
|
|
832
|
+
},
|
|
833
|
+
"status": {
|
|
834
|
+
"draft": "Draft",
|
|
835
|
+
"pending_approval": "Pending approval",
|
|
836
|
+
"approved": "Approved",
|
|
837
|
+
"rejected": "Rejected",
|
|
838
|
+
"cancelled": "Cancelled",
|
|
839
|
+
"expired": "Expired",
|
|
840
|
+
"contract_generated": "Contract generated"
|
|
841
|
+
},
|
|
842
|
+
"enum": {
|
|
843
|
+
"contractCategory": {
|
|
844
|
+
"employee": "Employee",
|
|
845
|
+
"contractor": "Contractor",
|
|
846
|
+
"client": "Client",
|
|
847
|
+
"supplier": "Supplier",
|
|
848
|
+
"vendor": "Vendor",
|
|
849
|
+
"partner": "Partner",
|
|
850
|
+
"internal": "Internal",
|
|
851
|
+
"other": "Other"
|
|
852
|
+
},
|
|
853
|
+
"contractType": {
|
|
854
|
+
"clt": "CLT",
|
|
855
|
+
"pj": "PJ",
|
|
856
|
+
"freelancer_agreement": "Freelancer agreement",
|
|
857
|
+
"service_agreement": "Service agreement",
|
|
858
|
+
"fixed_term": "Fixed-term contract",
|
|
859
|
+
"recurring_service": "Recurring service",
|
|
860
|
+
"nda": "Non-disclosure agreement",
|
|
861
|
+
"amendment": "Amendment",
|
|
862
|
+
"addendum": "Addendum",
|
|
863
|
+
"other": "Other"
|
|
864
|
+
},
|
|
865
|
+
"billingModel": {
|
|
866
|
+
"time_and_material": "Time and material",
|
|
867
|
+
"monthly_retainer": "Monthly retainer",
|
|
868
|
+
"fixed_price": "Fixed price"
|
|
869
|
+
}
|
|
870
|
+
},
|
|
871
|
+
"actions": {
|
|
872
|
+
"save": "Save proposal",
|
|
873
|
+
"cancel": "Cancel",
|
|
874
|
+
"edit": "Edit",
|
|
875
|
+
"submit": "Submit for approval",
|
|
876
|
+
"approve": "Approve",
|
|
877
|
+
"reject": "Reject",
|
|
878
|
+
"generatePdf": "Generate PDF",
|
|
879
|
+
"openPdf": "Open PDF",
|
|
880
|
+
"delete": "Delete"
|
|
881
|
+
},
|
|
882
|
+
"info": {
|
|
883
|
+
"revision": "Revision {number}",
|
|
884
|
+
"noValidity": "No validity date set",
|
|
885
|
+
"summary": "Commercial summary",
|
|
886
|
+
"notes": "Internal notes",
|
|
887
|
+
"lineItems": "Proposal items",
|
|
888
|
+
"noItems": "No line items were detailed for this revision.",
|
|
889
|
+
"linkedRecords": "Linked records",
|
|
890
|
+
"noLinkedRecords": "No contract or downstream link has been generated yet.",
|
|
891
|
+
"approvalNote": "Approval note",
|
|
892
|
+
"generatedDocument": "Current commercial PDF",
|
|
893
|
+
"noGeneratedDocument": "No commercial PDF has been generated for this proposal yet.",
|
|
894
|
+
"documents": "{count} document(s)"
|
|
895
|
+
},
|
|
896
|
+
"dialogDeleteTitle": "Delete proposal",
|
|
897
|
+
"dialogDeleteDescription": "Are you sure you want to delete proposal {title}? This action cannot be undone.",
|
|
898
|
+
"form": {
|
|
899
|
+
"createTitle": "New proposal",
|
|
900
|
+
"editTitle": "Edit proposal",
|
|
901
|
+
"createDescription": "Fill in the main fields to register this commercial proposal.",
|
|
902
|
+
"editDescription": "Update the commercial data and create a new revision when saving.",
|
|
903
|
+
"title": "Title",
|
|
904
|
+
"titlePlaceholder": "E.g. Annual implementation proposal",
|
|
905
|
+
"code": "Code",
|
|
906
|
+
"codePlaceholder": "Generated automatically when left blank",
|
|
907
|
+
"amount": "Total amount",
|
|
908
|
+
"validUntil": "Valid until",
|
|
909
|
+
"contractCategory": "Contract category",
|
|
910
|
+
"contractType": "Contract type",
|
|
911
|
+
"billingModel": "Billing model",
|
|
912
|
+
"summary": "Summary",
|
|
913
|
+
"summaryPlaceholder": "Write a short commercial summary for this proposal...",
|
|
914
|
+
"notes": "Internal notes",
|
|
915
|
+
"notesPlaceholder": "Notes for the team..."
|
|
916
|
+
},
|
|
917
|
+
"toasts": {
|
|
918
|
+
"createSuccess": "Proposal created successfully",
|
|
919
|
+
"createError": "Failed to create proposal",
|
|
920
|
+
"updateSuccess": "Proposal updated successfully",
|
|
921
|
+
"updateError": "Failed to update proposal",
|
|
922
|
+
"submitSuccess": "Proposal submitted for approval",
|
|
923
|
+
"submitError": "Failed to submit proposal for approval",
|
|
924
|
+
"approveSuccess": "Proposal approved successfully",
|
|
925
|
+
"approveError": "Failed to approve proposal",
|
|
926
|
+
"rejectSuccess": "Proposal rejected",
|
|
927
|
+
"rejectError": "Failed to reject proposal",
|
|
928
|
+
"generatePdfSuccess": "Proposal PDF generated successfully",
|
|
929
|
+
"generatePdfError": "Failed to generate proposal PDF",
|
|
930
|
+
"deleteSuccess": "Proposal deleted successfully",
|
|
931
|
+
"deleteError": "Failed to delete proposal"
|
|
932
|
+
}
|
|
933
|
+
},
|
|
765
934
|
"tooltips": {
|
|
766
935
|
"statusActive": "Active lead — being followed up by the owner.",
|
|
767
936
|
"statusInactive": "Inactive lead — not currently in the operational flow.",
|
|
@@ -778,6 +947,9 @@
|
|
|
778
947
|
"CrmFollowups": {
|
|
779
948
|
"title": "Follow-ups",
|
|
780
949
|
"description": "Track upcoming actions, overdue items, and owner commitments in one operational list.",
|
|
950
|
+
"viewMode": "View",
|
|
951
|
+
"viewModeTable": "Table",
|
|
952
|
+
"viewModeCards": "Cards",
|
|
781
953
|
"newFollowup": "New Follow-up",
|
|
782
954
|
"reschedule": "Reschedule",
|
|
783
955
|
"unassigned": "Unassigned",
|
|
@@ -840,7 +1012,7 @@
|
|
|
840
1012
|
"description": "Operational activity queue with calls, meetings, messages, and tasks tracked by owner and due date.",
|
|
841
1013
|
"viewMode": "View",
|
|
842
1014
|
"viewModeTable": "Table",
|
|
843
|
-
"
|
|
1015
|
+
"viewModeCards": "Cards",
|
|
844
1016
|
"unassignedPerson": "Unassigned lead",
|
|
845
1017
|
"unassignedOwner": "Unassigned",
|
|
846
1018
|
"stats": {
|
|
@@ -996,49 +1168,70 @@
|
|
|
996
1168
|
"email": "Email",
|
|
997
1169
|
"phone": "Phone",
|
|
998
1170
|
"website": "Website",
|
|
1171
|
+
"industry": "Industry",
|
|
1172
|
+
"saveError": "Failed to save account",
|
|
1173
|
+
"deleteError": "Failed to delete account",
|
|
1174
|
+
"form": {
|
|
1175
|
+
"createTitle": "New Account",
|
|
1176
|
+
"editTitle": "Edit Account",
|
|
1177
|
+
"createDescription": "Create a new account record in the CRM.",
|
|
1178
|
+
"editDescription": "Update the account information and relationship details.",
|
|
1179
|
+
"companyName": "Company Name",
|
|
1180
|
+
"tradeName": "Trade Name",
|
|
1181
|
+
"status": "Status",
|
|
1182
|
+
"lifecycleStage": "Stage",
|
|
1183
|
+
"email": "Email",
|
|
1184
|
+
"phone": "Phone",
|
|
1185
|
+
"website": "Website",
|
|
999
1186
|
"industry": "Industry",
|
|
1000
|
-
"
|
|
1001
|
-
"
|
|
1002
|
-
"
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
"
|
|
1007
|
-
"
|
|
1008
|
-
"
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
"
|
|
1012
|
-
"
|
|
1013
|
-
"
|
|
1014
|
-
"
|
|
1015
|
-
"
|
|
1016
|
-
"
|
|
1017
|
-
"
|
|
1018
|
-
"
|
|
1019
|
-
"
|
|
1020
|
-
"
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
"
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
"
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1187
|
+
"annualRevenue": "Annual Revenue",
|
|
1188
|
+
"employeeCount": "Employees",
|
|
1189
|
+
"city": "City",
|
|
1190
|
+
"state": "State",
|
|
1191
|
+
"owner": "Owner",
|
|
1192
|
+
"summary": {
|
|
1193
|
+
"newCompany": "New account in progress",
|
|
1194
|
+
"createHint": "Fill in the essential details for a fast account setup.",
|
|
1195
|
+
"editHint": "Review the core data and update the commercial relationship."
|
|
1196
|
+
},
|
|
1197
|
+
"sections": {
|
|
1198
|
+
"identityTitle": "Identity",
|
|
1199
|
+
"identityDescription": "How this account will appear in the CRM.",
|
|
1200
|
+
"relationshipTitle": "Relationship",
|
|
1201
|
+
"relationshipDescription": "Status, stage, and ownership for the account.",
|
|
1202
|
+
"contactTitle": "Contact",
|
|
1203
|
+
"contactDescription": "Primary channels for outreach and follow-up.",
|
|
1204
|
+
"locationTitle": "Location",
|
|
1205
|
+
"locationDescription": "City and state for quick context.",
|
|
1206
|
+
"additionalTitle": "Additional details",
|
|
1207
|
+
"additionalDescription": "Complementary information and account metrics."
|
|
1208
|
+
},
|
|
1209
|
+
"additional": {
|
|
1210
|
+
"show": "Expand",
|
|
1211
|
+
"hide": "Hide"
|
|
1212
|
+
},
|
|
1213
|
+
"createSubmit": "Create Account",
|
|
1214
|
+
"updateSubmit": "Save Changes",
|
|
1215
|
+
"saving": "Saving...",
|
|
1216
|
+
"placeholders": {
|
|
1217
|
+
"companyName": "Company name",
|
|
1218
|
+
"tradeName": "Trade name or brand",
|
|
1219
|
+
"email": "contact@company.com",
|
|
1220
|
+
"phone": "(11) 99999-9999",
|
|
1221
|
+
"website": "www.company.com",
|
|
1222
|
+
"industry": "Technology, Healthcare...",
|
|
1223
|
+
"annualRevenue": "0.00",
|
|
1224
|
+
"employeeCount": "0",
|
|
1225
|
+
"city": "Sao Paulo",
|
|
1226
|
+
"state": "SP"
|
|
1227
|
+
},
|
|
1228
|
+
"validation": {
|
|
1229
|
+
"nameMinLength": "Name must be at least 2 characters",
|
|
1230
|
+
"invalidEmail": "Enter a valid email address",
|
|
1231
|
+
"nonNegativeNumber": "Enter zero or a positive number",
|
|
1232
|
+
"integerRequired": "Enter a whole number",
|
|
1233
|
+
"stateMaxLength": "State must be at most 2 characters"
|
|
1042
1234
|
}
|
|
1043
1235
|
}
|
|
1044
1236
|
}
|
|
1237
|
+
}
|
|
@@ -687,6 +687,52 @@
|
|
|
687
687
|
"invalidRange": "A data inicial deve ser menor ou igual à data final."
|
|
688
688
|
}
|
|
689
689
|
},
|
|
690
|
+
"ProposalsPage": {
|
|
691
|
+
"title": "Central de propostas",
|
|
692
|
+
"description": "Visualize, aprove e acompanhe todas as propostas comerciais fora do pipeline.",
|
|
693
|
+
"pendingTitle": "Aprovações pendentes",
|
|
694
|
+
"pendingDescription": "Revise rapidamente as propostas aguardando decisão.",
|
|
695
|
+
"listTitle": "Lista de propostas",
|
|
696
|
+
"listDescription": "Use os filtros para focar em rascunhos, aprovações pendentes e propostas aprovadas.",
|
|
697
|
+
"searchPlaceholder": "Buscar por código, título ou cliente...",
|
|
698
|
+
"viewMode": "Visualização",
|
|
699
|
+
"viewModeTable": "Tabela",
|
|
700
|
+
"viewModeCards": "Cards",
|
|
701
|
+
"resultsCount": "{count} proposta(s)",
|
|
702
|
+
"visibleTotal": "Valor visível nesta lista: {value}",
|
|
703
|
+
"emptyTitle": "Nenhuma proposta encontrada",
|
|
704
|
+
"emptyDescription": "Ajuste os filtros ou crie uma nova proposta a partir do pipeline.",
|
|
705
|
+
"inboxTitle": "Caixa de aprovação",
|
|
706
|
+
"inboxDescription": "{count} proposta(s) aguardando decisão.",
|
|
707
|
+
"cards": {
|
|
708
|
+
"total": "Total de propostas",
|
|
709
|
+
"pending": "Pendentes de aprovação",
|
|
710
|
+
"approved": "Aprovadas",
|
|
711
|
+
"converted": "Convertidas"
|
|
712
|
+
},
|
|
713
|
+
"filters": {
|
|
714
|
+
"statusPlaceholder": "Status",
|
|
715
|
+
"all": "Todas",
|
|
716
|
+
"pending_approval": "Pendentes",
|
|
717
|
+
"approved": "Aprovadas",
|
|
718
|
+
"draft": "Rascunhos",
|
|
719
|
+
"rejected": "Rejeitadas"
|
|
720
|
+
},
|
|
721
|
+
"columns": {
|
|
722
|
+
"proposal": "Proposta",
|
|
723
|
+
"customer": "Cliente",
|
|
724
|
+
"status": "Status",
|
|
725
|
+
"total": "Valor",
|
|
726
|
+
"validUntil": "Validade",
|
|
727
|
+
"updatedAt": "Atualizada em",
|
|
728
|
+
"actions": "Ações"
|
|
729
|
+
},
|
|
730
|
+
"actions": {
|
|
731
|
+
"refresh": "Atualizar",
|
|
732
|
+
"viewPending": "Ver pendentes",
|
|
733
|
+
"showAll": "Mostrar todas"
|
|
734
|
+
}
|
|
735
|
+
},
|
|
690
736
|
"CrmPipeline": {
|
|
691
737
|
"title": "Pipeline de conversão",
|
|
692
738
|
"subtitle": "Kanban comercial com filtro por owner para acompanhar a evolução dos cadastros no CRM.",
|
|
@@ -743,6 +789,10 @@
|
|
|
743
789
|
"lost": "Oportunidade perdida",
|
|
744
790
|
"owner": "Owner",
|
|
745
791
|
"source": "Origem",
|
|
792
|
+
"tabs": {
|
|
793
|
+
"overview": "Visão geral",
|
|
794
|
+
"proposals": "Propostas"
|
|
795
|
+
},
|
|
746
796
|
"advanceStage": "Avançar etapa",
|
|
747
797
|
"moveTo": "Mover para {stage}",
|
|
748
798
|
"timeline": "Linha do tempo",
|
|
@@ -761,6 +811,125 @@
|
|
|
761
811
|
"note": "Anotação"
|
|
762
812
|
}
|
|
763
813
|
},
|
|
814
|
+
"proposals": {
|
|
815
|
+
"new": "Nova proposta",
|
|
816
|
+
"count": "{count} proposta(s)",
|
|
817
|
+
"selectHint": "Consulte as propostas vinculadas à oportunidade e acompanhe o fluxo de aprovação com dados reais.",
|
|
818
|
+
"loading": "Carregando propostas...",
|
|
819
|
+
"emptyTitle": "Nenhuma proposta vinculada",
|
|
820
|
+
"emptyDescription": "Crie a primeira proposta comercial desta oportunidade usando os dados reais já disponíveis no backend.",
|
|
821
|
+
"emptyAction": "Criar proposta",
|
|
822
|
+
"detailTitle": "Detalhes da proposta",
|
|
823
|
+
"notSelected": "Selecione uma proposta para ver os detalhes.",
|
|
824
|
+
"fields": {
|
|
825
|
+
"status": "Status",
|
|
826
|
+
"validUntil": "Validade",
|
|
827
|
+
"revision": "Revisão",
|
|
828
|
+
"contractCategory": "Categoria do contrato",
|
|
829
|
+
"contractType": "Tipo do contrato",
|
|
830
|
+
"billingModel": "Modelo de cobrança"
|
|
831
|
+
},
|
|
832
|
+
"status": {
|
|
833
|
+
"draft": "Rascunho",
|
|
834
|
+
"pending_approval": "Pendente de aprovação",
|
|
835
|
+
"approved": "Aprovada",
|
|
836
|
+
"rejected": "Rejeitada",
|
|
837
|
+
"cancelled": "Cancelada",
|
|
838
|
+
"expired": "Expirada",
|
|
839
|
+
"contract_generated": "Contrato gerado"
|
|
840
|
+
},
|
|
841
|
+
"enum": {
|
|
842
|
+
"contractCategory": {
|
|
843
|
+
"employee": "Funcionário",
|
|
844
|
+
"contractor": "Contratado",
|
|
845
|
+
"client": "Cliente",
|
|
846
|
+
"supplier": "Fornecedor",
|
|
847
|
+
"vendor": "Vendedor",
|
|
848
|
+
"partner": "Parceiro",
|
|
849
|
+
"internal": "Interno",
|
|
850
|
+
"other": "Outro"
|
|
851
|
+
},
|
|
852
|
+
"contractType": {
|
|
853
|
+
"clt": "CLT",
|
|
854
|
+
"pj": "PJ",
|
|
855
|
+
"freelancer_agreement": "Contrato de freelancer",
|
|
856
|
+
"service_agreement": "Contrato de prestação de serviços",
|
|
857
|
+
"fixed_term": "Prazo determinado",
|
|
858
|
+
"recurring_service": "Serviço recorrente",
|
|
859
|
+
"nda": "Acordo de confidencialidade",
|
|
860
|
+
"amendment": "Aditivo",
|
|
861
|
+
"addendum": "Anexo",
|
|
862
|
+
"other": "Outro"
|
|
863
|
+
},
|
|
864
|
+
"billingModel": {
|
|
865
|
+
"time_and_material": "Tempo e material",
|
|
866
|
+
"monthly_retainer": "Retainer mensal",
|
|
867
|
+
"fixed_price": "Preço fixo"
|
|
868
|
+
}
|
|
869
|
+
},
|
|
870
|
+
"actions": {
|
|
871
|
+
"save": "Salvar proposta",
|
|
872
|
+
"cancel": "Cancelar",
|
|
873
|
+
"edit": "Editar",
|
|
874
|
+
"submit": "Enviar para aprovação",
|
|
875
|
+
"approve": "Aprovar",
|
|
876
|
+
"reject": "Rejeitar",
|
|
877
|
+
"generatePdf": "Gerar PDF",
|
|
878
|
+
"openPdf": "Abrir PDF",
|
|
879
|
+
"delete": "Excluir"
|
|
880
|
+
},
|
|
881
|
+
"info": {
|
|
882
|
+
"revision": "Revisão {number}",
|
|
883
|
+
"noValidity": "Sem validade definida",
|
|
884
|
+
"summary": "Resumo comercial",
|
|
885
|
+
"notes": "Notas internas",
|
|
886
|
+
"lineItems": "Itens da proposta",
|
|
887
|
+
"noItems": "Nenhum item detalhado nesta revisão.",
|
|
888
|
+
"linkedRecords": "Registros vinculados",
|
|
889
|
+
"noLinkedRecords": "Nenhum contrato ou vínculo gerado ainda.",
|
|
890
|
+
"approvalNote": "Nota da aprovação",
|
|
891
|
+
"generatedDocument": "PDF comercial atual",
|
|
892
|
+
"noGeneratedDocument": "Ainda não há PDF comercial gerado para esta proposta.",
|
|
893
|
+
"documents": "{count} documento(s)"
|
|
894
|
+
},
|
|
895
|
+
"dialogDeleteTitle": "Excluir proposta",
|
|
896
|
+
"dialogDeleteDescription": "Tem certeza que deseja excluir a proposta {title}? Esta ação não pode ser desfeita.",
|
|
897
|
+
"form": {
|
|
898
|
+
"createTitle": "Nova proposta",
|
|
899
|
+
"editTitle": "Editar proposta",
|
|
900
|
+
"createDescription": "Preencha os campos principais para registrar esta proposta comercial.",
|
|
901
|
+
"editDescription": "Atualize os dados comerciais e gere uma nova revisão ao salvar.",
|
|
902
|
+
"title": "Título",
|
|
903
|
+
"titlePlaceholder": "Ex: Proposta de implantação anual",
|
|
904
|
+
"code": "Código",
|
|
905
|
+
"codePlaceholder": "Gerado automaticamente se ficar em branco",
|
|
906
|
+
"amount": "Valor total",
|
|
907
|
+
"validUntil": "Válida até",
|
|
908
|
+
"contractCategory": "Categoria do contrato",
|
|
909
|
+
"contractType": "Tipo do contrato",
|
|
910
|
+
"billingModel": "Modelo de cobrança",
|
|
911
|
+
"summary": "Resumo",
|
|
912
|
+
"summaryPlaceholder": "Escreva um resumo comercial desta proposta...",
|
|
913
|
+
"notes": "Notas internas",
|
|
914
|
+
"notesPlaceholder": "Observações para a equipe..."
|
|
915
|
+
},
|
|
916
|
+
"toasts": {
|
|
917
|
+
"createSuccess": "Proposta criada com sucesso",
|
|
918
|
+
"createError": "Falha ao criar proposta",
|
|
919
|
+
"updateSuccess": "Proposta atualizada com sucesso",
|
|
920
|
+
"updateError": "Falha ao atualizar proposta",
|
|
921
|
+
"submitSuccess": "Proposta enviada para aprovação",
|
|
922
|
+
"submitError": "Falha ao enviar proposta para aprovação",
|
|
923
|
+
"approveSuccess": "Proposta aprovada com sucesso",
|
|
924
|
+
"approveError": "Falha ao aprovar proposta",
|
|
925
|
+
"rejectSuccess": "Proposta rejeitada",
|
|
926
|
+
"rejectError": "Falha ao rejeitar proposta",
|
|
927
|
+
"generatePdfSuccess": "PDF da proposta gerado com sucesso",
|
|
928
|
+
"generatePdfError": "Falha ao gerar o PDF da proposta",
|
|
929
|
+
"deleteSuccess": "Proposta excluída com sucesso",
|
|
930
|
+
"deleteError": "Falha ao excluir proposta"
|
|
931
|
+
}
|
|
932
|
+
},
|
|
764
933
|
"tooltips": {
|
|
765
934
|
"statusActive": "Lead ativo — em acompanhamento pelo responsável.",
|
|
766
935
|
"statusInactive": "Lead inativo — fora do fluxo operacional do momento.",
|
|
@@ -777,6 +946,9 @@
|
|
|
777
946
|
"CrmFollowups": {
|
|
778
947
|
"title": "Follow-ups",
|
|
779
948
|
"description": "Acompanhe próximas ações, vencidos e compromissos por responsável em uma lista operacional.",
|
|
949
|
+
"viewMode": "Visualização",
|
|
950
|
+
"viewModeTable": "Tabela",
|
|
951
|
+
"viewModeCards": "Cards",
|
|
780
952
|
"newFollowup": "Novo Follow-up",
|
|
781
953
|
"reschedule": "Reagendar",
|
|
782
954
|
"unassigned": "Não atribuído",
|
|
@@ -839,7 +1011,7 @@
|
|
|
839
1011
|
"description": "Fila operacional de atividades com ligações, reuniões, mensagens e tarefas por responsável e prazo.",
|
|
840
1012
|
"viewMode": "Visualização",
|
|
841
1013
|
"viewModeTable": "Tabela",
|
|
842
|
-
"
|
|
1014
|
+
"viewModeCards": "Cards",
|
|
843
1015
|
"unassignedPerson": "Lead não atribuído",
|
|
844
1016
|
"unassignedOwner": "Não atribuído",
|
|
845
1017
|
"stats": {
|
|
@@ -995,49 +1167,70 @@
|
|
|
995
1167
|
"email": "Email",
|
|
996
1168
|
"phone": "Telefone",
|
|
997
1169
|
"website": "Site",
|
|
1170
|
+
"industry": "Setor",
|
|
1171
|
+
"saveError": "Nao foi possivel salvar a conta",
|
|
1172
|
+
"deleteError": "Nao foi possivel excluir a conta",
|
|
1173
|
+
"form": {
|
|
1174
|
+
"createTitle": "Nova Conta",
|
|
1175
|
+
"editTitle": "Editar Conta",
|
|
1176
|
+
"createDescription": "Crie um novo registro de conta no CRM.",
|
|
1177
|
+
"editDescription": "Atualize as informacoes da conta e do relacionamento.",
|
|
1178
|
+
"companyName": "Nome da empresa",
|
|
1179
|
+
"tradeName": "Nome fantasia",
|
|
1180
|
+
"status": "Status",
|
|
1181
|
+
"lifecycleStage": "Estagio",
|
|
1182
|
+
"email": "Email",
|
|
1183
|
+
"phone": "Telefone",
|
|
1184
|
+
"website": "Site",
|
|
998
1185
|
"industry": "Setor",
|
|
999
|
-
"
|
|
1000
|
-
"
|
|
1001
|
-
"
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
"
|
|
1186
|
+
"annualRevenue": "Receita anual",
|
|
1187
|
+
"employeeCount": "Colaboradores",
|
|
1188
|
+
"city": "Cidade",
|
|
1189
|
+
"state": "Estado",
|
|
1190
|
+
"owner": "Responsavel",
|
|
1191
|
+
"summary": {
|
|
1192
|
+
"newCompany": "Nova conta em preparacao",
|
|
1193
|
+
"createHint": "Preencha os dados essenciais para cadastrar a conta rapidamente.",
|
|
1194
|
+
"editHint": "Revise os dados principais e atualize o relacionamento comercial."
|
|
1195
|
+
},
|
|
1196
|
+
"sections": {
|
|
1197
|
+
"identityTitle": "Identificacao",
|
|
1198
|
+
"identityDescription": "Como a conta sera reconhecida no CRM.",
|
|
1199
|
+
"relationshipTitle": "Relacionamento",
|
|
1200
|
+
"relationshipDescription": "Status, etapa e ownership da conta.",
|
|
1201
|
+
"contactTitle": "Contato",
|
|
1202
|
+
"contactDescription": "Canais principais para abordagem comercial.",
|
|
1203
|
+
"locationTitle": "Localizacao",
|
|
1204
|
+
"locationDescription": "Cidade e estado para contexto rapido.",
|
|
1205
|
+
"additionalTitle": "Detalhes adicionais",
|
|
1206
|
+
"additionalDescription": "Informacoes complementares e metricas da conta."
|
|
1207
|
+
},
|
|
1208
|
+
"additional": {
|
|
1209
|
+
"show": "Expandir",
|
|
1210
|
+
"hide": "Ocultar"
|
|
1211
|
+
},
|
|
1212
|
+
"createSubmit": "Criar conta",
|
|
1213
|
+
"updateSubmit": "Salvar alteracoes",
|
|
1214
|
+
"saving": "Salvando...",
|
|
1215
|
+
"placeholders": {
|
|
1006
1216
|
"companyName": "Nome da empresa",
|
|
1007
|
-
"tradeName": "Nome fantasia",
|
|
1008
|
-
"
|
|
1009
|
-
"
|
|
1010
|
-
"
|
|
1011
|
-
"
|
|
1012
|
-
"
|
|
1013
|
-
"
|
|
1014
|
-
"
|
|
1015
|
-
"
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
"
|
|
1019
|
-
"
|
|
1020
|
-
"
|
|
1021
|
-
"
|
|
1022
|
-
"
|
|
1023
|
-
"companyName": "Nome da empresa",
|
|
1024
|
-
"tradeName": "Nome fantasia ou marca",
|
|
1025
|
-
"email": "contato@empresa.com",
|
|
1026
|
-
"phone": "(11) 99999-9999",
|
|
1027
|
-
"website": "www.empresa.com",
|
|
1028
|
-
"industry": "Tecnologia, Saude...",
|
|
1029
|
-
"annualRevenue": "0,00",
|
|
1030
|
-
"employeeCount": "0",
|
|
1031
|
-
"city": "Sao Paulo",
|
|
1032
|
-
"state": "SP"
|
|
1033
|
-
},
|
|
1034
|
-
"validation": {
|
|
1035
|
-
"nameMinLength": "O nome deve ter pelo menos 2 caracteres",
|
|
1036
|
-
"invalidEmail": "Informe um email valido",
|
|
1037
|
-
"nonNegativeNumber": "Informe zero ou um numero positivo",
|
|
1038
|
-
"integerRequired": "Informe um numero inteiro",
|
|
1039
|
-
"stateMaxLength": "O estado deve ter no maximo 2 caracteres"
|
|
1040
|
-
}
|
|
1217
|
+
"tradeName": "Nome fantasia ou marca",
|
|
1218
|
+
"email": "contato@empresa.com",
|
|
1219
|
+
"phone": "(11) 99999-9999",
|
|
1220
|
+
"website": "www.empresa.com",
|
|
1221
|
+
"industry": "Tecnologia, Saude...",
|
|
1222
|
+
"annualRevenue": "0,00",
|
|
1223
|
+
"employeeCount": "0",
|
|
1224
|
+
"city": "Sao Paulo",
|
|
1225
|
+
"state": "SP"
|
|
1226
|
+
},
|
|
1227
|
+
"validation": {
|
|
1228
|
+
"nameMinLength": "O nome deve ter pelo menos 2 caracteres",
|
|
1229
|
+
"invalidEmail": "Informe um email valido",
|
|
1230
|
+
"nonNegativeNumber": "Informe zero ou um numero positivo",
|
|
1231
|
+
"integerRequired": "Informe um numero inteiro",
|
|
1232
|
+
"stateMaxLength": "O estado deve ter no maximo 2 caracteres"
|
|
1041
1233
|
}
|
|
1042
1234
|
}
|
|
1043
1235
|
}
|
|
1236
|
+
}
|