feat: Add data-entry-app for fiscal receipts with approval workflow
New application for entering fiscal receipts (bonuri fiscale) with: Backend (FastAPI + SQLModel + Alembic): - Receipt, ReceiptAttachment, AccountingEntry models - CRUD operations with async SQLite database - Workflow: DRAFT → PENDING_REVIEW → APPROVED/REJECTED - Auto-generation of accounting entries with VAT calculation - File upload support (images, PDFs) - Predefined expense types (Fuel, Materials, Office, etc.) - Nomenclature service for partners, accounts, cash registers Frontend (Vue.js 3 + PrimeVue + Pinia): - ReceiptsListView with filters and stats - ReceiptCreateView with image upload - ReceiptDetailView with accounting entries - ReceiptApprovalView for accountant approval Documentation: - REQUIREMENTS.md with functional specifications - ARCHITECTURE.md with technical decisions - CLAUDE.md for AI assistant guidance Phase 1 MVP uses SQLite, prepared for Oracle integration in Phase 2. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
81
data-entry-app/frontend/src/main.js
Normal file
81
data-entry-app/frontend/src/main.js
Normal file
@@ -0,0 +1,81 @@
|
||||
import { createApp } from 'vue'
|
||||
import { createPinia } from 'pinia'
|
||||
import PrimeVue from 'primevue/config'
|
||||
import ToastService from 'primevue/toastservice'
|
||||
import ConfirmationService from 'primevue/confirmationservice'
|
||||
|
||||
import App from './App.vue'
|
||||
import router from './router'
|
||||
|
||||
// PrimeVue components
|
||||
import Button from 'primevue/button'
|
||||
import InputText from 'primevue/inputtext'
|
||||
import InputNumber from 'primevue/inputnumber'
|
||||
import Dropdown from 'primevue/dropdown'
|
||||
import Calendar from 'primevue/calendar'
|
||||
import Textarea from 'primevue/textarea'
|
||||
import DataTable from 'primevue/datatable'
|
||||
import Column from 'primevue/column'
|
||||
import Dialog from 'primevue/dialog'
|
||||
import Toast from 'primevue/toast'
|
||||
import ConfirmDialog from 'primevue/confirmdialog'
|
||||
import FileUpload from 'primevue/fileupload'
|
||||
import Image from 'primevue/image'
|
||||
import Tag from 'primevue/tag'
|
||||
import Card from 'primevue/card'
|
||||
import TabView from 'primevue/tabview'
|
||||
import TabPanel from 'primevue/tabpanel'
|
||||
import Checkbox from 'primevue/checkbox'
|
||||
import RadioButton from 'primevue/radiobutton'
|
||||
import ProgressSpinner from 'primevue/progressspinner'
|
||||
import Badge from 'primevue/badge'
|
||||
import Toolbar from 'primevue/toolbar'
|
||||
import Divider from 'primevue/divider'
|
||||
|
||||
// PrimeVue styles
|
||||
import 'primevue/resources/themes/lara-light-blue/theme.css'
|
||||
import 'primevue/resources/primevue.min.css'
|
||||
import 'primeicons/primeicons.css'
|
||||
|
||||
// Custom styles
|
||||
import './assets/css/main.css'
|
||||
|
||||
const app = createApp(App)
|
||||
|
||||
// Pinia store
|
||||
app.use(createPinia())
|
||||
|
||||
// Router
|
||||
app.use(router)
|
||||
|
||||
// PrimeVue
|
||||
app.use(PrimeVue, { ripple: true })
|
||||
app.use(ToastService)
|
||||
app.use(ConfirmationService)
|
||||
|
||||
// Register PrimeVue components globally
|
||||
app.component('Button', Button)
|
||||
app.component('InputText', InputText)
|
||||
app.component('InputNumber', InputNumber)
|
||||
app.component('Dropdown', Dropdown)
|
||||
app.component('Calendar', Calendar)
|
||||
app.component('Textarea', Textarea)
|
||||
app.component('DataTable', DataTable)
|
||||
app.component('Column', Column)
|
||||
app.component('Dialog', Dialog)
|
||||
app.component('Toast', Toast)
|
||||
app.component('ConfirmDialog', ConfirmDialog)
|
||||
app.component('FileUpload', FileUpload)
|
||||
app.component('Image', Image)
|
||||
app.component('Tag', Tag)
|
||||
app.component('Card', Card)
|
||||
app.component('TabView', TabView)
|
||||
app.component('TabPanel', TabPanel)
|
||||
app.component('Checkbox', Checkbox)
|
||||
app.component('RadioButton', RadioButton)
|
||||
app.component('ProgressSpinner', ProgressSpinner)
|
||||
app.component('Badge', Badge)
|
||||
app.component('Toolbar', Toolbar)
|
||||
app.component('Divider', Divider)
|
||||
|
||||
app.mount('#app')
|
||||
Reference in New Issue
Block a user