コード例 #1
0
ファイル: import_invoice.py プロジェクト: backtrunck/nfce
def make_window(master=None, db_connection=None):

    if master:
        root = Toplevel(master)
    else:
        root = Tk()

    root.title('Importar Nota Fiscal Eletronica')
    root.geometry('350x120')
    frm = Frame(root)
    frm.pack(fill=X)

    lbl = LabelFrame(frm, text="Enviar saída para:")
    lbl.pack(fill=X)
    option = StringVar(root)
    #option.set('Arquivo *.csv')
    option.set('Banco de Dados')

    optMenu = OptionMenu(lbl, option, 'Banco de Dados', 'Arquivo *.csv')
    optMenu.pack(fill=X)

    Button(frm,
           text='Importar uma Nota Fiscal',
           command=(lambda output=option, conn=db_connection: send_invoice(
               output, conn=conn))).pack(fill=X)
    Button(frm,
           text='Importar Lote de Notas Fiscais',
           command=(lambda output=option: send_invoices(output))).pack(fill=X)
    Button(frm, text='Sair', command=root.quit).pack(fill=X)
    if master:
        show_modal_win(root)
    else:
        root.mainloop()
コード例 #2
0
def make_window(master=None):
    padx = 3
    pady = 3
    if master:
        win = tk.Toplevel(master)
    else:
        win = tk.Tk()

    win.title('Download Notas Fiscais')
    frm = tk.Frame(win)
    frm.pack(fill=tk.X)
    #primeira linha do Form - Label e Entry
    frm2 = tk.Frame(frm)
    frm2.grid(row=0, column=0, sticky='w')
    tk.Label(frm2, text='Chave:').pack(side=tk.LEFT, fill=tk.X)
    win.entry_key_nfce = tk.Entry(frm2, width=45)
    win.entry_key_nfce.pack(side=tk.LEFT,
                            fill=tk.X,
                            expand=tk.YES,
                            padx=padx,
                            pady=pady)
    #botão submit
    win.btSubmit = tk.Button(frm, text='Buscar')
    win.btSubmit.grid(row=0, column=1, sticky='e', padx=padx, pady=pady)
    win.btSubmit.config(command=(lambda: search_button(win)), state='disabled')
    #Text para mostrar o log do sistema
    win.text_logger = ScrolledText(frm, width=50, height=30)
    win.text_logger.grid(row=1,
                         column=0,
                         columnspan=2,
                         padx=padx,
                         pady=pady,
                         sticky='ew')
    frm.columnconfigure(0, weight=1)
    #preparando para iniciar o selenium
    win.logger = get_logger('invoice_scrapper')
    win.logger.addHandler(ScrolledTextHandler(win.text_logger))
    win.drive = None
    win.site = sefaz_ba_site
    #win.browser_type = 'phanton'
    win.browser_type = 'firefox'
    win.solved_captcha = False
    #após a janela abrir, dispara o initialize
    win.after(20, (lambda w=win: initialize(w)))

    if not master:
        win.eval('tk::PlaceWindow %s center' %
                 win.winfo_pathname(win.winfo_id()))

    if master:
        show_modal_win(win)
    else:
        win.mainloop()

    win.drive.close()
コード例 #3
0
def search_invoice(master):

    win = tk.Toplevel(master)
    win.conn = master.conn
    win.title('Consultar Nota Fiscal')

    fields_f_invoice = fields_form_invoice.set_visible({
        'data_emissao': True,
        'hora_emissao': True,
        'nu_nfce': True,
        'cnpj': True,
        'estabelecimento': True,
        'vl_total': True,
        'button_1': True
    })
    f = FormSimpleSearch(win, fields_search_invoice, fields_f_invoice)
    f.pack()
    show_modal_win(win)
コード例 #4
0
def make_window(master=None, Frame=None, title=None, resizable=True, **kwargs):
    if master:
        root = tk.Toplevel(master)
        root.conn = master.conn
    else:
        root = tk.Tk()
        root.conn = nfce_db.get_engine_bd().connect()
    if title:
        root.title(title)
    #if Frame:
    if kwargs:
        f = Frame(root, root.conn, **kwargs)
    else:
        f = Frame(root, root.conn)
    f.pack(fill=tk.X)
    if not resizable:
        root.resizable(False, False)
    if master:
        show_modal_win(root)
    else:
        root.mainloop()

    return
コード例 #5
0
def make_dialog_captcha(path):
    def close_dialog():
        if entry_capcha.get():
            dialog.captcha_solution = entry_capcha.get()
            dialog.destroy()
        else:
            showwarning('Captcha', 'Você deve informar o captcha')

    dialog = tk.Toplevel()
    dialog.captcha_solution = ''
    frm1 = tk.Frame(dialog)
    frm1.pack(fill=tk.BOTH, expand=tk.YES)
    tk.Label(frm1, text='Digite o Captcha:').pack(side=tk.LEFT,
                                                  fill=tk.BOTH,
                                                  expand=tk.YES)
    entry_capcha = tk.Entry(frm1)
    entry_capcha.pack(side=tk.LEFT, fill=tk.X, expand=tk.YES)
    image = get_image(path)
    tk.Button(dialog, image=image, command=close_dialog).pack(fill=tk.BOTH,
                                                              expand=tk.YES)
    dialog.image = image
    show_modal_win(dialog)
    return dialog.captcha_solution
