def parse(self):
        is_moneygram = False
        if "MoneyGram" in self.pdf_text and (
                            SEND_FORM in self.pdf_text or RECEIVE_FORM in self.pdf_text or REFUND_FORM in self.pdf_text):
            is_moneygram = True
            field_names, filters, folder_type = self.get_meta_details_of_transfer()
            transfer_details = get_transfer_details_from_pdf_text_by_regex(self.pdf_text, field_names, filters)
            transfer_details['reference_number'] = transfer_details['reference_number'].replace(' ', '')
            self.transfer.update(transfer_details)
            if REFUND_FORM in self.pdf_text or RECEIVE_FORM in self.pdf_text:
                self.transfer.type = self.transfer.transaction_status
            else:
                self.transfer.type = TYPE_SEND

            if RECEIVE_FORM in self.pdf_text:
                self.transfer.amount = self.transfer.receive_amount
                self.transfer.transfer_currency = self.transfer.receive_currency.strip().split(' ')[0]
                transfer_date_string = self.transfer.receive_date
            else:
                self.transfer.amount = self.transfer.amount
                self.transfer.transfer_currency = self.transfer.send_currency
                if self.transfer.type == TYPE_REFUND:
                    transfer_date_string = self.transfer.cancel_date
                else:
                    transfer_date_string = self.transfer.full_date

            self.transfer.transfer_date_obj = TransferDate.from_string(transfer_date_string)
            date_folder = self.transfer.transfer_date_obj.date_folder
            if self.transfer.type == TYPE_SEND or self.transfer.type == TYPE_RECEIVE:
                self.transfer.cancel_date_obj = self.transfer.transfer_date_obj
            else:
                cancel_date_string = self.transfer.cancel_date
                self.transfer.cancel_date_obj = TransferDate.from_string(cancel_date_string)

                if self.transfer.type == TYPE_REFUND:
                    date_folder = self.transfer.cancel_date_obj.date_folder

            self.output_folder = os.path.join(self.transactions_folder, folder_type, date_folder,
                                              self.transfer.transfer_currency)
            self.output_file = os.path.join(self.output_folder, self.transfer.reference_number + ".pdf")
        return is_moneygram
예제 #2
0
def html_to_pdf(pdf_text, output_file, transfer_number='', employee_name="אבנר בנטוב", id_str="056719636",
                is_to_print=True,
                is_to_print_agent_form=True):

    temp_html_path = r'C:\Temp\MG\Dec.html'
    temp_pdf_file_path = r'C:\Temp\MG\\' + datetime.datetime.now().strftime('%d%m%Y_%H%M%S') + 'Transfer.pdf'
    if not os.path.exists(r'C:\Temp'):
        os.makedirs(r'C:\Temp\MG')

    if 'MoneyGram SEND FORM' in pdf_text:
        agent_html_template = SEND_FORM_AGENT_TEMPLATE
        customer_html_template = SEND_FORM_CUSTOMER_TEMPLATE
        filters = send_regex_filters
        fields = html_to_pdf_send_fields

    elif "MoneyGram REFUND FORM" in pdf_text:
        agent_html_template = REFUND_FORM_AGENT_TEMPLATE
        customer_html_template = REFUND_FORM_CUSTOMER_TEMPLATE
        filters = refund_regex_filters
        fields = html_to_pdf_refund_fields

    elif "MoneyGram RECEIVE FORM" in pdf_text:
        agent_html_template = RECEIVE_FORM_AGENT_TEMPLATE
        customer_html_template = RECEIVE_FORM_CUSTOMER_TEMPLATE
        filters = receive_regex_filters
        fields = html_to_pdf_receive_fields

    else:
        return

    agent_template_text, customer_template_text = get_template_text(agent_html_template, customer_html_template)
    transfer_details_dict = get_transfer_details_from_pdf_text_by_regex(pdf_text, fields, filters)

    transfer_details_dict['XREFNUMX'] = ' '.join(transfer_details_dict['XREFNUMX'].split())

    if 'XRECCURRENCYX' in transfer_details_dict:
        transfer_details_dict['XRECCURRENCYX'] = transfer_details_dict['XRECCURRENCYX'].strip().split(' ')[0]

    for field, value in transfer_details_dict.items():
        value = wrap_text(field, value)
        agent_template_text = agent_template_text.replace(field.encode('utf-8'), value.encode('utf-8'))
        customer_template_text = customer_template_text.replace(field.encode('utf-8'), value.encode('utf-8'))

    currency_sign_dict = {'USD': '$', 'EUR': '€'}

    customer_template_text = customer_template_text.replace('XFORMX', 'Customer\'s copy')
    save_file_and_print(customer_template_text, temp_html_path, temp_pdf_file_path)

    if not ("MoneyGram RECEIVE FORM" in pdf_text):
        currency_text = currency_sign_dict[transfer_details_dict['XSENDCURX']]
    else:
        currency_text = currency_sign_dict[transfer_details_dict['XRECCURRENCYX']]

    agent_template_text = agent_template_text.replace('XFORMX',
                                                      'Agent\'s copy, <br>Transfer No.:</br><br>Currency: ' +
                                                      currency_text + '</br>') \
        .replace('<span class="refNum"></span>', '<span class="refNum">   ' + str(transfer_number) + '</span>')

    agent_template_text = agent_template_text.replace('XPAKIDNAMEX', employee_name).replace('XPAKIDIDX', id_str)

    save_file_and_print(agent_template_text, temp_html_path, output_file)

    if is_to_print:
        print_with_default_printer(temp_pdf_file_path)
        if is_to_print_agent_form:
            print_with_default_printer(output_file)