Ejemplo n.º 1
0
def generatepdf417():
    enc = encode(director, columns=15, security_level=7)
    name_417 = "first417.jpg"
    image_render = render_image(enc)

    image_render.show()
    image_render.save(name_417)
Ejemplo n.º 2
0
	def _generate_png_ted(self, ted_string):
		unique = 1
		filename = str(unique) + 'barcode.png'
		filepath = FILE_DIR + '/../temp/' + filename
		codes = pdf417.encode(ted_string, columns=10, security_level=5)
		image = pdf417.render_image(codes, scale=3, ratio=3, padding=5)  # Pillow Image object
		image.save(filepath)
		return filepath
Ejemplo n.º 3
0
def test_render_image():
    width, height = barcode_size(codes)

    image = render_image(codes)
    assert isinstance(image, Image)

    image = render_image(codes, scale=1, ratio=1, padding=0)
    assert image.size == (width, height)

    image = render_image(codes, scale=2, ratio=1, padding=0)
    assert image.size == (2 * width, 2 * height)

    image = render_image(codes, scale=2, ratio=2, padding=0)
    assert image.size == (2 * width, 4 * height)

    image = render_image(codes, scale=2, ratio=2, padding=20)
    assert image.size == (2 * width + 40, 4 * height + 40)

    # Check actual pixels
    fg_color = "LemonChiffon"
    bg_color = "#aabbcc"

    fg_parsed = (255, 250, 205)
    bg_parsed = (170, 187, 204)

    image = render_image(
        codes, scale=1, ratio=1, padding=0,
        fg_color=fg_color, bg_color=bg_color,
    )

    px = image.load()

    for column, row, visible in modules(codes):
        expected = fg_parsed if visible else bg_parsed
        assert px[column, row] == expected
Ejemplo n.º 4
0
def application_form(request):

    if request.method == 'POST':

        def pr(name):
            return request.POST.get(name)
        
        doc = DocxTemplate("admission_form.docx")
        aadhar = None
        sclass = None
        if request.POST.get('aadhar') != '0':
            aadhar = request.POST.get('aadhar')
        if request.POST.get('coa') == '1':
            sclass = 'First'
        elif request.POST.get('coa') == '2':
            sclass = 'Second'
        elif request.POST.get('coa') == '3':
            sclass = 'Third'
        elif request.POST.get('coa') == '4':
            sclass = 'Fourth'

        p = request.POST.get('application_no')
        age = age_calc(pr('dob'))

        text = "Application no: " + request.POST.get('application_no') + "-Name: "+ request.POST.get('name') + "-Gender :" + request.POST.get('gender') + "-Date of birth :"+ str(request.POST.get('dob'))+ "-Class on admission: "+ str(request.POST.get('coa')) + "-Aadhar: "+ str(request.POST.get('aadhar'))+"-Name of father: "+ request.POST.get('father')+"-Name of mother: "+ request.POST.get('mother') +"-Mobile: "+str(request.POST.get('mob'))+"-Address: "+request.POST.get('address')
        # Convert to code words
        codes = encode(text)
        # Generate barcode as image
        image = render_image(codes)  # Pillow Image object
        image.save('barcode.png')

        context = {'p1':p[:5] ,'p2':p[5:7] ,'p3': p[7:12] , 'name' : pr('name').upper(),'gender':pr('gender'),'a':aadhar,'father':pr('father'),'address':pr('address'),'mobile':pr('mob'),'mother':pr('mother'),'dob':pr('dob'),'age':age,'class':sclass}
        doc.render(context)
        doc.replace_media('dummy.png','barcode.png')
        doc.save("admission_form_print.docx")

        convertpdf("admission_form_print.docx")

        return redirect(report)
Ejemplo n.º 5
0
def genpdf417Func(textEncode, nameImage):
    enc = encode(textEncode, columns=10, security_level=8)
    image = render_image(enc, ratio=1, scale=2)
    return image.save(nameImage)
Ejemplo n.º 6
0
from pdf417 import encode, render_image, render_svg
import base64
from io import BytesIO