コード例 #6
0
def products_images_search(master=None):
    '''
        Abre janela para procurar e mostrar as imagens salvas no bd
    '''
    def submit():
        ean_code = entry_ean.get()
        if ean_code:
            result = get_product_from_db(db_connection, ean_code, True)
            if result:
                if result['img_produto']:
                    img = Image.open(io.BytesIO(result['img_produto']))
                    img = img.resize((200, 200), Image.ANTIALIAS)
                    win.bt1.image = ImageTk.PhotoImage(img)
                    win.bt1.config(image=win.bt1.image)
                else:
                    change_image(win.bt1, '')

                if result['img_barcode']:
                    img = Image.open(io.BytesIO(result['img_barcode']))
                    img = img.resize((200, 200), Image.ANTIALIAS)
                    win.bt2.image = ImageTk.PhotoImage(img)
                    win.bt2.config(image=win.bt2.image)
                    label_product.config(text=result['ds_produto'])
                else:
                    change_image(win.bt2, '')

            else:
                showwarning('Teste Imagens', 'Cógigo não encontrado')
                change_image(win.bt1, '')
                change_image(win.bt2, '')
                label_product.config(text='')
        else:
            showwarning('Teste Imagens', 'Informe o Código')

    padx = 3
    pady = 3
    engine = nfce_db.get_engine_bd()
    db_connection = engine.connect()
    if master:
        win = tk.Toplevel(master)
    else:
        win = tk.Tk()

    win.title('Teste Imagens / Blob Mysql')
    frm = tk.Frame(win)
    frm.pack(fill=tk.X, expand=tk.YES)

    tk.Label(frm, text="Digite Ean:").pack(side=tk.LEFT)
    entry_ean = tk.Entry(frm)
    entry_ean.pack(side=tk.LEFT, fill=tk.X, expand=tk.YES)

    frm = tk.Frame(win)
    frm.pack(fill=tk.X)
    label_product = tk.Label(frm, width=40, anchor="w", justify=tk.LEFT)
    label_product.pack(side=tk.LEFT)
    button_submit = tk.Button(frm, text='Search', command=submit)
    button_submit.pack(side=tk.RIGHT)

    frm = tk.Frame(win)
    frm.pack(fill=tk.X)

    win.bt1 = tk.Button(frm)
    win.bt1.image = None
    change_image(win.bt1, '')

    win.bt1.grid(row=2, column=0, sticky='ew', padx=padx, pady=pady)

    win.bt2 = tk.Button(frm)
    win.bt2.image = None
    change_image(win.bt2, '')
    win.bt2.grid(row=2, column=1, sticky='ew', padx=padx, pady=pady)

    if master:
        show_modal_win(win)
    else:
        win.eval('tk::PlaceWindow %s center' %
                 win.winfo_pathname(win.winfo_id()))
        win.mainloop()
コード例 #7
0
def make_window(master=None):
    '''
        Cria a janela principal, onde se vai importar os produtos.
    '''
    padx = 3
    pady = 3
    if master:
        win = tk.Toplevel(master)
    else:
        win = tk.Tk()

    win.title('Importar Dados do Produto')
    frm = tk.Frame(win)
    frm.pack(fill=tk.X)
    #primeira linha do Form - Label e Entry
    frm2 = tk.Frame(frm)
    frm2.grid(row=0, column=0, sticky='w')
    tk.Label(frm2, text='Código EAN:').pack(side=tk.LEFT, fill=tk.X)
    win.entCodeProduct = tk.Entry(frm2)
    win.entCodeProduct.pack(side=tk.LEFT,
                            fill=tk.X,
                            expand=tk.YES,
                            padx=padx,
                            pady=pady)
    #botão submit
    win.btSubmit = tk.Button(frm, text='Buscar')
    win.btSubmit.grid(row=0, column=1, sticky='e', padx=padx, pady=pady)
    win.btSubmit.config(state='disabled')
    #Text para mostrar o log do sistema
    win.text_logger = ScrolledText(frm, width=50, height=10)
    win.text_logger.grid(row=1, column=0, columnspan=2, padx=padx, pady=pady)
    win.entry_produto = tk.Entry(frm)
    win.entry_produto.grid(row=2,
                           column=0,
                           columnspan=2,
                           sticky='ew',
                           padx=padx,
                           pady=pady)
    frmImg = tk.Frame(frm)
    frmImg.grid(row=3, column=0, columnspan=2, sticky='ew')
    frmImg.columnconfigure(0, weight=1)
    frmImg.columnconfigure(1, weight=1)
    photo = get_image('data/products/blank.png')
    width = 200
    height = 200
    win.bt1 = tk.Button(frmImg, image=photo, width=width, height=height)
    win.bt1.image = photo
    win.bt1.grid(row=0, column=0, sticky='ew', padx=padx, pady=pady)
    win.bt2 = tk.Button(frmImg, image=photo)
    win.bt2.image = photo
    win.bt2.grid(row=0, column=1, sticky='ew', padx=padx, pady=pady)
    win.btSubmit.config(command=(lambda: search_button(win)))
    win.entCodeProduct.focus_set()
    if not master:
        win.eval('tk::PlaceWindow %s center' %
                 win.winfo_pathname(win.winfo_id()))
    win.logger = make_logger(win.text_logger)
    win.site = bluesoft_site
    win.drive = None
    win.browser_type = 'phanton'
    win.browser_type = 'firefox'
    win.after(20, (lambda w=win: initialize(w)))
    if master:
        show_modal_win(win)
    else:
        win.mainloop()
    win.drive.close()