@hed-hog/contact 0.0.266 → 0.0.274
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/README.md +470 -0
- package/dist/address-type.enum.d.ts +10 -0
- package/dist/address-type.enum.d.ts.map +1 -0
- package/dist/address-type.enum.js +14 -0
- package/dist/address-type.enum.js.map +1 -0
- package/dist/contact.module.d.ts.map +1 -1
- package/dist/contact.module.js +0 -2
- package/dist/contact.module.js.map +1 -1
- package/dist/contact.service.d.ts +19 -22
- package/dist/contact.service.d.ts.map +1 -1
- package/dist/contact.service.js +22 -2
- package/dist/contact.service.js.map +1 -1
- package/dist/index.d.ts +5 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -4
- package/dist/index.js.map +1 -1
- package/dist/person/dto/create.dto.d.ts +14 -0
- package/dist/person/dto/create.dto.d.ts.map +1 -1
- package/dist/person/dto/create.dto.js +52 -1
- package/dist/person/dto/create.dto.js.map +1 -1
- package/dist/person/dto/interaction-create.dto.d.ts +16 -0
- package/dist/person/dto/interaction-create.dto.d.ts.map +1 -0
- package/dist/person/dto/interaction-create.dto.js +57 -0
- package/dist/person/dto/interaction-create.dto.js.map +1 -0
- package/dist/person/dto/update.dto.d.ts +17 -1
- package/dist/person/dto/update.dto.d.ts.map +1 -1
- package/dist/person/dto/update.dto.js +79 -3
- package/dist/person/dto/update.dto.js.map +1 -1
- package/dist/person/person.controller.d.ts +37 -8
- package/dist/person/person.controller.d.ts.map +1 -1
- package/dist/person/person.controller.js +29 -3
- package/dist/person/person.controller.js.map +1 -1
- package/dist/person/person.service.d.ts +71 -13
- package/dist/person/person.service.d.ts.map +1 -1
- package/dist/person/person.service.js +762 -108
- package/dist/person/person.service.js.map +1 -1
- package/dist/person-relation-type/person-relation-type.controller.d.ts +13 -9
- package/dist/person-relation-type/person-relation-type.controller.d.ts.map +1 -1
- package/dist/person-relation-type/person-relation-type.service.d.ts +16 -20
- package/dist/person-relation-type/person-relation-type.service.d.ts.map +1 -1
- package/dist/person-relation-type/person-relation-type.service.js +48 -41
- package/dist/person-relation-type/person-relation-type.service.js.map +1 -1
- package/hedhog/data/menu.yaml +2 -16
- package/hedhog/data/role.yaml +9 -1
- package/hedhog/data/route.yaml +10 -21
- package/hedhog/data/setting_group.yaml +21 -0
- package/hedhog/frontend/app/person/_components/delete-person-dialog.tsx.ejs +59 -0
- package/hedhog/frontend/app/person/_components/person-field-with-create.tsx.ejs +831 -0
- package/hedhog/frontend/app/person/_components/person-form-sheet.tsx.ejs +2277 -0
- package/hedhog/frontend/app/person/_components/person-types.ts.ejs +157 -0
- package/hedhog/frontend/app/person/page.tsx.ejs +1158 -1335
- package/hedhog/frontend/messages/en.json +114 -4
- package/hedhog/frontend/messages/pt.json +155 -4
- package/hedhog/table/person.yaml +7 -0
- package/hedhog/table/person_address.yaml +18 -0
- package/hedhog/table/person_company.yaml +26 -11
- package/hedhog/table/person_individual.yaml +4 -0
- package/hedhog/table/person_individual_relation.yaml +39 -0
- package/package.json +6 -5
- package/src/address-type.enum.ts +9 -0
- package/src/contact.module.ts +46 -48
- package/src/contact.service.ts +28 -13
- package/src/index.ts +6 -13
- package/src/language/en.json +8 -1
- package/src/language/pt.json +9 -1
- package/src/person/dto/create.dto.ts +49 -1
- package/src/person/dto/update.dto.ts +75 -3
- package/src/person/person.controller.ts +31 -14
- package/src/person/person.service.ts +1019 -121
- package/src/person-relation-type/person-relation-type.service.ts +84 -76
- package/hedhog/data/address_type.yaml +0 -28
- package/hedhog/frontend/app/address-type/page.tsx.ejs +0 -480
- package/hedhog/query/add-unique-address-type-locale.sql +0 -3
- package/hedhog/table/address.yaml +0 -28
- package/hedhog/table/address_type.yaml +0 -11
- package/hedhog/table/person_relation.yaml +0 -20
- package/hedhog/table/person_relation_type.yaml +0 -6
- package/src/address-type/address-type.controller.ts +0 -55
- package/src/address-type/address-type.enum.ts +0 -9
- package/src/address-type/address-type.module.ts +0 -18
- package/src/address-type/address-type.service.ts +0 -121
- package/src/address-type/dto/create.dto.ts +0 -19
- package/src/address-type/dto/update.dto.ts +0 -9
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"ContactPage": {
|
|
3
3
|
"title": "People and Companies",
|
|
4
|
+
"titleIndividualOnly": "People",
|
|
4
5
|
"description": "Contact Management",
|
|
6
|
+
"heroDescription": "Manage your contacts and companies",
|
|
7
|
+
"heroDescriptionIndividualOnly": "Manage your contacts",
|
|
5
8
|
"addNew": "New Contact",
|
|
9
|
+
"newPerson": "New Person",
|
|
6
10
|
"edit": "Edit Contact",
|
|
7
11
|
"delete": "Delete",
|
|
8
12
|
"view": "View Details",
|
|
@@ -14,8 +18,12 @@
|
|
|
14
18
|
"actions": "Actions",
|
|
15
19
|
"search": "Search contacts...",
|
|
16
20
|
"searchPlaceholder": "Search",
|
|
21
|
+
"searchByNamePlaceholder": "Search by name...",
|
|
17
22
|
"filterByType": "Filter by type",
|
|
18
23
|
"filterByStatus": "Filter by status",
|
|
24
|
+
"viewMode": "View",
|
|
25
|
+
"viewModeTable": "Table",
|
|
26
|
+
"viewModeCards": "Cards",
|
|
19
27
|
"allStatuses": "All statuses",
|
|
20
28
|
"allTypes": "All types",
|
|
21
29
|
"all": "All",
|
|
@@ -31,6 +39,7 @@
|
|
|
31
39
|
"deleteError": "Failed to delete contact",
|
|
32
40
|
"deleteConfirmTitle": "Delete Contact",
|
|
33
41
|
"deleteConfirmDescription": "Are you sure you want to delete this contact? This action cannot be undone.",
|
|
42
|
+
"deleteConfirmDescriptionWithName": "Are you sure you want to delete {name}? This action cannot be undone.",
|
|
34
43
|
"cancel": "Cancel",
|
|
35
44
|
"confirm": "Confirm",
|
|
36
45
|
"save": "Save",
|
|
@@ -52,9 +61,11 @@
|
|
|
52
61
|
"documentType": "Document Type",
|
|
53
62
|
"documentValuePlaceholder": "Value",
|
|
54
63
|
"documentValue": "Value",
|
|
55
|
-
"addContact": "
|
|
56
|
-
"
|
|
57
|
-
"
|
|
64
|
+
"addContact": "Contact",
|
|
65
|
+
"addEmail": "Email",
|
|
66
|
+
"addPhone": "Phone",
|
|
67
|
+
"addAddress": "Address",
|
|
68
|
+
"addDocument": "Document",
|
|
58
69
|
"noContacts": "No contacts added yet",
|
|
59
70
|
"noAddresses": "No addresses added yet",
|
|
60
71
|
"noDocuments": "No documents added yet",
|
|
@@ -76,10 +87,40 @@
|
|
|
76
87
|
"columnActions": "Actions",
|
|
77
88
|
"loading": "Loading contacts...",
|
|
78
89
|
"emptyState": "No people found. Adjust the filters to see more results.",
|
|
90
|
+
"emptyStateTitle": "No people found",
|
|
91
|
+
"emptyStateDescription": "Start by adding your first person or adjust the filters to see more results.",
|
|
79
92
|
"dialogCreateTitle": "Add New Contact",
|
|
80
93
|
"dialogCreateDescription": "Create a new individual or company record",
|
|
94
|
+
"sheetCreateTitle": "New Person",
|
|
95
|
+
"sheetCreateDescription": "Register basic data, contacts, addresses and documents in a single flow.",
|
|
96
|
+
"sheetCreateDescriptionIndividualOnly": "Register basic individual data, contacts, addresses and documents in a single flow.",
|
|
97
|
+
"sheetEditTitle": "Edit Person",
|
|
98
|
+
"sheetEditDescription": "Update the basic data, contacts, addresses and documents for this person.",
|
|
99
|
+
"sheetBasicDescription": "Set the record type, the main name and the current status.",
|
|
100
|
+
"sheetContactsDescription": "Add contact channels and mark the primary ones.",
|
|
101
|
+
"sheetAddressesDescription": "Manage addresses and use the postal code to fill data automatically.",
|
|
102
|
+
"sheetDocumentsDescription": "Attach relevant documents to the record.",
|
|
81
103
|
"typeOfPerson": "Type of Person",
|
|
82
104
|
"selectType": "Select type",
|
|
105
|
+
"birthDate": "Birth Date",
|
|
106
|
+
"selectDate": "Select date",
|
|
107
|
+
"gender": "Gender",
|
|
108
|
+
"selectGender": "Select gender",
|
|
109
|
+
"genderMale": "Male",
|
|
110
|
+
"genderFemale": "Female",
|
|
111
|
+
"genderOther": "Other",
|
|
112
|
+
"jobTitle": "Job Title",
|
|
113
|
+
"jobTitlePlaceholder": "E.g. Financial Analyst",
|
|
114
|
+
"employerCompany": "Employer",
|
|
115
|
+
"employerCompanyPlaceholder": "Select the employer company",
|
|
116
|
+
"noEmployerCompany": "No employer linked",
|
|
117
|
+
"tradeName": "Trade Name",
|
|
118
|
+
"tradeNamePlaceholder": "Company trade name",
|
|
119
|
+
"foundationDate": "Foundation Date",
|
|
120
|
+
"legalNature": "Legal Nature",
|
|
121
|
+
"legalNaturePlaceholder": "E.g. LLC, Inc.",
|
|
122
|
+
"notes": "Notes",
|
|
123
|
+
"notesPlaceholder": "Additional notes...",
|
|
83
124
|
"createPerson": "Create Person",
|
|
84
125
|
"editPerson": "Edit Person",
|
|
85
126
|
"editPersonDescription": "Update person information, contacts, addresses and documents",
|
|
@@ -90,8 +131,16 @@
|
|
|
90
131
|
"editTabAddresses": "Addresses",
|
|
91
132
|
"editTabDocuments": "Documents",
|
|
92
133
|
"selectContactType": "Select type",
|
|
134
|
+
"selectDocumentType": "Select type",
|
|
93
135
|
"main": "Main",
|
|
94
136
|
"selectAddressType": "Select address type",
|
|
137
|
+
"addressTypeResidential": "Residential",
|
|
138
|
+
"addressTypeCommercial": "Commercial",
|
|
139
|
+
"addressTypeCorrespondence": "Correspondence",
|
|
140
|
+
"addressTypeAlternative": "Alternative",
|
|
141
|
+
"addressTypeWork": "Work",
|
|
142
|
+
"addressTypeBilling": "Billing",
|
|
143
|
+
"addressTypeShipping": "Shipping",
|
|
95
144
|
"address": "Address",
|
|
96
145
|
"addressPlaceholder": "Address",
|
|
97
146
|
"addressComplement": "Complement",
|
|
@@ -105,10 +154,71 @@
|
|
|
105
154
|
"personDetails": "Person Details",
|
|
106
155
|
"viewAllRegisteredData": "View all registered data",
|
|
107
156
|
"dialogBasicInformationTitle": "Basic Information",
|
|
157
|
+
"avatarUpload": "Upload Avatar",
|
|
158
|
+
"avatarReplace": "Replace Avatar",
|
|
159
|
+
"avatarRemove": "Remove Avatar",
|
|
160
|
+
"avatarGuidelines": "JPG, PNG or GIF. Max 5MB.",
|
|
161
|
+
"avatarUploadingProgress": "Uploading avatar... {progress}%",
|
|
162
|
+
"avatarUploadSuccess": "Avatar uploaded successfully.",
|
|
163
|
+
"avatarUploadError": "Failed to upload avatar.",
|
|
164
|
+
"avatarRemoveSuccess": "Avatar removed.",
|
|
165
|
+
"avatarInvalidType": "Select a valid image file.",
|
|
166
|
+
"avatarTooLarge": "Image must be at most 5MB.",
|
|
108
167
|
"createdAt": "Created at",
|
|
109
168
|
"close": "Close",
|
|
110
169
|
"copiedToClipboard": "Copied to clipboard!",
|
|
111
|
-
"buttonEditUser": "Edit"
|
|
170
|
+
"buttonEditUser": "Edit",
|
|
171
|
+
"saving": "Saving...",
|
|
172
|
+
"resultsCount": "{count} result(s)",
|
|
173
|
+
"rowsPerPage": "Rows per page",
|
|
174
|
+
"paginationLabel": "Page {current} of {total}"
|
|
175
|
+
},
|
|
176
|
+
"PersonFieldWithCreate": {
|
|
177
|
+
"sheet": {
|
|
178
|
+
"title": "New {entityLabel}",
|
|
179
|
+
"description": "Only name and type are required. You can complete the remaining data now or later.",
|
|
180
|
+
"descriptionIndividualOnly": "Only name is required. You can complete the remaining data now or later."
|
|
181
|
+
},
|
|
182
|
+
"common": {
|
|
183
|
+
"select": "Select"
|
|
184
|
+
},
|
|
185
|
+
"types": {
|
|
186
|
+
"individual": "Individual",
|
|
187
|
+
"company": "Company"
|
|
188
|
+
},
|
|
189
|
+
"fields": {
|
|
190
|
+
"name": "Name",
|
|
191
|
+
"type": "Type",
|
|
192
|
+
"documentIndividualOptional": "CPF (optional)",
|
|
193
|
+
"documentCompanyOptional": "CNPJ (optional)",
|
|
194
|
+
"emailOptional": "Email (optional)",
|
|
195
|
+
"phoneOptional": "Phone (optional)",
|
|
196
|
+
"addressOptional": "Address (optional)"
|
|
197
|
+
},
|
|
198
|
+
"placeholders": {
|
|
199
|
+
"name": "Name of {entityLabel}",
|
|
200
|
+
"email": "{entityLabel}@company.com",
|
|
201
|
+
"phone": "(11) 99999-9999",
|
|
202
|
+
"addressLine1": "Street, number, complement",
|
|
203
|
+
"city": "City",
|
|
204
|
+
"state": "State"
|
|
205
|
+
},
|
|
206
|
+
"search": {
|
|
207
|
+
"placeholder": "Type to search person...",
|
|
208
|
+
"loading": "Searching people...",
|
|
209
|
+
"noResults": "No person found"
|
|
210
|
+
},
|
|
211
|
+
"actions": {
|
|
212
|
+
"cancel": "Cancel",
|
|
213
|
+
"saveEntity": "Save {entityLabel}",
|
|
214
|
+
"createNew": "Create new record",
|
|
215
|
+
"clearSelection": "Clear selection",
|
|
216
|
+
"createEntityAria": "Create new {entityLabel}"
|
|
217
|
+
},
|
|
218
|
+
"messages": {
|
|
219
|
+
"createdSuccess": "{entityLabel} created successfully",
|
|
220
|
+
"createdError": "Could not create {entityLabel}"
|
|
221
|
+
}
|
|
112
222
|
},
|
|
113
223
|
"AddressType": {
|
|
114
224
|
"breadcrumbContact": "Contact",
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"ContactPage": {
|
|
3
3
|
"title": "Pessoas e Empresas",
|
|
4
|
+
"titleIndividualOnly": "Pessoas",
|
|
4
5
|
"description": "Gerenciamento de Contatos",
|
|
6
|
+
"heroDescription": "Gerencie seus contatos e empresas",
|
|
7
|
+
"heroDescriptionIndividualOnly": "Gerencie seus contatos",
|
|
5
8
|
"addNew": "Novo Contato",
|
|
9
|
+
"newPerson": "Nova Pessoa",
|
|
6
10
|
"edit": "Editar Contato",
|
|
7
11
|
"delete": "Excluir",
|
|
8
12
|
"view": "Ver Detalhes",
|
|
@@ -14,8 +18,12 @@
|
|
|
14
18
|
"actions": "Ações",
|
|
15
19
|
"search": "Pesquisar contatos...",
|
|
16
20
|
"searchPlaceholder": "Buscar",
|
|
21
|
+
"searchByNamePlaceholder": "Buscar por nome...",
|
|
17
22
|
"filterByType": "Filtrar por tipo",
|
|
18
23
|
"filterByStatus": "Filtrar por status",
|
|
24
|
+
"viewMode": "Visualização",
|
|
25
|
+
"viewModeTable": "Tabela",
|
|
26
|
+
"viewModeCards": "Cards",
|
|
19
27
|
"allStatuses": "Todos os status",
|
|
20
28
|
"allTypes": "Todos os tipos",
|
|
21
29
|
"all": "Todos",
|
|
@@ -31,6 +39,7 @@
|
|
|
31
39
|
"deleteError": "Falha ao excluir contato",
|
|
32
40
|
"deleteConfirmTitle": "Excluir Contato",
|
|
33
41
|
"deleteConfirmDescription": "Tem certeza de que deseja excluir este contato? Esta ação não pode ser desfeita.",
|
|
42
|
+
"deleteConfirmDescriptionWithName": "Tem certeza que deseja excluir {name}? Esta ação não pode ser desfeita.",
|
|
34
43
|
"cancel": "Cancelar",
|
|
35
44
|
"confirm": "Confirmar",
|
|
36
45
|
"save": "Salvar",
|
|
@@ -51,9 +60,11 @@
|
|
|
51
60
|
"documentType": "Tipo de Documento",
|
|
52
61
|
"documentValuePlaceholder": "Valor",
|
|
53
62
|
"documentValue": "Valor",
|
|
54
|
-
"addContact": "
|
|
55
|
-
"
|
|
56
|
-
"
|
|
63
|
+
"addContact": "Contato",
|
|
64
|
+
"addEmail": "Email",
|
|
65
|
+
"addPhone": "Telefone",
|
|
66
|
+
"addAddress": "Endereço",
|
|
67
|
+
"addDocument": "Documento",
|
|
57
68
|
"noContacts": "Nenhum contato adicionado ainda",
|
|
58
69
|
"noAddresses": "Nenhum endereço adicionado ainda",
|
|
59
70
|
"noDocuments": "Nenhum documento adicionado ainda",
|
|
@@ -75,10 +86,40 @@
|
|
|
75
86
|
"columnActions": "Ações",
|
|
76
87
|
"loading": "Carregando contatos...",
|
|
77
88
|
"emptyState": "Nenhuma pessoa encontrada. Ajuste os filtros para ver mais resultados.",
|
|
89
|
+
"emptyStateTitle": "Nenhuma pessoa encontrada",
|
|
90
|
+
"emptyStateDescription": "Comece adicionando sua primeira pessoa ou ajuste os filtros para ver mais resultados.",
|
|
78
91
|
"dialogCreateTitle": "Adicionar Novo Contato",
|
|
79
92
|
"dialogCreateDescription": "Crie um novo cadastro de pessoa física ou jurídica",
|
|
93
|
+
"sheetCreateTitle": "Nova Pessoa",
|
|
94
|
+
"sheetCreateDescription": "Cadastre dados básicos, contatos, endereços e documentos em um único fluxo.",
|
|
95
|
+
"sheetCreateDescriptionIndividualOnly": "Cadastre dados básicos, contatos, endereços e documentos de pessoa física em um único fluxo.",
|
|
96
|
+
"sheetEditTitle": "Editar Pessoa",
|
|
97
|
+
"sheetEditDescription": "Atualize os dados básicos, contatos, endereços e documentos desta pessoa.",
|
|
98
|
+
"sheetBasicDescription": "Defina o tipo de cadastro, o nome principal e o status atual.",
|
|
99
|
+
"sheetContactsDescription": "Adicione canais de contato e marque os principais.",
|
|
100
|
+
"sheetAddressesDescription": "Gerencie endereços e use o CEP para preencher dados automaticamente.",
|
|
101
|
+
"sheetDocumentsDescription": "Associe documentos relevantes ao cadastro.",
|
|
80
102
|
"typeOfPerson": "Tipo de Pessoa",
|
|
81
103
|
"selectType": "Selecione o tipo",
|
|
104
|
+
"birthDate": "Data de Nascimento",
|
|
105
|
+
"selectDate": "Selecionar data",
|
|
106
|
+
"gender": "Genero",
|
|
107
|
+
"selectGender": "Selecione o genero",
|
|
108
|
+
"genderMale": "Masculino",
|
|
109
|
+
"genderFemale": "Feminino",
|
|
110
|
+
"genderOther": "Outro",
|
|
111
|
+
"jobTitle": "Cargo",
|
|
112
|
+
"jobTitlePlaceholder": "Ex: Analista Financeiro",
|
|
113
|
+
"employerCompany": "Empresa",
|
|
114
|
+
"employerCompanyPlaceholder": "Selecione a empresa empregadora",
|
|
115
|
+
"noEmployerCompany": "Sem empresa vinculada",
|
|
116
|
+
"tradeName": "Nome Fantasia",
|
|
117
|
+
"tradeNamePlaceholder": "Nome fantasia da empresa",
|
|
118
|
+
"foundationDate": "Data de Fundacao",
|
|
119
|
+
"legalNature": "Natureza Juridica",
|
|
120
|
+
"legalNaturePlaceholder": "Ex: LTDA, S.A.",
|
|
121
|
+
"notes": "Observacoes",
|
|
122
|
+
"notesPlaceholder": "Observacoes adicionais...",
|
|
82
123
|
"createPerson": "Criar Pessoa",
|
|
83
124
|
"editPerson": "Editar Pessoa",
|
|
84
125
|
"editPersonDescription": "Atualize as informações da pessoa, contatos, endereços e documentos",
|
|
@@ -88,8 +129,16 @@
|
|
|
88
129
|
"editTabAddresses": "Endereços",
|
|
89
130
|
"editTabDocuments": "Documentos",
|
|
90
131
|
"selectContactType": "Selecione o tipo",
|
|
132
|
+
"selectDocumentType": "Selecione o tipo",
|
|
91
133
|
"main": "Principal",
|
|
92
134
|
"selectAddressType": "Selecione o tipo de endereço",
|
|
135
|
+
"addressTypeResidential": "Residencial",
|
|
136
|
+
"addressTypeCommercial": "Comercial",
|
|
137
|
+
"addressTypeCorrespondence": "Correspondência",
|
|
138
|
+
"addressTypeAlternative": "Alternativo",
|
|
139
|
+
"addressTypeWork": "Trabalho",
|
|
140
|
+
"addressTypeBilling": "Cobrança",
|
|
141
|
+
"addressTypeShipping": "Entrega",
|
|
93
142
|
"address": "Endereço",
|
|
94
143
|
"addressPlaceholder": "Endereço",
|
|
95
144
|
"addressComplement": "Complemmento",
|
|
@@ -103,11 +152,113 @@
|
|
|
103
152
|
"personDetails": "Detalhes da Pessoa",
|
|
104
153
|
"viewAllRegisteredData": "Visualize todos os dados cadastrados",
|
|
105
154
|
"dialogBasicInformationTitle": "Informações Básicas",
|
|
155
|
+
"avatarUpload": "Enviar Avatar",
|
|
156
|
+
"avatarReplace": "Substituir Avatar",
|
|
157
|
+
"avatarRemove": "Remover Avatar",
|
|
158
|
+
"avatarGuidelines": "JPG, PNG ou GIF. Máximo de 5MB.",
|
|
159
|
+
"avatarUploadingProgress": "Enviando avatar... {progress}%",
|
|
160
|
+
"avatarUploadSuccess": "Avatar enviado com sucesso.",
|
|
161
|
+
"avatarUploadError": "Falha ao enviar avatar.",
|
|
162
|
+
"avatarRemoveSuccess": "Avatar removido.",
|
|
163
|
+
"avatarInvalidType": "Selecione um arquivo de imagem válido.",
|
|
164
|
+
"avatarTooLarge": "A imagem deve ter no máximo 5MB.",
|
|
165
|
+
"owner": "Responsável",
|
|
166
|
+
"unassigned": "Não atribuído",
|
|
167
|
+
"source": "Origem",
|
|
168
|
+
"sourceReferral": "Indicação",
|
|
169
|
+
"sourceWebsite": "Site",
|
|
170
|
+
"sourceSocial": "Social",
|
|
171
|
+
"sourceInbound": "Inbound",
|
|
172
|
+
"sourceOutbound": "Outbound",
|
|
173
|
+
"sourceOther": "Outro",
|
|
174
|
+
"lifecycleStage": "Estágio",
|
|
175
|
+
"lifecycleNew": "Novo",
|
|
176
|
+
"lifecycleContacted": "Contatado",
|
|
177
|
+
"lifecycleQualified": "Qualificado",
|
|
178
|
+
"lifecycleProposal": "Proposta",
|
|
179
|
+
"lifecycleNegotiation": "Negociação",
|
|
180
|
+
"lifecycleCustomer": "Cliente",
|
|
181
|
+
"lifecycleLost": "Perdido",
|
|
182
|
+
"nextActionAt": "Próxima ação",
|
|
183
|
+
"nextActionEmpty": "Sem follow-up",
|
|
184
|
+
"registerInteraction": "Registrar interação",
|
|
185
|
+
"registerInteractionDescription": "Registre o último contato com esta pessoa.",
|
|
186
|
+
"scheduleFollowup": "Agendar follow-up",
|
|
187
|
+
"scheduleFollowupDescription": "Defina data e responsável para a próxima ação.",
|
|
188
|
+
"interactionType": "Tipo de interação",
|
|
189
|
+
"interactionTypeCall": "Ligação",
|
|
190
|
+
"interactionTypeEmail": "E-mail",
|
|
191
|
+
"interactionTypeWhatsapp": "WhatsApp",
|
|
192
|
+
"interactionTypeMeeting": "Reunião",
|
|
193
|
+
"interactionTypeNote": "Nota",
|
|
194
|
+
"interactionDate": "Data da interação",
|
|
195
|
+
"interactionOutcome": "Resultado",
|
|
196
|
+
"interactionOutcomePlaceholder": "Ex: Interessado, pediu proposta...",
|
|
197
|
+
"interactionNotesPlaceholder": "Escreva um resumo rápido...",
|
|
198
|
+
"interactionCreateSuccess": "Interação registrada com sucesso.",
|
|
199
|
+
"interactionCreateError": "Falha ao registrar interação.",
|
|
200
|
+
"nextActionRequired": "A data da próxima ação é obrigatória.",
|
|
201
|
+
"schedule": "Agendar",
|
|
202
|
+
"register": "Registrar",
|
|
203
|
+
"saveAndNew": "Salvar e novo",
|
|
204
|
+
"formShortcutsHint": "Atalhos: Ctrl/Cmd+S para salvar, Esc para fechar.",
|
|
205
|
+
"duplicateWarning": "Possível duplicidade encontrada: {names}.",
|
|
106
206
|
"createdAt": "Criado em",
|
|
107
207
|
"close": "Fechar",
|
|
108
208
|
"copiedToClipboard": "Copiado para a área de transferência!",
|
|
109
209
|
"buttonEditUser": "Editar",
|
|
110
|
-
"saveChanges": "Salvar Alterações"
|
|
210
|
+
"saveChanges": "Salvar Alterações",
|
|
211
|
+
"saving": "Salvando...",
|
|
212
|
+
"resultsCount": "{count} resultado(s)",
|
|
213
|
+
"rowsPerPage": "Linhas por página",
|
|
214
|
+
"paginationLabel": "Página {current} de {total}"
|
|
215
|
+
},
|
|
216
|
+
"PersonFieldWithCreate": {
|
|
217
|
+
"sheet": {
|
|
218
|
+
"title": "Novo {entityLabel}",
|
|
219
|
+
"description": "Apenas nome e tipo são obrigatórios. Você pode completar os demais dados agora ou depois.",
|
|
220
|
+
"descriptionIndividualOnly": "Apenas nome é obrigatório. Você pode completar os demais dados agora ou depois."
|
|
221
|
+
},
|
|
222
|
+
"common": {
|
|
223
|
+
"select": "Selecione"
|
|
224
|
+
},
|
|
225
|
+
"types": {
|
|
226
|
+
"individual": "Pessoa Física",
|
|
227
|
+
"company": "Pessoa Jurídica"
|
|
228
|
+
},
|
|
229
|
+
"fields": {
|
|
230
|
+
"name": "Nome",
|
|
231
|
+
"type": "Tipo",
|
|
232
|
+
"documentIndividualOptional": "CPF (opcional)",
|
|
233
|
+
"documentCompanyOptional": "CNPJ (opcional)",
|
|
234
|
+
"emailOptional": "E-mail (opcional)",
|
|
235
|
+
"phoneOptional": "Telefone (opcional)",
|
|
236
|
+
"addressOptional": "Endereço (opcional)"
|
|
237
|
+
},
|
|
238
|
+
"placeholders": {
|
|
239
|
+
"name": "Nome do {entityLabel}",
|
|
240
|
+
"email": "{entityLabel}@empresa.com",
|
|
241
|
+
"phone": "(11) 99999-9999",
|
|
242
|
+
"addressLine1": "Rua, número, complemento",
|
|
243
|
+
"city": "Cidade",
|
|
244
|
+
"state": "UF"
|
|
245
|
+
},
|
|
246
|
+
"search": {
|
|
247
|
+
"placeholder": "Digite para buscar pessoa...",
|
|
248
|
+
"loading": "Buscando pessoas...",
|
|
249
|
+
"noResults": "Nenhuma pessoa encontrada"
|
|
250
|
+
},
|
|
251
|
+
"actions": {
|
|
252
|
+
"cancel": "Cancelar",
|
|
253
|
+
"saveEntity": "Salvar {entityLabel}",
|
|
254
|
+
"createNew": "Criar novo cadastro",
|
|
255
|
+
"clearSelection": "Limpar seleção",
|
|
256
|
+
"createEntityAria": "Criar novo {entityLabel}"
|
|
257
|
+
},
|
|
258
|
+
"messages": {
|
|
259
|
+
"createdSuccess": "{entityLabel} criado com sucesso",
|
|
260
|
+
"createdError": "Não foi possível criar {entityLabel}"
|
|
261
|
+
}
|
|
111
262
|
},
|
|
112
263
|
"AddressType": {
|
|
113
264
|
"breadcrumbContact": "Contato",
|
package/hedhog/table/person.yaml
CHANGED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
table: person_address
|
|
2
|
+
columns:
|
|
3
|
+
- type: pk
|
|
4
|
+
- name: person_id
|
|
5
|
+
type: fk
|
|
6
|
+
references:
|
|
7
|
+
table: person
|
|
8
|
+
column: id
|
|
9
|
+
- name: address_id
|
|
10
|
+
type: fk
|
|
11
|
+
references:
|
|
12
|
+
table: address
|
|
13
|
+
column: id
|
|
14
|
+
- type: created_at
|
|
15
|
+
- type: updated_at
|
|
16
|
+
indexes:
|
|
17
|
+
- columns: [address_id]
|
|
18
|
+
unique: true
|
|
@@ -1,11 +1,26 @@
|
|
|
1
|
-
table: person_company
|
|
2
|
-
columns:
|
|
3
|
-
- type: pk
|
|
4
|
-
references:
|
|
5
|
-
table: person
|
|
6
|
-
column: id
|
|
7
|
-
- name:
|
|
8
|
-
|
|
9
|
-
- name:
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
table: person_company
|
|
2
|
+
columns:
|
|
3
|
+
- type: pk
|
|
4
|
+
references:
|
|
5
|
+
table: person
|
|
6
|
+
column: id
|
|
7
|
+
- name: trade_name
|
|
8
|
+
isNullable: true
|
|
9
|
+
- name: foundation_date
|
|
10
|
+
type: date
|
|
11
|
+
isNullable: true
|
|
12
|
+
- name: legal_nature
|
|
13
|
+
isNullable: true
|
|
14
|
+
- name: headquarter_id
|
|
15
|
+
type: fk
|
|
16
|
+
isNullable: true
|
|
17
|
+
references:
|
|
18
|
+
table: person_company
|
|
19
|
+
column: id
|
|
20
|
+
onDelete: SET NULL
|
|
21
|
+
onUpdate: CASCADE
|
|
22
|
+
- type: created_at
|
|
23
|
+
- type: updated_at
|
|
24
|
+
|
|
25
|
+
indices:
|
|
26
|
+
- columns: [headquarter_id]
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
table: person_individual_relation
|
|
2
|
+
columns:
|
|
3
|
+
- type: pk
|
|
4
|
+
- name: person_individual_id
|
|
5
|
+
type: fk
|
|
6
|
+
references:
|
|
7
|
+
table: person_individual
|
|
8
|
+
column: id
|
|
9
|
+
onDelete: CASCADE
|
|
10
|
+
onUpdate: CASCADE
|
|
11
|
+
- name: related_person_individual_id
|
|
12
|
+
type: fk
|
|
13
|
+
references:
|
|
14
|
+
table: person_individual
|
|
15
|
+
column: id
|
|
16
|
+
onDelete: CASCADE
|
|
17
|
+
onUpdate: CASCADE
|
|
18
|
+
- name: relation_type
|
|
19
|
+
type: enum
|
|
20
|
+
values:
|
|
21
|
+
- parent
|
|
22
|
+
- child
|
|
23
|
+
- spouse
|
|
24
|
+
- sibling
|
|
25
|
+
- guardian
|
|
26
|
+
- dependent
|
|
27
|
+
- partner
|
|
28
|
+
- responsible
|
|
29
|
+
- emergency_contact
|
|
30
|
+
- other
|
|
31
|
+
- type: created_at
|
|
32
|
+
- type: updated_at
|
|
33
|
+
|
|
34
|
+
indices:
|
|
35
|
+
- columns: [person_individual_id]
|
|
36
|
+
- columns: [related_person_individual_id]
|
|
37
|
+
- columns: [relation_type]
|
|
38
|
+
- columns: [person_individual_id, related_person_individual_id, relation_type]
|
|
39
|
+
isUnique: true
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hed-hog/contact",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.274",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"dependencies": {
|
|
@@ -10,11 +10,12 @@
|
|
|
10
10
|
"@nestjs/jwt": "^11",
|
|
11
11
|
"@nestjs/mapped-types": "*",
|
|
12
12
|
"@hed-hog/api-prisma": "0.0.5",
|
|
13
|
-
"@hed-hog/
|
|
14
|
-
"@hed-hog/api": "0.0.4",
|
|
15
|
-
"@hed-hog/api-pagination": "0.0.6",
|
|
13
|
+
"@hed-hog/address": "0.0.274",
|
|
16
14
|
"@hed-hog/api-locale": "0.0.13",
|
|
17
|
-
"@hed-hog/
|
|
15
|
+
"@hed-hog/core": "0.0.274",
|
|
16
|
+
"@hed-hog/api-pagination": "0.0.6",
|
|
17
|
+
"@hed-hog/api-mail": "0.0.8",
|
|
18
|
+
"@hed-hog/api": "0.0.4"
|
|
18
19
|
},
|
|
19
20
|
"exports": {
|
|
20
21
|
".": {
|
package/src/contact.module.ts
CHANGED
|
@@ -1,48 +1,46 @@
|
|
|
1
|
-
import { LocaleModule } from '@hed-hog/api-locale';
|
|
2
|
-
import { MailModule } from '@hed-hog/api-mail';
|
|
3
|
-
import { PaginationModule } from '@hed-hog/api-pagination';
|
|
4
|
-
import { PrismaModule } from '@hed-hog/api-prisma';
|
|
5
|
-
import { CoreModule } from '@hed-hog/core';
|
|
6
|
-
import { forwardRef, Module } from '@nestjs/common';
|
|
7
|
-
import { ConfigModule } from '@nestjs/config';
|
|
8
|
-
import { JwtModule } from '@nestjs/jwt';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
),
|
|
32
|
-
forwardRef(() =>
|
|
33
|
-
forwardRef(() =>
|
|
34
|
-
forwardRef(() =>
|
|
35
|
-
forwardRef(() =>
|
|
36
|
-
forwardRef(() =>
|
|
37
|
-
forwardRef(() =>
|
|
38
|
-
forwardRef(() =>
|
|
39
|
-
forwardRef(() =>
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
],
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
})
|
|
48
|
-
export class ContactModule { }
|
|
1
|
+
import { LocaleModule } from '@hed-hog/api-locale';
|
|
2
|
+
import { MailModule } from '@hed-hog/api-mail';
|
|
3
|
+
import { PaginationModule } from '@hed-hog/api-pagination';
|
|
4
|
+
import { PrismaModule } from '@hed-hog/api-prisma';
|
|
5
|
+
import { CoreModule } from '@hed-hog/core';
|
|
6
|
+
import { forwardRef, Module } from '@nestjs/common';
|
|
7
|
+
import { ConfigModule } from '@nestjs/config';
|
|
8
|
+
import { JwtModule } from '@nestjs/jwt';
|
|
9
|
+
import { PersonContactTypeModule } from './contact-type/contact-type.module';
|
|
10
|
+
import { ContactService } from './contact.service';
|
|
11
|
+
import { PersonDocumentTypeModule } from './document-type/document-type.module';
|
|
12
|
+
import { PersonRelationTypeModule } from './person-relation-type/person-relation-type.module';
|
|
13
|
+
import { PersonModule } from './person/person.module';
|
|
14
|
+
|
|
15
|
+
@Module({
|
|
16
|
+
imports: [
|
|
17
|
+
forwardRef(() =>
|
|
18
|
+
JwtModule.registerAsync({
|
|
19
|
+
global: true,
|
|
20
|
+
useFactory: () => {
|
|
21
|
+
return {
|
|
22
|
+
secret: String(process.env.JWT_SECRET),
|
|
23
|
+
global: true,
|
|
24
|
+
signOptions: {
|
|
25
|
+
expiresIn: String(process.env.JWT_EXPIRES_IN) || ('30d' as any),
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
},
|
|
29
|
+
}),
|
|
30
|
+
),
|
|
31
|
+
forwardRef(() => CoreModule),
|
|
32
|
+
forwardRef(() => LocaleModule),
|
|
33
|
+
forwardRef(() => PrismaModule),
|
|
34
|
+
forwardRef(() => PaginationModule),
|
|
35
|
+
forwardRef(() => PersonModule),
|
|
36
|
+
forwardRef(() => PersonContactTypeModule),
|
|
37
|
+
forwardRef(() => PersonDocumentTypeModule),
|
|
38
|
+
forwardRef(() => PersonRelationTypeModule),
|
|
39
|
+
forwardRef(() => MailModule),
|
|
40
|
+
ConfigModule.forRoot(),
|
|
41
|
+
],
|
|
42
|
+
controllers: [],
|
|
43
|
+
providers: [ContactService],
|
|
44
|
+
exports: [ContactService],
|
|
45
|
+
})
|
|
46
|
+
export class ContactModule {}
|