func (b Caixa) Layout(w http.ResponseWriter, d Document) {
	var barcode Barcode = b.Barcode(d)
	layout, _ := template.ParseFiles("templates/caixa.html")
	layout.ExecuteTemplate(w, "caixa", map[string]interface{}{
		"Barcode": barcode,
		"Document": d,
		"Bank": b,
	})
}
Layout return a HTML template using a document
package boleto
import (
	"html/template"
	"net/http"
	"fmt"
	"strconv"
)
type Caixa struct {
	Agency                int
	Account               int
	Carteira              string
	Company               Company
}
var configCaixa = bankConfig{
	Id:           104,
	Aceite:       "N",
	Currency:     9,
	CurrencyName: "R$",
	AccountMaxSize: 6,
}
func (b Caixa) Barcode(d Document) Barcode {
	if b.Carteira != "RG" {
		panic("Bank.Carteira only supported is 'RG'")
	}
	var bn string
	ourNumberSize := len(strconv.Itoa(d.OurNumber))
	if ourNumberSize > 15 {
		panic("Document.OurNumber max of 15 digits")
	}
	codeModule := module11("14"+strconv.Itoa(d.OurNumber))
	var code string
	code += fmt.Sprintf("%015d", d.OurNumber)
	code += strconv.Itoa(codeModule)
	codeModuleAccount := module11(strconv.Itoa(b.Account))
	bn += fmt.Sprintf("%0"+strconv.Itoa(configCaixa.AccountMaxSize)+"d", b.Account)
	bn += strconv.Itoa(codeModuleAccount)
	bn += code[2:5] + "1"
	bn += code[5:8] + "4"
	bn += code[8:17]
	codeModuleBn := module11(bn)
	bn += strconv.Itoa(codeModuleBn)
	var n Barcode = &BarcodeNumber{
		BankId:        configCaixa.Id,
		CurrencyId:    configCaixa.Currency,
		DateDueFactor: dateDueFactor(d.DateDue),
		Value:         d.Value,
		BankNumbers: fmt.Sprintf("%0"+strconv.Itoa(bankNumbersSize)+"s", bn),
	}
	n.verification()
	return n
}
func (b Caixa) Transference(d Document) {
}