start working on VAT XMLs...

This commit is contained in:
Joerg Lehmann 2023-12-29 17:35:53 +01:00
parent 8580faefab
commit 9684daedb6
2 changed files with 98 additions and 8 deletions

View File

@ -13,6 +13,7 @@ import (
"sort" "sort"
"strconv" "strconv"
"strings" "strings"
"text/template"
"time" "time"
) )
@ -36,6 +37,17 @@ type Balance struct {
balance_end float64 balance_end float64
} }
type Data struct {
GenerationTime string
ReportingPeriodFrom string
ReportingPeriodTill string
BusinessReferenceId string
TotalConsideration string
DataTaxRates map[string]string
InputTaxInvestments string
PayableTax string
}
/* global variable declaration */ /* global variable declaration */
var pdf *fpdf.Fpdf var pdf *fpdf.Fpdf
var yPos float64 var yPos float64
@ -475,6 +487,35 @@ func calculateProfit() float64 {
} }
func outputMwst(whatquarter string) {
fmt.Printf("Create Mwst Report for %s\n", whatquarter)
tm := time.Now()
gmt_location := time.FixedZone("GMT", 0)
var data Data
data.GenerationTime = fmt.Sprintf("%s", tm.In(gmt_location).Format("2006-01-02T15:04:05Z"))
data.ReportingPeriodFrom = "2022-01-01"
data.ReportingPeriodFrom = "2022-03-31"
data.BusinessReferenceId = "ef1q2024_20220101_20220331_1"
data.TotalConsideration = "43517.04"
data.DataTaxRates = map[string]string{"7.70": "43517.04", "8.0": "Test only"}
data.InputTaxInvestments = "174.09"
data.PayableTax = "3176.72"
tmp, err := template.ParseFiles("vat_xml.tmpl")
if err != nil {
log.Fatal(err)
}
err2 := tmp.Execute(os.Stdout, data)
if err2 != nil {
log.Fatal(err2)
}
}
func usage() { func usage() {
fmt.Printf("usage: bookkeeper <action> <accounts file> <transactions file>\n") fmt.Printf("usage: bookkeeper <action> <accounts file> <transactions file>\n")
fmt.Printf("\n") fmt.Printf("\n")
@ -503,14 +544,9 @@ func main() {
createBalanceSheet() createBalanceSheet()
case "journal": case "journal":
fmt.Println("Create Journal") fmt.Println("Create Journal")
case "mwst1": case "mwst1", "mwst2", "mwst3", "mwst4":
fmt.Println("Create Mwst1") fmt.Println("Create Mwst Quarterly Report")
case "mstw2": outputMwst(action)
fmt.Println("Create Mwst2")
case "mwst3":
fmt.Println("Create Mwst3")
case "mwst4":
fmt.Println("Create Mwst4")
case "new_year": case "new_year":
fmt.Println("Create New Year") fmt.Println("Create New Year")
default: default:

54
vat_xml.tmpl Normal file
View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<eCH-0217:VATDeclaration xsi:schemaLocation="http://www.ech.ch/xmlns/eCH-0217/1 eCH-0217-1-0.xsd" xmlns:eCH-0217="http://www.ech.ch/xmlns/eCH-0217/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:eCH-0097="http://www.ech.ch/xmlns/eCH-0097/3" xmlns:eCH-0058="http://www.ech.ch/xmlns/eCH-0058/5">
<eCH-0217:generalInformation>
<eCH-0217:uid>
<eCH-0097:uidOrganisationIdCategorie>CHE</eCH-0097:uidOrganisationIdCategorie>
<eCH-0097:uidOrganisationId>105687350</eCH-0097:uidOrganisationId>
</eCH-0217:uid>
<eCH-0217:organisationName>nbit Informatik GmbH</eCH-0217:organisationName>
<eCH-0217:generationTime>{{.GenerationTime}}</eCH-0217:generationTime>
<eCH-0217:reportingPeriodFrom>{{.ReportingPeriodFrom}}</eCH-0217:reportingPeriodFrom>
<eCH-0217:reportingPeriodTill>{{.ReportingPeriodTill}}</eCH-0217:reportingPeriodTill>
<eCH-0217:typeOfSubmission>1</eCH-0217:typeOfSubmission>
<eCH-0217:formOfReporting>1</eCH-0217:formOfReporting>
<eCH-0217:businessReferenceId>{{.BusinessReferenceId}}</eCH-0217:businessReferenceId>
<eCH-0217:sendingApplication>
<eCH-0058:manufacturer>nbit Informatik GmbH</eCH-0058:manufacturer>
<eCH-0058:product>bookkeeper</eCH-0058:product>
<eCH-0058:productVersion>1.0</eCH-0058:productVersion>
</eCH-0217:sendingApplication>
</eCH-0217:generalInformation>
<eCH-0217:turnoverComputation>
<eCH-0217:totalConsideration>{{.TotalConsideration}}</eCH-0217:totalConsideration>
<eCH-0217:suppliesToForeignCountries>0.00</eCH-0217:suppliesToForeignCountries>
<eCH-0217:suppliesAbroad>0.00</eCH-0217:suppliesAbroad>
<eCH-0217:transferNotificationProcedure>0.00</eCH-0217:transferNotificationProcedure>
<eCH-0217:suppliesExemptFromTax>0.00</eCH-0217:suppliesExemptFromTax>
<eCH-0217:reductionOfConsideration>0.00</eCH-0217:reductionOfConsideration>
<eCH-0217:variousDeduction>
<eCH-0217:amountVariousDeduction>0.00</eCH-0217:amountVariousDeduction>
<eCH-0217:descriptionVariousDeduction/>
</eCH-0217:variousDeduction>
</eCH-0217:turnoverComputation>
<eCH-0217:effectiveReportingMethod>
<eCH-0217:grossOrNet>1</eCH-0217:grossOrNet>
<eCH-0217:opted>0.00</eCH-0217:opted>
{{ range $key, $value := .DataTaxRates -}}
<eCH-0217:suppliesPerTaxRate>
<eCH-0217:taxRate>{{ $key }}</eCH-0217:taxRate>
<eCH-0217:turnover>{{ $value }}</eCH-0217:turnover>
</eCH-0217:suppliesPerTaxRate>
{{ end -}}
<eCH-0217:inputTaxMaterialAndServices>0.00</eCH-0217:inputTaxMaterialAndServices>
<eCH-0217:inputTaxInvestments>{{.InputTaxInvestments}}</eCH-0217:inputTaxInvestments>
<eCH-0217:subsequentInputTaxDeduction>0.00</eCH-0217:subsequentInputTaxDeduction>
<eCH-0217:inputTaxCorrections>0.00</eCH-0217:inputTaxCorrections>
<eCH-0217:inputTaxReductions>0.00</eCH-0217:inputTaxReductions>
</eCH-0217:effectiveReportingMethod>
<eCH-0217:payableTax>{{.PayableTax}}</eCH-0217:payableTax>
<eCH-0217:otherFlowsOfFunds>
<eCH-0217:subsidies>0.00</eCH-0217:subsidies>
<eCH-0217:donations>0.00</eCH-0217:donations>
</eCH-0217:otherFlowsOfFunds>
</eCH-0217:VATDeclaration>