# Some data to encode
text = """<DD xmlns=\"http://www.sii.cl/SiiDte\"><RE>11111111-1</RE><TD>52</TD><F>97</F><FE>2020-12-16</FE><RR>83659400-2</RR><RSR>Genérico</RSR><MNT>44000</MNT><IT1>[PT003108] Nuez Con Cáscara/ Inshell Wal</IT1><CAF version=\"1.0\"><DA><RE>76588454-3</RE><RS>DTEMITE LIMITADA</RS><TD>52</TD><RNG><D>1</D><H>50</H></RNG><FA>2016-07-06</FA><RSAPK><M>sH8h/4+7bUFGGxIk/4oAGZXNqORHHnUgkSlF7+EhF6fLtxUDZ5L7geHm48hX8AziucAGpZSDkE/IZCxvy+NYWw==</M><E>Aw==</E></RSAPK><IDK>100</IDK></DA><FRMA algoritmo=\"SHA1withRSA\">a8cGYqRIXwnFRTIaI8me3BVHCLWN0/8E5zSatOuc+DDevyy5aBxqk3PIEyVxtw/NzOqFkbCPvtvzIjAayt/GRg==</FRMA></CAF><TSTED>2021-01-04T09:31:48</TSTED></DD><FRMT algoritmo=\"SHA1withRSA\" xmlns=\"http://www.sii.cl/SiiDte\">pbyfs0Jcuv7P7XHLxWxAPfGfyDejHpSEe6lCzaXrVPS3OTY3xdB5JxhlvWaT4I55WyaTjO/1FMchrZ7bZN1m3w==</FRMT>"""


cols = 12
while True:
    try:
        if cols == 31:
            break
        # Convert to code words
        codes = encode(text, cols)

        # Generate barcode as image
        image = render_image(codes)  # Pillow Image object
        image.save("barcode.jpg")
        print(cols)
        break
    except:
        cols += 1


