gallabs commited on
Commit
7054af0
·
verified ·
1 Parent(s): 232e208

Add 3 files

Browse files
Files changed (3) hide show
  1. README.md +7 -5
  2. index.html +918 -19
  3. prompts.txt +1 -0
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Tom System Orcamento Bootstrap532
3
- emoji: 🐠
4
- colorFrom: indigo
5
- colorTo: yellow
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: tom-system-orcamento-bootstrap532
3
+ emoji: 🐳
4
+ colorFrom: green
5
+ colorTo: purple
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,918 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="pt-BR" data-bs-theme="dark">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Orçamentos</title>
7
+ <!-- Bootstrap 5.3.2 CSS -->
8
+ <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
9
+ <!-- Bootstrap Icons -->
10
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css">
11
+ <!-- DataTables CSS -->
12
+ <link rel="stylesheet" href="https://cdn.datatables.net/1.13.6/css/dataTables.bootstrap5.min.css">
13
+ <!-- SweetAlert2 CSS -->
14
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/sweetalert2@11/dist/sweetalert2.min.css">
15
+ <style>
16
+ .offcanvas-end {
17
+ width: 33.333333%;
18
+ transition: transform 0.4s ease-in-out;
19
+ }
20
+
21
+ @media (max-width: 992px) {
22
+ .offcanvas-end {
23
+ width: 75%;
24
+ }
25
+ }
26
+
27
+ @media (max-width: 576px) {
28
+ .offcanvas-end {
29
+ width: 100%;
30
+ }
31
+ }
32
+
33
+ .status-badge {
34
+ padding: 5px 10px;
35
+ border-radius: 20px;
36
+ font-size: 0.8rem;
37
+ font-weight: 500;
38
+ }
39
+
40
+ .status-em-elaboracao {
41
+ background-color: rgba(13, 110, 253, 0.2);
42
+ color: #0d6efd;
43
+ }
44
+
45
+ .status-aguardando-analise {
46
+ background-color: rgba(255, 193, 7, 0.2);
47
+ color: #ffc107;
48
+ }
49
+
50
+ .status-analise-concluida {
51
+ background-color: rgba(25, 135, 84, 0.2);
52
+ color: #198754;
53
+ }
54
+
55
+ .status-convertido {
56
+ background-color: rgba(111, 66, 193, 0.2);
57
+ color: #6f42c1;
58
+ }
59
+
60
+ .status-cancelado {
61
+ background-color: rgba(220, 53, 69, 0.2);
62
+ color: #dc3545;
63
+ }
64
+
65
+ .action-btn {
66
+ width: 30px;
67
+ height: 30px;
68
+ display: inline-flex;
69
+ align-items: center;
70
+ justify-content: center;
71
+ border-radius: 50%;
72
+ margin: 0 2px;
73
+ transition: all 0.2s;
74
+ }
75
+
76
+ .action-btn:hover {
77
+ transform: scale(1.1);
78
+ }
79
+
80
+ .budget-detail-modal .modal-dialog {
81
+ max-width: 90%;
82
+ }
83
+
84
+ .history-item {
85
+ border-left: 3px solid #6c757d;
86
+ padding-left: 1rem;
87
+ margin-bottom: 1rem;
88
+ position: relative;
89
+ }
90
+
91
+ .history-item:last-child {
92
+ margin-bottom: 0;
93
+ }
94
+
95
+ .history-item::before {
96
+ content: '';
97
+ position: absolute;
98
+ left: -8px;
99
+ top: 5px;
100
+ width: 13px;
101
+ height: 13px;
102
+ border-radius: 50%;
103
+ background-color: #6c757d;
104
+ }
105
+
106
+ .history-item-success::before {
107
+ background-color: #198754;
108
+ }
109
+
110
+ .history-item-warning::before {
111
+ background-color: #ffc107;
112
+ }
113
+
114
+ .history-item-danger::before {
115
+ background-color: #dc3545;
116
+ }
117
+
118
+ .history-item-info::before {
119
+ background-color: #0dcaf0;
120
+ }
121
+ </style>
122
+ </head>
123
+ <body class="bg-dark text-light">
124
+ <div class="container-fluid py-4">
125
+ <!-- Header -->
126
+ <div class="d-flex justify-content-between align-items-center mb-4">
127
+ <h1 class="display-6 fw-bold">
128
+ <i class="bi bi-file-earmark-text me-2"></i> Orçamentos
129
+ </h1>
130
+ <button class="btn btn-primary" id="newBudgetBtn">
131
+ <i class="bi bi-plus-lg me-1"></i> Novo Orçamento
132
+ </button>
133
+ </div>
134
+
135
+ <!-- Search and Filter -->
136
+ <div class="card bg-dark border-secondary mb-4">
137
+ <div class="card-body">
138
+ <div class="row g-3">
139
+ <div class="col-md-3">
140
+ <label for="searchClient" class="form-label">Cliente</label>
141
+ <input type="text" class="form-control" id="searchClient" placeholder="Buscar por cliente...">
142
+ </div>
143
+ <div class="col-md-2">
144
+ <label for="searchSeller" class="form-label">Vendedor</label>
145
+ <select class="form-select" id="searchSeller">
146
+ <option value="">Todos</option>
147
+ <option>João Silva</option>
148
+ <option>Maria Souza</option>
149
+ <option>Carlos Oliveira</option>
150
+ </select>
151
+ </div>
152
+ <div class="col-md-2">
153
+ <label for="searchStatus" class="form-label">Status</label>
154
+ <select class="form-select" id="searchStatus">
155
+ <option value="">Todos</option>
156
+ <option>Em Elaboração</option>
157
+ <option>Aguardando Análise</option>
158
+ <option>Análise Concluída</option>
159
+ <option>Convertido em Pedido</option>
160
+ <option>Cancelado</option>
161
+ </select>
162
+ </div>
163
+ <div class="col-md-3">
164
+ <label for="searchDate" class="form-label">Período</label>
165
+ <input type="date" class="form-control" id="searchDate">
166
+ </div>
167
+ <div class="col-md-2 d-flex align-items-end">
168
+ <button class="btn btn-outline-secondary w-100" id="searchBtn">
169
+ <i class="bi bi-search me-1"></i> Filtrar
170
+ </button>
171
+ </div>
172
+ </div>
173
+ </div>
174
+ </div>
175
+
176
+ <!-- Budgets Table -->
177
+ <div class="card bg-dark border-secondary">
178
+ <div class="card-body">
179
+ <div class="table-responsive">
180
+ <table id="budgetsTable" class="table table-dark table-hover table-striped" style="width:100%">
181
+ <thead>
182
+ <tr>
183
+ <th>Número</th>
184
+ <th>Cliente</th>
185
+ <th>Vendedor</th>
186
+ <th>Criação</th>
187
+ <th>Validade</th>
188
+ <th>Status</th>
189
+ <th>Ações</th>
190
+ </tr>
191
+ </thead>
192
+ <tbody>
193
+ <tr>
194
+ <td>ORC-2023-001</td>
195
+ <td>Empresa ABC Ltda</td>
196
+ <td>João Silva</td>
197
+ <td>15/10/2023</td>
198
+ <td>30/10/2023</td>
199
+ <td><span class="status-badge status-convertido">Convertido em Pedido</span></td>
200
+ <td>
201
+ <button class="btn btn-sm btn-outline-info action-btn view-btn" title="Visualizar">
202
+ <i class="bi bi-eye"></i>
203
+ </button>
204
+ <button class="btn btn-sm btn-outline-warning action-btn edit-btn" title="Editar">
205
+ <i class="bi bi-pencil"></i>
206
+ </button>
207
+ <button class="btn btn-sm btn-outline-primary action-btn duplicate-btn" title="Duplicar">
208
+ <i class="bi bi-files"></i>
209
+ </button>
210
+ </td>
211
+ </tr>
212
+ <tr>
213
+ <td>ORC-2023-002</td>
214
+ <td>Comércio XYZ S/A</td>
215
+ <td>Maria Souza</td>
216
+ <td>18/10/2023</td>
217
+ <td>02/11/2023</td>
218
+ <td><span class="status-badge status-aguardando-analise">Aguardando Análise</span></td>
219
+ <td>
220
+ <button class="btn btn-sm btn-outline-info action-btn view-btn" title="Visualizar">
221
+ <i class="bi bi-eye"></i>
222
+ </button>
223
+ <button class="btn btn-sm btn-outline-warning action-btn edit-btn" title="Editar">
224
+ <i class="bi bi-pencil"></i>
225
+ </button>
226
+ <button class="btn btn-sm btn-outline-primary action-btn duplicate-btn" title="Duplicar">
227
+ <i class="bi bi-files"></i>
228
+ </button>
229
+ <button class="btn btn-sm btn-outline-success action-btn convert-btn" title="Converter em Pedido">
230
+ <i class="bi bi-cart-check"></i>
231
+ </button>
232
+ <button class="btn btn-sm btn-outline-danger action-btn cancel-btn" title="Cancelar">
233
+ <i class="bi bi-x-circle"></i>
234
+ </button>
235
+ </td>
236
+ </tr>
237
+ <tr>
238
+ <td>ORC-2023-003</td>
239
+ <td>Indústria 123 ME</td>
240
+ <td>Carlos Oliveira</td>
241
+ <td>20/10/2023</td>
242
+ <td>05/11/2023</td>
243
+ <td><span class="status-badge status-em-elaboracao">Em Elaboração</span></td>
244
+ <td>
245
+ <button class="btn btn-sm btn-outline-info action-btn view-btn" title="Visualizar">
246
+ <i class="bi bi-eye"></i>
247
+ </button>
248
+ <button class="btn btn-sm btn-outline-warning action-btn edit-btn" title="Editar">
249
+ <i class="bi bi-pencil"></i>
250
+ </button>
251
+ <button class="btn btn-sm btn-outline-primary action-btn duplicate-btn" title="Duplicar">
252
+ <i class="bi bi-files"></i>
253
+ </button>
254
+ <button class="btn btn-sm btn-outline-success action-btn convert-btn" title="Converter em Pedido">
255
+ <i class="bi bi-cart-check"></i>
256
+ </button>
257
+ <button class="btn btn-sm btn-outline-danger action-btn cancel-btn" title="Cancelar">
258
+ <i class="bi bi-x-circle"></i>
259
+ </button>
260
+ </td>
261
+ </tr>
262
+ <tr>
263
+ <td>ORC-2023-004</td>
264
+ <td>Serviços QWE EIRELI</td>
265
+ <td>João Silva</td>
266
+ <td>22/10/2023</td>
267
+ <td>07/11/2023</td>
268
+ <td><span class="status-badge status-analise-concluida">Análise Concluída</span></td>
269
+ <td>
270
+ <button class="btn btn-sm btn-outline-info action-btn view-btn" title="Visualizar">
271
+ <i class="bi bi-eye"></i>
272
+ </button>
273
+ <button class="btn btn-sm btn-outline-warning action-btn edit-btn" title="Editar">
274
+ <i class="bi bi-pencil"></i>
275
+ </button>
276
+ <button class="btn btn-sm btn-outline-primary action-btn duplicate-btn" title="Duplicar">
277
+ <i class="bi bi-files"></i>
278
+ </button>
279
+ <button class="btn btn-sm btn-outline-success action-btn convert-btn" title="Converter em Pedido">
280
+ <i class="bi bi-cart-check"></i>
281
+ </button>
282
+ <button class="btn btn-sm btn-outline-danger action-btn cancel-btn" title="Cancelar">
283
+ <i class="bi bi-x-circle"></i>
284
+ </button>
285
+ </td>
286
+ </tr>
287
+ <tr>
288
+ <td>ORC-2023-005</td>
289
+ <td>Comércio Popular</td>
290
+ <td>Maria Souza</td>
291
+ <td>25/10/2023</td>
292
+ <td>10/11/2023</td>
293
+ <td><span class="status-badge status-cancelado">Cancelado</span></td>
294
+ <td>
295
+ <button class="btn btn-sm btn-outline-info action-btn view-btn" title="Visualizar">
296
+ <i class="bi bi-eye"></i>
297
+ </button>
298
+ <button class="btn btn-sm btn-outline-primary action-btn duplicate-btn" title="Duplicar">
299
+ <i class="bi bi-files"></i>
300
+ </button>
301
+ </td>
302
+ </tr>
303
+ </tbody>
304
+ </table>
305
+ </div>
306
+ </div>
307
+ </div>
308
+ </div>
309
+
310
+ <!-- New Budget Offcanvas -->
311
+ <div class="offcanvas offcanvas-end" tabindex="-1" id="newBudgetOffcanvas" aria-labelledby="newBudgetOffcanvasLabel">
312
+ <div class="offcanvas-header bg-dark border-bottom border-secondary">
313
+ <h5 class="offcanvas-title" id="newBudgetOffcanvasLabel">Novo Orçamento</h5>
314
+ <button type="button" class="btn-close btn-close-white" data-bs-dismiss="offcanvas" aria-label="Close"></button>
315
+ </div>
316
+ <div class="offcanvas-body bg-dark">
317
+ <form id="newBudgetForm">
318
+ <div class="mb-3">
319
+ <label for="clientName" class="form-label">Cliente</label>
320
+ <select class="form-select" id="clientName" required>
321
+ <option value="" selected disabled>Selecione um cliente</option>
322
+ <option>Empresa ABC Ltda</option>
323
+ <option>Comércio XYZ S/A</option>
324
+ <option>Indústria 123 ME</option>
325
+ <option>Serviços QWE EIRELI</option>
326
+ <option>Comércio Popular</option>
327
+ </select>
328
+ </div>
329
+ <div class="mb-3">
330
+ <label for="sellerName" class="form-label">Vendedor</label>
331
+ <select class="form-select" id="sellerName" required>
332
+ <option value="" selected disabled>Selecione um vendedor</option>
333
+ <option>João Silva</option>
334
+ <option>Maria Souza</option>
335
+ <option>Carlos Oliveira</option>
336
+ </select>
337
+ </div>
338
+ <div class="mb-3">
339
+ <label for="validUntil" class="form-label">Validade (dias)</label>
340
+ <select class="form-select" id="validUntil" required>
341
+ <option value="7">7 dias</option>
342
+ <option value="10" selected>10 dias</option>
343
+ <option value="15">15 dias</option>
344
+ <option value="30">30 dias</option>
345
+ </select>
346
+ </div>
347
+ <div class="mb-3">
348
+ <label for="budgetNotes" class="form-label">Observações</label>
349
+ <textarea class="form-control" id="budgetNotes" rows="3"></textarea>
350
+ </div>
351
+ <div class="d-grid gap-2">
352
+ <button type="submit" class="btn btn-primary">
353
+ <i class="bi bi-save me-1"></i> Salvar Orçamento
354
+ </button>
355
+ <button type="button" class="btn btn-outline-secondary" data-bs-dismiss="offcanvas">
356
+ <i class="bi bi-x-lg me-1"></i> Cancelar
357
+ </button>
358
+ </div>
359
+ </form>
360
+ </div>
361
+ </div>
362
+
363
+ <!-- Budget Detail Modal -->
364
+ <div class="modal fade budget-detail-modal" id="budgetDetailModal" tabindex="-1" aria-labelledby="budgetDetailModalLabel" aria-hidden="true">
365
+ <div class="modal-dialog modal-xl">
366
+ <div class="modal-content bg-dark">
367
+ <div class="modal-header border-secondary">
368
+ <h5 class="modal-title" id="budgetDetailModalLabel">Detalhes do Orçamento ORC-2023-002</h5>
369
+ <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
370
+ </div>
371
+ <div class="modal-body">
372
+ <div class="row mb-4">
373
+ <div class="col-md-6">
374
+ <div class="card bg-dark border-secondary mb-3">
375
+ <div class="card-header bg-dark border-secondary">
376
+ <h6 class="mb-0"><i class="bi bi-building me-2"></i>Dados do Cliente</h6>
377
+ </div>
378
+ <div class="card-body">
379
+ <p class="mb-1"><strong>Nome:</strong> Comércio XYZ S/A</p>
380
+ <p class="mb-1"><strong>CNPJ:</strong> 12.345.678/0001-99</p>
381
+ <p class="mb-1"><strong>Endereço:</strong> Rua Exemplo, 123 - Centro - São Paulo/SP</p>
382
+ <p class="mb-1"><strong>Contato:</strong> (11) 99999-9999</p>
383
+ <p class="mb-0"><strong>Email:</strong> [email protected]</p>
384
+ </div>
385
+ </div>
386
+ </div>
387
+ <div class="col-md-6">
388
+ <div class="card bg-dark border-secondary mb-3">
389
+ <div class="card-header bg-dark border-secondary">
390
+ <h6 class="mb-0"><i class="bi bi-person-badge me-2"></i>Dados do Orçamento</h6>
391
+ </div>
392
+ <div class="card-body">
393
+ <div class="row">
394
+ <div class="col-md-6">
395
+ <p class="mb-1"><strong>Vendedor:</strong> Maria Souza</p>
396
+ <p class="mb-1"><strong>Data Criação:</strong> 18/10/2023</p>
397
+ <p class="mb-1"><strong>Data Validade:</strong> 02/11/2023</p>
398
+ </div>
399
+ <div class="col-md-6">
400
+ <p class="mb-1"><strong>Status:</strong> <span class="status-badge status-aguardando-analise">Aguardando Análise</span></p>
401
+ <p class="mb-1"><strong>Total:</strong> R$ 12.450,00</p>
402
+ <p class="mb-0"><strong>Desconto:</strong> 5%</p>
403
+ </div>
404
+ </div>
405
+ </div>
406
+ </div>
407
+ </div>
408
+ </div>
409
+
410
+ <div class="card bg-dark border-secondary mb-4">
411
+ <div class="card-header bg-dark border-secondary d-flex justify-content-between align-items-center">
412
+ <h6 class="mb-0"><i class="bi bi-cart me-2"></i>Itens do Orçamento</h6>
413
+ <button class="btn btn-sm btn-primary" id="addItemBtn">
414
+ <i class="bi bi-plus-lg me-1"></i> Adicionar Item
415
+ </button>
416
+ </div>
417
+ <div class="card-body">
418
+ <div class="table-responsive">
419
+ <table class="table table-dark table-hover" id="itemsTable">
420
+ <thead>
421
+ <tr>
422
+ <th>Produto</th>
423
+ <th>Categoria</th>
424
+ <th>Fornecedor</th>
425
+ <th>Quantidade</th>
426
+ <th>Valor Unitário</th>
427
+ <th>Total</th>
428
+ <th>Status</th>
429
+ <th>Ações</th>
430
+ </tr>
431
+ </thead>
432
+ <tbody>
433
+ <tr>
434
+ <td>Notebook Dell Inspiron 15</td>
435
+ <td>Informática</td>
436
+ <td>Dell Brasil</td>
437
+ <td>2</td>
438
+ <td>R$ 3.500,00</td>
439
+ <td>R$ 7.000,00</td>
440
+ <td><span class="badge bg-secondary">Pendente</span></td>
441
+ <td>
442
+ <button class="btn btn-sm btn-outline-warning action-btn edit-item-btn" title="Editar">
443
+ <i class="bi bi-pencil"></i>
444
+ </button>
445
+ <button class="btn btn-sm btn-outline-danger action-btn remove-item-btn" title="Remover">
446
+ <i class="bi bi-trash"></i>
447
+ </button>
448
+ </td>
449
+ </tr>
450
+ <tr>
451
+ <td>Monitor LG 24" Full HD</td>
452
+ <td>Informática</td>
453
+ <td>LG Eletronics</td>
454
+ <td>3</td>
455
+ <td>R$ 850,00</td>
456
+ <td>R$ 2.550,00</td>
457
+ <td><span class="badge bg-secondary">Pendente</span></td>
458
+ <td>
459
+ <button class="btn btn-sm btn-outline-warning action-btn edit-item-btn" title="Editar">
460
+ <i class="bi bi-pencil"></i>
461
+ </button>
462
+ <button class="btn btn-sm btn-outline-danger action-btn remove-item-btn" title="Remover">
463
+ <i class="bi bi-trash"></i>
464
+ </button>
465
+ </td>
466
+ </tr>
467
+ <tr>
468
+ <td>Impressora HP LaserJet</td>
469
+ <td>Informática</td>
470
+ <td>HP Brasil</td>
471
+ <td>1</td>
472
+ <td>R$ 1.200,00</td>
473
+ <td>R$ 1.200,00</td>
474
+ <td><span class="badge bg-secondary">Pendente</span></td>
475
+ <td>
476
+ <button class="btn btn-sm btn-outline-warning action-btn edit-item-btn" title="Editar">
477
+ <i class="bi bi-pencil"></i>
478
+ </button>
479
+ <button class="btn btn-sm btn-outline-danger action-btn remove-item-btn" title="Remover">
480
+ <i class="bi bi-trash"></i>
481
+ </button>
482
+ </td>
483
+ </tr>
484
+ <tr>
485
+ <td>Teclado e Mouse sem fio Logitech</td>
486
+ <td>Informática</td>
487
+ <td>Logitech</td>
488
+ <td>2</td>
489
+ <td>R$ 350,00</td>
490
+ <td>R$ 700,00</td>
491
+ <td><span class="badge bg-secondary">Pendente</span></td>
492
+ <td>
493
+ <button class="btn btn-sm btn-outline-warning action-btn edit-item-btn" title="Editar">
494
+ <i class="bi bi-pencil"></i>
495
+ </button>
496
+ <button class="btn btn-sm btn-outline-danger action-btn remove-item-btn" title="Remover">
497
+ <i class="bi bi-trash"></i>
498
+ </button>
499
+ </td>
500
+ </tr>
501
+ </tbody>
502
+ </table>
503
+ </div>
504
+ </div>
505
+ </div>
506
+
507
+ <div class="row mb-4">
508
+ <div class="col-md-6">
509
+ <div class="card bg-dark border-secondary">
510
+ <div class="card-header bg-dark border-secondary">
511
+ <h6 class="mb-0"><i class="bi bi-chat-left-text me-2"></i>Observações</h6>
512
+ </div>
513
+ <div class="card-body">
514
+ <p>Cliente solicitou entrega até o dia 30/10/2023. Possível desconto adicional se fechar o pedido esta semana.</p>
515
+ <textarea class="form-control mt-2" rows="3" placeholder="Adicionar observações..."></textarea>
516
+ </div>
517
+ </div>
518
+ </div>
519
+ <div class="col-md-6">
520
+ <div class="card bg-dark border-secondary">
521
+ <div class="card-header bg-dark border-secondary">
522
+ <h6 class="mb-0"><i class="bi bi-calculator me-2"></i>Resumo Financeiro</h6>
523
+ </div>
524
+ <div class="card-body">
525
+ <div class="d-flex justify-content-between mb-2">
526
+ <span>Subtotal:</span>
527
+ <span>R$ 11.450,00</span>
528
+ </div>
529
+ <div class="d-flex justify-content-between mb-2">
530
+ <span>Desconto (5%):</span>
531
+ <span>- R$ 572,50</span>
532
+ </div>
533
+ <div class="d-flex justify-content-between mb-2">
534
+ <span>Frete:</span>
535
+ <span>R$ 250,00</span>
536
+ </div>
537
+ <div class="d-flex justify-content-between fw-bold fs-5 border-top border-secondary pt-2">
538
+ <span>Total:</span>
539
+ <span>R$ 11.127,50</span>
540
+ </div>
541
+ </div>
542
+ </div>
543
+ </div>
544
+ </div>
545
+
546
+ <div class="card bg-dark border-secondary">
547
+ <div class="card-header bg-dark border-secondary">
548
+ <h6 class="mb-0"><i class="bi bi-clock-history me-2"></i>Histórico</h6>
549
+ </div>
550
+ <div class="card-body">
551
+ <div class="history-item history-item-success">
552
+ <div class="d-flex justify-content-between">
553
+ <strong>Orçamento criado</strong>
554
+ <small class="text-muted">18/10/2023 09:15</small>
555
+ </div>
556
+ <p class="mb-0">Por: Maria Souza</p>
557
+ </div>
558
+ <div class="history-item history-item-info">
559
+ <div class="d-flex justify-content-between">
560
+ <strong>Primeiro item adicionado</strong>
561
+ <small class="text-muted">18/10/2023 09:30</small>
562
+ </div>
563
+ <p class="mb-0">Notebook Dell Inspiron 15 - 2 unidades</p>
564
+ </div>
565
+ <div class="history-item history-item-info">
566
+ <div class="d-flex justify-content-between">
567
+ <strong>Itens adicionados</strong>
568
+ <small class="text-muted">18/10/2023 10:45</small>
569
+ </div>
570
+ <p class="mb-0">Monitor LG 24" Full HD - 3 unidades, Impressora HP LaserJet - 1 unidade</p>
571
+ </div>
572
+ <div class="history-item history-item-warning">
573
+ <div class="d-flex justify-content-between">
574
+ <strong>Enviado para análise</strong>
575
+ <small class="text-muted">18/10/2023 14:20</small>
576
+ </div>
577
+ <p class="mb-0">Status alterado para "Aguardando Análise"</p>
578
+ </div>
579
+ </div>
580
+ </div>
581
+ </div>
582
+ <div class="modal-footer border-secondary">
583
+ <button type="button" class="btn btn-success" id="sendToAnalysisBtn">
584
+ <i class="bi bi-send me-1"></i> Enviar para Análise de Compra
585
+ </button>
586
+ <button type="button" class="btn btn-danger" id="cancelBudgetBtn">
587
+ <i class="bi bi-x-circle me-1"></i> Cancelar Orçamento
588
+ </button>
589
+ <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
590
+ <i class="bi bi-x-lg me-1"></i> Fechar
591
+ </button>
592
+ </div>
593
+ </div>
594
+ </div>
595
+ </div>
596
+
597
+ <!-- Add/Edit Item Modal -->
598
+ <div class="modal fade" id="itemModal" tabindex="-1" aria-labelledby="itemModalLabel" aria-hidden="true">
599
+ <div class="modal-dialog">
600
+ <div class="modal-content bg-dark">
601
+ <div class="modal-header border-secondary">
602
+ <h5 class="modal-title" id="itemModalLabel">Adicionar Item</h5>
603
+ <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
604
+ </div>
605
+ <div class="modal-body">
606
+ <form id="itemForm">
607
+ <div class="mb-3">
608
+ <label for="productName" class="form-label">Produto</label>
609
+ <select class="form-select" id="productName" required>
610
+ <option value="" selected disabled>Selecione um produto</option>
611
+ <option>Notebook Dell Inspiron 15</option>
612
+ <option>Monitor LG 24" Full HD</option>
613
+ <option>Impressora HP LaserJet</option>
614
+ <option>Teclado e Mouse sem fio Logitech</option>
615
+ <option>HD Externo Seagate 1TB</option>
616
+ </select>
617
+ </div>
618
+ <div class="mb-3">
619
+ <label for="productCategory" class="form-label">Categoria</label>
620
+ <input type="text" class="form-control" id="productCategory" readonly>
621
+ </div>
622
+ <div class="mb-3">
623
+ <label for="supplier" class="form-label">Fornecedor</label>
624
+ <select class="form-select" id="supplier" required>
625
+ <option value="" selected disabled>Selecione um fornecedor</option>
626
+ <option>Dell Brasil</option>
627
+ <option>LG Eletronics</option>
628
+ <option>HP Brasil</option>
629
+ <option>Logitech</option>
630
+ <option>Seagate</option>
631
+ </select>
632
+ </div>
633
+ <div class="mb-3">
634
+ <label for="quantity" class="form-label">Quantidade</label>
635
+ <input type="number" class="form-control" id="quantity" min="1" value="1" required>
636
+ </div>
637
+ <div class="mb-3">
638
+ <label for="unitPrice" class="form-label">Valor Unitário</label>
639
+ <input type="text" class="form-control" id="unitPrice" required>
640
+ </div>
641
+ </form>
642
+ </div>
643
+ <div class="modal-footer border-secondary">
644
+ <button type="button" class="btn btn-primary" id="saveItemBtn">
645
+ <i class="bi bi-save me-1"></i> Salvar
646
+ </button>
647
+ <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
648
+ <i class="bi bi-x-lg me-1"></i> Cancelar
649
+ </button>
650
+ </div>
651
+ </div>
652
+ </div>
653
+ </div>
654
+
655
+ <!-- Bootstrap 5.3.2 JS Bundle with Popper -->
656
+ <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
657
+ <!-- jQuery -->
658
+ <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
659
+ <!-- DataTables JS -->
660
+ <script src="https://cdn.datatables.net/1.13.6/js/jquery.dataTables.min.js"></script>
661
+ <script src="https://cdn.datatables.net/1.13.6/js/dataTables.bootstrap5.min.js"></script>
662
+ <!-- SweetAlert2 JS -->
663
+ <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
664
+
665
+ <script>
666
+ $(document).ready(function() {
667
+ // Initialize DataTable
668
+ $('#budgetsTable').DataTable({
669
+ language: {
670
+ url: 'https://cdn.datatables.net/plug-ins/1.13.6/i18n/pt-BR.json'
671
+ },
672
+ responsive: true
673
+ });
674
+
675
+ // Initialize items table
676
+ $('#itemsTable').DataTable({
677
+ language: {
678
+ url: 'https://cdn.datatables.net/plug-ins/1.13.6/i18n/pt-BR.json'
679
+ },
680
+ responsive: true,
681
+ searching: false,
682
+ paging: false,
683
+ info: false
684
+ });
685
+
686
+ // New Budget Offcanvas
687
+ $('#newBudgetBtn').click(function() {
688
+ var newBudgetOffcanvas = new bootstrap.Offcanvas(document.getElementById('newBudgetOffcanvas'));
689
+ newBudgetOffcanvas.show();
690
+ });
691
+
692
+ // Form submission for new budget
693
+ $('#newBudgetForm').submit(function(e) {
694
+ e.preventDefault();
695
+
696
+ Swal.fire({
697
+ title: 'Sucesso!',
698
+ text: 'Orçamento criado com sucesso.',
699
+ icon: 'success',
700
+ confirmButtonText: 'OK'
701
+ }).then(() => {
702
+ var offcanvas = bootstrap.Offcanvas.getInstance(document.getElementById('newBudgetOffcanvas'));
703
+ offcanvas.hide();
704
+ $('#newBudgetForm')[0].reset();
705
+
706
+ // In a real app, you would refresh the table or add the new budget
707
+ });
708
+ });
709
+
710
+ // View Budget buttons
711
+ $('.view-btn').click(function() {
712
+ var budgetDetailModal = new bootstrap.Modal(document.getElementById('budgetDetailModal'));
713
+ budgetDetailModal.show();
714
+ });
715
+
716
+ // Edit Budget buttons
717
+ $('.edit-btn').click(function() {
718
+ // In a real app, this would open the edit mode
719
+ Swal.fire({
720
+ title: 'Editar Orçamento',
721
+ text: 'Você será redirecionado para a edição do orçamento.',
722
+ icon: 'info',
723
+ confirmButtonText: 'OK'
724
+ });
725
+ });
726
+
727
+ // Duplicate Budget buttons
728
+ $('.duplicate-btn').click(function() {
729
+ Swal.fire({
730
+ title: 'Duplicar Orçamento',
731
+ text: 'Tem certeza que deseja duplicar este orçamento?',
732
+ icon: 'question',
733
+ showCancelButton: true,
734
+ confirmButtonText: 'Sim, duplicar',
735
+ cancelButtonText: 'Cancelar'
736
+ }).then((result) => {
737
+ if (result.isConfirmed) {
738
+ Swal.fire(
739
+ 'Sucesso!',
740
+ 'Orçamento duplicado com sucesso.',
741
+ 'success'
742
+ );
743
+ }
744
+ });
745
+ });
746
+
747
+ // Convert to Order buttons
748
+ $('.convert-btn').click(function() {
749
+ Swal.fire({
750
+ title: 'Converter em Pedido',
751
+ text: 'Tem certeza que deseja converter este orçamento em pedido de venda?',
752
+ icon: 'question',
753
+ showCancelButton: true,
754
+ confirmButtonText: 'Sim, converter',
755
+ cancelButtonText: 'Cancelar'
756
+ }).then((result) => {
757
+ if (result.isConfirmed) {
758
+ Swal.fire(
759
+ 'Sucesso!',
760
+ 'Orçamento convertido em pedido de venda.',
761
+ 'success'
762
+ );
763
+ }
764
+ });
765
+ });
766
+
767
+ // Cancel Budget buttons
768
+ $('.cancel-btn').click(function() {
769
+ Swal.fire({
770
+ title: 'Cancelar Orçamento',
771
+ text: 'Tem certeza que deseja cancelar este orçamento? Esta ação não pode ser desfeita.',
772
+ icon: 'warning',
773
+ showCancelButton: true,
774
+ confirmButtonText: 'Sim, cancelar',
775
+ cancelButtonText: 'Manter orçamento',
776
+ confirmButtonColor: '#dc3545'
777
+ }).then((result) => {
778
+ if (result.isConfirmed) {
779
+ Swal.fire(
780
+ 'Cancelado!',
781
+ 'O orçamento foi cancelado.',
782
+ 'success'
783
+ );
784
+ }
785
+ });
786
+ });
787
+
788
+ // Add Item button in Budget Detail
789
+ $('#addItemBtn').click(function() {
790
+ $('#itemModalLabel').text('Adicionar Item');
791
+ $('#itemForm')[0].reset();
792
+ $('#productCategory').val('');
793
+
794
+ var itemModal = new bootstrap.Modal(document.getElementById('itemModal'));
795
+ itemModal.show();
796
+ });
797
+
798
+ // Edit Item buttons
799
+ $('.edit-item-btn').click(function() {
800
+ $('#itemModalLabel').text('Editar Item');
801
+
802
+ // In a real app, you would populate the form with the item data
803
+ $('#productName').val('Notebook Dell Inspiron 15');
804
+ $('#productCategory').val('Informática');
805
+ $('#supplier').val('Dell Brasil');
806
+ $('#quantity').val('2');
807
+ $('#unitPrice').val('3.500,00');
808
+
809
+ var itemModal = new bootstrap.Modal(document.getElementById('itemModal'));
810
+ itemModal.show();
811
+ });
812
+
813
+ // Remove Item buttons
814
+ $('.remove-item-btn').click(function() {
815
+ Swal.fire({
816
+ title: 'Remover Item',
817
+ text: 'Tem certeza que deseja remover este item do orçamento?',
818
+ icon: 'warning',
819
+ showCancelButton: true,
820
+ confirmButtonText: 'Sim, remover',
821
+ cancelButtonText: 'Manter item',
822
+ confirmButtonColor: '#dc3545'
823
+ }).then((result) => {
824
+ if (result.isConfirmed) {
825
+ Swal.fire(
826
+ 'Removido!',
827
+ 'O item foi removido do orçamento.',
828
+ 'success'
829
+ );
830
+ }
831
+ });
832
+ });
833
+
834
+ // Save Item button
835
+ $('#saveItemBtn').click(function() {
836
+ // Validate form
837
+ if ($('#itemForm')[0].checkValidity()) {
838
+ Swal.fire({
839
+ title: 'Sucesso!',
840
+ text: 'Item salvo com sucesso.',
841
+ icon: 'success',
842
+ confirmButtonText: 'OK'
843
+ }).then(() => {
844
+ var itemModal = bootstrap.Modal.getInstance(document.getElementById('itemModal'));
845
+ itemModal.hide();
846
+
847
+ // In a real app, you would add/update the item in the table
848
+ });
849
+ } else {
850
+ $('#itemForm')[0].reportValidity();
851
+ }
852
+ });
853
+
854
+ // Send to Analysis button
855
+ $('#sendToAnalysisBtn').click(function() {
856
+ Swal.fire({
857
+ title: 'Enviar para Análise',
858
+ text: 'Tem certeza que deseja enviar este orçamento para análise de compra?',
859
+ icon: 'question',
860
+ showCancelButton: true,
861
+ confirmButtonText: 'Sim, enviar',
862
+ cancelButtonText: 'Cancelar'
863
+ }).then((result) => {
864
+ if (result.isConfirmed) {
865
+ Swal.fire(
866
+ 'Enviado!',
867
+ 'O orçamento foi enviado para análise de compra.',
868
+ 'success'
869
+ );
870
+ }
871
+ });
872
+ });
873
+
874
+ // Cancel Budget button in detail modal
875
+ $('#cancelBudgetBtn').click(function() {
876
+ Swal.fire({
877
+ title: 'Cancelar Orçamento',
878
+ text: 'Tem certeza que deseja cancelar este orçamento? Esta ação não pode ser desfeita.',
879
+ icon: 'warning',
880
+ showCancelButton: true,
881
+ confirmButtonText: 'Sim, cancelar',
882
+ cancelButtonText: 'Manter orçamento',
883
+ confirmButtonColor: '#dc3545'
884
+ }).then((result) => {
885
+ if (result.isConfirmed) {
886
+ Swal.fire(
887
+ 'Cancelado!',
888
+ 'O orçamento foi cancelado.',
889
+ 'success'
890
+ ).then(() => {
891
+ var budgetDetailModal = bootstrap.Modal.getInstance(document.getElementById('budgetDetailModal'));
892
+ budgetDetailModal.hide();
893
+ });
894
+ }
895
+ });
896
+ });
897
+
898
+ // Product selection change
899
+ $('#productName').change(function() {
900
+ // In a real app, you would fetch the category from your database
901
+ var product = $(this).val();
902
+ var category = '';
903
+
904
+ if (product === 'Notebook Dell Inspiron 15' ||
905
+ product === 'Monitor LG 24" Full HD' ||
906
+ product === 'Impressora HP LaserJet' ||
907
+ product === 'Teclado e Mouse sem fio Logitech') {
908
+ category = 'Informática';
909
+ } else if (product === 'HD Externo Seagate 1TB') {
910
+ category = 'Armazenamento';
911
+ }
912
+
913
+ $('#productCategory').val(category);
914
+ });
915
+ });
916
+ </script>
917
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=gallabs/tom-system-orcamento-bootstrap532" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
918
+ </html>
prompts.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ Crie uma interface web responsiva para o cadastro e gerenciamento de "Orçamentos" utilizando HTML, CSS e JavaScript puro (pode usar Bootstrap 5 se desejar). A tela deve conter: - Título: "Orçamentos" - Um botão para "Novo Orçamento" - No botão `Novo Orçamento`, por favor abra um offcanvas, com 1/3 de largura em relação à tela principal. - Abra o OffCanvas da direita para a esquerda (right offcanvas) de forma suave. - Uma tabela para listar orçamentos existentes com as colunas: - Número do Orçamento - Nome do Cliente Potencial - Vendedor Responsável - Data de Criação - Data de Validade - Status do Orçamento (ex: Em Elaboração, Aguardando Análise, Análise Concluída, Convertido em Pedido de Venda, Cancelado) - Ações (Visualizar, Editar, Duplicar, Cancelar, Converter em Pedido de Venda) - Um campo de busca/filtro por cliente, vendedor, status e data. - Ao clicar em "Visualizar" ou "Editar", abrir um modal ou ir para uma nova tela com os detalhes completos do Orçamento, incluindo: - Dados do Cliente Potencial - Vendedor Responsável - Status, Observações - Lista de itens do orçamento, com as colunas: - Produto (Nome) - Categoria do Produto - Fornecedor Sugerido - Quantidade - Valor Unitário Orçado - Status do Item (Pendente, Aprovado para Compra, etc.) - Ações por item (Editar, Remover) - Botão para "Adicionar Item", que abre um formulário inline ou modal para seleção de Produto, Fornecedor, Quantidade e Valor. - Botão para "Enviar para Análise de Compra" - Botão para "Cancelar Orçamento" - Histórico de eventos/ações do orçamento no final da tela - Alertas de Confirmações devem usar o SweetAlert2. - Para as tabelas, utilize o datatables. - Interface deve ser moderna, clean, responsiva, com feedback visual nas ações (sucesso/erro). - Utilize ícones modernos (FontAwesome ou Bootstrap Icons), cores suaves e espaçamento adequado. - Por favor, gere no modo dark (tema escuro). - Ao invés de usar `tailwindcss`, por favor, utilize o `Bootstrap 5.3.2`.