Bladeren bron

fix tax obligations location

Matthew Trejo 1 maand geleden
bovenliggende
commit
f32a887f7c

BIN
prisma/dev.db


+ 14 - 13
prisma/schema.prisma

@@ -11,19 +11,20 @@ datasource db {
 }
 
 model ConfiguracionTributaria {
-  id                String @id @default(cuid())
-  ambiente          String // "1" para pruebas, "2" para producción
-  tipoEmision       String // "1" para normal
-  razonSocial       String
-  nombreComercial   String
-  ruc               String @unique
-  dirMatriz         String
-  estab             String // establecimiento
-  ptoEmi            String // punto de emisión
-  secuencial        String // secuencial actual
-  activo            Boolean @default(true)
-  createdAt         DateTime @default(now())
-  updatedAt         DateTime @updatedAt
+  id                    String @id @default(cuid())
+  ambiente              String // "1" para pruebas, "2" para producción
+  tipoEmision           String // "1" para normal
+  razonSocial           String
+  nombreComercial       String
+  ruc                   String @unique
+  dirMatriz             String
+  estab                 String // establecimiento
+  ptoEmi                String // punto de emisión
+  secuencial            String // secuencial actual
+  obligadoContabilidad  String @default("NO") // "SI" o "NO"
+  activo                Boolean @default(true)
+  createdAt             DateTime @default(now())
+  updatedAt             DateTime @updatedAt
 
   @@map("configuraciones_tributarias")
 }

+ 26 - 3
src/components/configuracion/ConfiguracionTributariaManager.tsx

@@ -39,6 +39,7 @@ export function ConfiguracionTributariaManager() {
     estab: '001',
     ptoEmi: '001',
     secuencial: '000000001',
+    obligadoContabilidad: 'NO',
     activo: true,
   })
 
@@ -53,6 +54,7 @@ export function ConfiguracionTributariaManager() {
       estab: '001',
       ptoEmi: '001',
       secuencial: '000000001',
+      obligadoContabilidad: 'NO',
       activo: true,
     })
   }
@@ -132,6 +134,7 @@ export function ConfiguracionTributariaManager() {
       estab: config.estab,
       ptoEmi: config.ptoEmi,
       secuencial: config.secuencial,
+      obligadoContabilidad: config.obligadoContabilidad || 'NO',
       activo: config.activo,
     })
   }