Ejemplo n.º 7
0
    def send_to_sii(self):

        url = self.env.user.company_id.dte_url
        headers = {
            "apiKey": self.env.user.company_id.dte_hash,
            "CustomerCode": self.env.user.company_id.dte_customer_code
        }
        invoice = {}
        productLines = []
        lineNumber = 1
        netAmount = 0
        exemtAmount = 0
        countNotExempt = 0

        #Main Validations
        self.validation_fields()

        move_line = []
        if self.is_multiple_dispatch:
            move_line = self.dispatch_line_ids
        else:
            move_line = self.move_ids_without_package

        for item in move_line:
            haveExempt = False

            price_unit = item.sale_id.mapped('order_line').filtered(
                lambda a: a.product_id.id == item.product_id.id
            ).price_unit if self.is_multiple_dispatch else item.picking_id.sale_id.mapped(
                'order_line').filtered(
                    lambda a: a.product_id.id == item.product_id.id).price_unit
            amount = item.real_dispatch_qty * price_unit if self.is_multiple_dispatch else item.quantity_done * price_unit
            tax_ids = self.sale_id.mapped('order_line').filtered(
                lambda a: a.product_id.id == item.product_id.id).tax_id
            amount_tax = 0
            for tax in tax_ids:
                if int(tax.amount) == 19:
                    amount_tax += amount * (tax.amount / 100)
                    break

            if len(
                    self.sale_id.mapped('order_line').filtered(
                        lambda a: a.product_id.id == item.product_id.id).
                    mapped('tax_id')) == 0:
                haveExempt = True

            if haveExempt:
                exemtAmount += amount
                productLines.append({
                    "LineNumber":
                    str(lineNumber),
                    "ProductTypeCode":
                    "EAN",
                    "ProductCode":
                    str(item.product_id.default_code),
                    "ProductName":
                    item.product_id.name,
                    "ProductQuantity":
                    str(item.real_dispatch_qty) if self.is_multiple_dispatch
                    else str(item.quantity_done
                             ),  #segun DTEmite no es requerido int
                    "UnitOfMeasure":
                    str(item.product_id.uom_id.name),
                    "ProductPrice":
                    str(price_unit),  #segun DTEmite no es requerido int
                    "ProductDiscountPercent":
                    "0",
                    "DiscountAmount":
                    "0",
                    "Amount":
                    str(
                        self.roundclp(item.real_dispatch_qty *
                                      price_unit if self.is_multiple_dispatch
                                      else item.quantity_done *
                                      price_unit)),  #str(int(amount)),
                    "HaveExempt":
                    haveExempt,
                    "TypeOfExemptEnum":
                    "1"  #agregar campo a sale.order.line igual que acoount.invoice.line
                })
            else:
                netAmount += self.roundclp(amount)
                productLines.append({
                    "LineNumber":
                    str(lineNumber),
                    "ProductTypeCode":
                    "EAN",
                    "ProductCode":
                    str(item.product_id.default_code),
                    "ProductName":
                    item.product_id.name,
                    "ProductQuantity":
                    str(item.real_dispatch_qty)
                    if self.is_multiple_dispatch else str(item.quantity_done),
                    "UnitOfMeasure":
                    str(item.product_id.uom_id.name),
                    "ProductPrice":
                    str(price_unit),
                    "ProductDiscountPercent":
                    "0",
                    "DiscountAmount":
                    "0",
                    "Amount":
                    str(
                        self.roundclp(item.real_dispatch_qty *
                                      price_unit if self.is_multiple_dispatch
                                      else item.quantity_done * price_unit)),
                })
            lineNumber += 1

        if self.partner_id.phone:
            recipientPhone = str(self.partner_id.phone)
        elif self.partner_id.mobile:
            recipientPhone = str(self.partner_id.mobile)
        else:
            recipientPhone = ''

        self.write({
            'net_amount':
            str(self.roundclp(netAmount)),
            'exempt_amount':
            str(self.roundclp(exemtAmount)),
            'amount_tax':
            str(self.roundclp(amount_tax)),
            'total':
            str(
                self.roundclp(netAmount + exemtAmount +
                              self.sale_id.amount_tax))
        })

        invoice = {
            "dteType": self.dte_type_id.code,
            "createdDate": self.scheduled_date.strftime("%Y-%m-%d"),
            "expirationDate":
            self.date_due.strftime("%Y-%m-%d"),  #No hay fecha de vencimiento
            "paymentType": int(self.method_of_payment),
            "dispatchType": str(self.dispatch_type),
            "transferIndication": str(self.transfer_indication),
            "transmitter": {
                "EnterpriseRut":
                re.sub(
                    '[\.]', '', self.company_id.invoice_rut
                ),  #re.sub('[\.]','', "76.991.487-0"), #self.env.user.company_id.invoice_rut,
                "EnterpriseActeco":
                self.company_activity_id.code,
                "EnterpriseAddressOrigin":
                self.env.user.company_id.street,
                "EnterpriseCity":
                self.env.user.company_id.city,
                "EnterpriseCommune":
                str(self.env.user.company_id.state_id.name),
                "EnterpriseName":
                self.env.user.company_id.partner_id.name,
                "EnterpriseTurn":
                self.env.user.company_id.partner_id.enterprise_turn,
                "EnterprisePhone":
                self.env.user.company_id.phone
                if self.env.user.company_id.phone else ''
            },
            "recipient": {
                "EnterpriseRut": re.sub('[\.]', '',
                                        self.partner_id.invoice_rut),
                "EnterpriseAddressOrigin": self.partner_id.street[0:60],
                "EnterpriseCity": self.partner_id.city,
                "EnterpriseCommune": self.partner_id.state_id.name,
                "EnterpriseName": self.partner_id.name,
                "EnterpriseTurn": self.partner_id.enterprise_turn,
                "EnterprisePhone": recipientPhone
            },
            "total": {
                "netAmount": self.net_amount,
                "exemptAmount": self.exempt_amount,
                "taxRate": "19",
                "taxtRateAmount": self.amount_tax,
                "totalAmount": self.total
            },
            "lines": productLines,
        }

        # Add Refeences
        if self.references and len(self.references) > 0:
            refrenecesList = []
            line_reference_number = 1
            for item in self.references:
                refrenecesList.append({
                    "LineNumber":
                    str(line_reference_number),
                    "DocumentType":
                    str(item.document_type_reference_id.id),
                    "Folio":
                    str(item.folio_reference),
                    "Date":
                    str(item.document_date),
                    "Code":
                    str(item.code_reference),
                    "Reason":
                    str(item.reason)
                })
                line_reference_number += 1
            invoice['references'] = refrenecesList
        #Add Additionals
        if len(self.observations_ids) > 0:
            additionals = []
            for item in self.observations_ids:
                additionals.append(item.observations)
            invoice['additional'] = additionals

        r = requests.post(url, json=invoice, headers=headers)

        #raise models.ValidationError(json.dumps(invoice))
        jr = json.loads(r.text)
        Jrkeys = jr.keys()
        if 'urlPdf' in Jrkeys and 'filePdf' in Jrkeys and 'folio' in Jrkeys and 'fileXml' in Jrkeys and 'ted' in Jrkeys:
            self.write({'pdf_url': jr['urlPdf']})
            self.write({'dte_pdf': jr['filePdf']})
            self.write({'dte_folio': jr['folio']})
            self.write({'dte_xml': jr['fileXml']})
            self.write({'dte_xml_sii': jr['fileXmlSII']})

            cols = 12
            while True:
                try:
                    if cols == 31:
                        break
                    codes = encode(jr['ted'], cols)
                    image = render_image(codes, scale=5, ratio=2)
                    buffered = BytesIO()
                    image.save(buffered, format="JPEG")
                    img_str = base64.b64encode(buffered.getvalue())
                    self.write({'ted': img_str})
                    break
                except:
                    cols += 1

        if 'status' in Jrkeys and 'title' in Jrkeys:
            raise models.ValidationError(
                'Status: {} Title: {} Json: {}'.format(jr['status'],
                                                       jr['title'],
                                                       json.dumps(invoice)))
        elif 'message' in Jrkeys:
            raise models.ValidationError('Advertencia: {} Json: {}'.format(
                jr['message'], json.dumps(invoice)))