def test_equal_records(self): a = 'g' equals = self.equals for elem in equals: result = Record.equal_records(equals[elem]["printer"], equals[elem]["sap"]) exp = result, equals[elem]["expected"] self.assertEqual(result, equals[elem]["expected"])
def compare_write_reports2(self, printer, sap): """ :type printer: list of PrinterRecord :type sap: list of SapRecord :return: """ tax_diff_by_tax = {} f = open(self.args["out"], 'wt') output = csv.writer(f) output.writerow(('id', 'status', 'message', 'comment', 'tax code diff', 'tax diff', 'taxes by tax', 'tax sum')) both, only_printer, only_sap = self.get_common_elements(printer, sap) # printer_keys = set(printer.keys()) for refNum in only_printer: for tax in printer[refNum].tax_sum_by_tax: output.writerow((refNum, Record.STATUS_BAD, Record.MESSAGE_ONLY_PRINTER, None, tax, printer[refNum].tax_sum_by_tax[tax], printer[refNum].tax_sum_by_tax, printer[refNum].total_tax_sum)) for refNum in only_sap: for tax in sap[refNum].tax_sum_by_tax: if tax == SapRecord.TAX_TECHNICAL_CODE and abs(sap[refNum].tax_sum_by_tax[tax]) < eps: # skip when contains technical code and tax continue output.writerow((refNum, Record.STATUS_BAD, Record.MESSAGE_ONLY_SAP, None, tax, abs(sap[refNum].tax_sum_by_tax[tax]), sap[refNum].tax_sum_by_tax, sap[refNum].total_tax_sum)) for refNum in both: messages = Record.equal_records(printer[refNum], sap[refNum]) if len(messages): for message in messages: tax_symbol = message["tax_symbol_err"] # liczenie sumy roznic podatkow tax_diff = None if tax_symbol: # tax_diff = Record.round(abs(abs(printer[refNum].tax_sum_by_tax.get(tax_symbol, 0)) - abs(sap[refNum].tax_sum_by_tax.get(tax_symbol, 0)))) tax_diff = Record.round(printer[refNum].tax_sum_by_tax.get(tax_symbol, 0) - abs(sap[refNum].tax_sum_by_tax.get(tax_symbol, 0))) tax_sum = tax_diff_by_tax.get(tax_symbol, 0) + tax_diff tax_diff_by_tax[tax_symbol] = tax_sum output.writerow((refNum, message["status"], message["message"], message["comment"], tax_symbol, tax_diff, (printer[refNum].tax_sum_by_tax, sap[refNum].tax_sum_by_tax), (printer[refNum].total_tax_sum, sap[refNum].total_tax_sum))) else: b = 'blad?' for tax in tax_diff_by_tax: output.writerow((tax, Record.round(tax_diff_by_tax[tax]))) print '\nliczba wspolnych - ' + str(len(both)) print 'liczba na drukarce - ' + str(len(only_printer)) print 'liczba w sap - ' + str(len(only_sap))