zatca_2_invoice_generator 9.0.0 copy "zatca_2_invoice_generator: ^9.0.0" to clipboard
zatca_2_invoice_generator: ^9.0.0 copied to clipboard

Plugin for generating ZATCA 2 invoice QR code

example/lib/main.dart

import 'package:example/zatca_constants.dart';
import 'package:flutter/material.dart';
import 'package:zatca_2_invoice_generator/zatca_2_invoice_generator.dart';

void main() {
  initZacta();
  runApp(MyApp());
}

void initZacta() {
  ZatcaManager.instance.initializeZacta(
    sellerName: ZatcaConstants.companyName,
    sellerTRN: ZatcaConstants.taxRegistrationNumber,
    privateKeyBase64: ZatcaConstants.privateKeyBase64,
    certificateBase64: ZatcaConstants.certificateBase64,
    supplier: Supplier(
      companyID: ZatcaConstants.commercialRegistrationNumber,
      registrationName: ZatcaConstants.taxRegistrationNumber,
      address: Address(
        streetName: ZatcaConstants.street,
        buildingNumber: ZatcaConstants.buildingNumber,
        citySubdivisionName: ZatcaConstants.area,
        cityName: ZatcaConstants.cityName,
        postalZone: ZatcaConstants.postalZone,
      ),
    ),
  );
}

class MyApp extends StatelessWidget {
  MyApp({super.key});

  final qrDataModel = ZatcaManager.instance.generateZatcaQrInit(
    totalVat: "45.0",
    totalWithVat: "300.0",
    issueDate: "2024-01-17",
    issueTime: "05:41:08",
    invoiceUUid: "8e6000cf-1a98-4174-b3e7-b5d5954bc10d",
    invoiceNumber: "INV0001",
    invoiceLines: [
      InvoiceLine(
        id: '1',
        quantity: '10',
        unitCode: 'PCE',
        lineExtensionAmount: '100.00',
        itemName: 'Item 1',
        taxPercent: '15',
      ),
      InvoiceLine(
        id: '2',
        quantity: '1',
        unitCode: 'PCE',
        lineExtensionAmount: '200.00',
        itemName: 'Item 1',
        taxPercent: '15',
      ),
    ],
    invoiceType: ZatcaConstants.invoiceType,
  );

  @override
  Widget build(BuildContext context) {
    final content = ZatcaManager.instance.getQrCodeContent(qrDataModel);
    return MaterialApp(
      title: 'Zatca Phase 2 Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: Scaffold(
        appBar: AppBar(
          backgroundColor: Theme.of(context).colorScheme.inversePrimary,
          title: const Text('Zatca Phase 2 Demo'),
        ),
        body: Column(
          mainAxisAlignment: MainAxisAlignment.spaceAround,
          children: [
            Text(
              "Using Content Only",
              style: TextStyle(
                color: Colors.black,
                fontSize: 20,
              ),
            ),
            SizedBox(
              height: 200,
              width: 200,
              child: PrettyQrView.data(
                data: content,
                decoration: const PrettyQrDecoration(),
              ),
            ),
            Text(
              "Using Full Widget",
              style: TextStyle(
                color: Colors.black,
                fontSize: 20,
              ),
            ),
            Center(
              child: Zatca2InvoiceQrGenerator(qrDataModel: qrDataModel),
            ),
          ],
        ),
      ),
    );
  }
}
10
likes
115
points
10
downloads

Publisher

unverified uploader

Weekly Downloads

Plugin for generating ZATCA 2 invoice QR code

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

asn1lib, convert, crypto, flutter, plugin_platform_interface, pointycastle, pretty_qr_code, qr_bar_code, xml

More

Packages that depend on zatca_2_invoice_generator