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
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)