@@ -281,7 +284,11 @@ export function ConfiguracionTributariaManager() {
                     <Label className="mt-2 text-muted-foreground">Secuencial</Label>
                     <p>{config.secuencial}</p>
                   </div>
-                  <div className="col-span-2 md:col-span-4">
+                  <div>
+                    <Label className="mt-2 text-muted-foreground">Obligado Contabilidad</Label>
+                    <p>{config.obligadoContabilidad || 'NO'}</p>
+                  </div>
+                  <div className="col-span-2 md:col-span-3">
                     <Label className="mt-2 text-muted-foreground">Dirección Matriz</Label>
                     <p>{config.dirMatriz}</p>
                   </div>
@@ -449,7 +456,7 @@ function ConfiguracionForm({ formData, setFormData, onSave, onCancel, isEdit = f
           />
         </div>
         
-        <div className="space-y-2 md:col-span-2">
+        <div className="space-y-2">
           <Label htmlFor="dirMatriz">Dirección Matriz *</Label>
           <Input
             id="dirMatriz"
@@ -458,7 +465,23 @@ function ConfiguracionForm({ formData, setFormData, onSave, onCancel, isEdit = f
             placeholder="Av. Principal 123 y Secundaria"
           />
         </div>
-        
+
+        <div className="space-y-2">
+          <Label htmlFor="obligadoContabilidad">Obligado a Llevar Contabilidad *</Label>
+          <Select
+            value={formData.obligadoContabilidad}
+            onValueChange={(value) => setFormData({ ...formData, obligadoContabilidad: value })}
+          >
+            <SelectTrigger>
+              <SelectValue />
+            </SelectTrigger>
+            <SelectContent>
+              <SelectItem value="SI">SI</SelectItem>
+              <SelectItem value="NO">NO</SelectItem>
+            </SelectContent>
+          </Select>
+        </div>
+
         {isEdit && (
           <div className="flex items-center space-x-2">
             <Switch

+ 1 - 14
src/components/factura/InfoFacturaForm.tsx

@@ -47,20 +47,7 @@ export function InfoFacturaForm({ infoFactura, onChange }: InfoFacturaFormProps)
               placeholder="Teléfono del comprador"
             />
           </div>
-          
-          <div className="space-y-2">
-            <Label htmlFor="obligadoContabilidad">Obligado Contabilidad</Label>
-            <Select value={infoFactura.obligadoContabilidad} onValueChange={(value) => onChange('obligadoContabilidad', value)}>
-              <SelectTrigger>
-                <SelectValue />
-              </SelectTrigger>
-              <SelectContent>
-                <SelectItem value="SI">SI</SelectItem>
-                <SelectItem value="NO">NO</SelectItem>
-              </SelectContent>
-            </Select>
-          </div>
-          
+
           <div className="space-y-2">
             <Label htmlFor="tipoIdentificacionComprador">Tipo Identificación Comprador</Label>
             <Select value={infoFactura.tipoIdentificacionComprador} onValueChange={(value) => onChange('tipoIdentificacionComprador', value)}>

+ 15 - 1
src/components/factura/InfoTributariaForm.tsx

@@ -27,6 +27,7 @@ export function InfoTributariaForm({ infoTributaria, onChange }: InfoTributariaF
     onChange('estab', config.estab)
     onChange('ptoEmi', config.ptoEmi)
     onChange('secuencial', config.secuencial)
+    onChange('obligadoContabilidad', config.obligadoContabilidad || 'NO')
     // Nota: claveAcceso se genera automáticamente al crear el XML
   }
 
@@ -159,7 +160,7 @@ export function InfoTributariaForm({ infoTributaria, onChange }: InfoTributariaF
             />
           </div>
           
-          <div className="space-y-2 lg:col-span-3">
+          <div className="space-y-2 lg:col-span-2">
             <Label htmlFor="dirMatriz">Dirección Matriz *</Label>
             <Input
               id="dirMatriz"
@@ -168,6 +169,19 @@ export function InfoTributariaForm({ infoTributaria, onChange }: InfoTributariaF
               placeholder="Av. Principal 123 y Secundaria"
             />
           </div>
+
+          <div className="space-y-2">
+            <Label htmlFor="obligadoContabilidad">Obligado a Llevar Contabilidad *</Label>
+            <Select value={infoTributaria.obligadoContabilidad} onValueChange={(value) => onChange('obligadoContabilidad', value)}>
+              <SelectTrigger>
+                <SelectValue />
+              </SelectTrigger>
+              <SelectContent>
+                <SelectItem value="SI">SI</SelectItem>
+                <SelectItem value="NO">NO</SelectItem>
+              </SelectContent>
+            </Select>
+          </div>
         </div>
       </CardContent>
     </Card>

+ 2 - 2
src/hooks/factura/useFacturaState.ts

@@ -12,13 +12,13 @@ export function useFacturaState() {
     estab: '001',
     ptoEmi: '001',
     secuencial: '000000001',
-    dirMatriz: ''
+    dirMatriz: '',
+    obligadoContabilidad: 'NO'
   })
 
   const [infoFactura, setInfoFactura] = useState<InfoFactura>({
     fechaEmision: new Date().toISOString().split('T')[0],
     dirEstablecimiento: '',
-    obligadoContabilidad: 'SI',
     tipoIdentificacionComprador: '04',
     razonSocialComprador: '',
     identificacionComprador: '',

+ 1 - 1
src/hooks/factura/useXmlGeneration.ts

@@ -58,7 +58,7 @@ export function useXmlGeneration() {
   <infoFactura>
     <fechaEmision>${formatDateForSRI(infoFactura.fechaEmision)}</fechaEmision>
     <dirEstablecimiento>${infoFactura.dirEstablecimiento}</dirEstablecimiento>
-    <obligadoContabilidad>${infoFactura.obligadoContabilidad}</obligadoContabilidad>
+    <obligadoContabilidad>${infoTributaria.obligadoContabilidad}</obligadoContabilidad>
     <tipoIdentificacionComprador>${infoFactura.tipoIdentificacionComprador}</tipoIdentificacionComprador>
     <razonSocialComprador>${infoFactura.razonSocialComprador}</razonSocialComprador>
     <identificacionComprador>${infoFactura.identificacionComprador}</identificacionComprador>

+ 1 - 1
src/lib/factura/xml-generator.ts

@@ -27,7 +27,7 @@ export class XmlGenerator {
   <infoFactura>
     <fechaEmision>${formatDateForSRI(infoFactura.fechaEmision)}</fechaEmision>
     <dirEstablecimiento>${infoFactura.dirEstablecimiento}</dirEstablecimiento>
-    <obligadoContabilidad>${infoFactura.obligadoContabilidad}</obligadoContabilidad>
+    <obligadoContabilidad>${infoTributaria.obligadoContabilidad}</obligadoContabilidad>
     <tipoIdentificacionComprador>${infoFactura.tipoIdentificacionComprador}</tipoIdentificacionComprador>
     <razonSocialComprador>${infoFactura.razonSocialComprador}</razonSocialComprador>
     <identificacionComprador>${infoFactura.identificacionComprador}</identificacionComprador>

+ 1 - 1
src/types/factura.ts

@@ -9,12 +9,12 @@ export interface InfoTributaria {
   ptoEmi: string
   secuencial: string
   dirMatriz: string
+  obligadoContabilidad: string
 }
 
 export interface InfoFactura {
   fechaEmision: string
   dirEstablecimiento: string
-  obligadoContabilidad: string
   tipoIdentificacionComprador: string
   razonSocialComprador: string
   identificacionComprador: string