def __init__(self, PaperSize=QPrinter.A4, Orientation=QPrinter.Orientation(1)): super().__init__(PaperSize=QPrinter.A4, Orientation=QPrinter.Orientation(1)) self.title = 'Inventory Warning List 低库存产品信息表' self.sql = """
def __init__(self, PaperSize=QPrinter.A5, Orientation=QPrinter.Orientation(1)): super().__init__(PaperSize, Orientation) self.SetMargins(30, 60, 30, 20) self.CopyInfo = JPPub().getCopysInfo('BillCopys_PrintingOrder') self.Copys = len(self.CopyInfo) self.logo = JPPub().MainForm.logoPixmap #self.logo = QPixmap(getcwd() + "\\res\\tmLogo100.png") self.FillColor = JPPub().getConfigData( )['PrintHighlightBackgroundColor'] self.font_Algerian = QFont("Algerian") self.font_Algerian_11 = QFont(self.font_Algerian) self.font_Algerian_12 = QFont(self.font_Algerian) self.font_Algerian_11.setPointSize(11) self.font_Algerian_12.setPointSize(12) self.font_YaHei = QFont("微软雅黑") self.font_YaHei_8 = QFont(self.font_YaHei) self.font_YaHei_8.setPointSize(8) self.font_YaHei_10 = QFont(self.font_YaHei) self.font_YaHei_10.setPointSize(10) self.font_YaHei_10.setBold(True) self.Arial_Black = QFont("Arial Black") self.Arial_Black.setPointSize(8) self.Arial_Black.setBold(True)
def __printPreviewImage(self): """ Private slot to handle the Print Preview menu action. """ from PyQt5.QtPrintSupport import QPrintPreviewDialog if self.mainWidget is None: E5MessageBox.critical(self, self.tr("Print Preview"), self.tr("""There is no UI file loaded.""")) return settings = Preferences.Prefs.settings printer = QPrinter(QPrinter.HighResolution) printer.setFullPage(True) printerName = Preferences.getPrinter("UIPreviewer/printername") if printerName: printer.setPrinterName(printerName) printer.setPageSize( QPrinter.PageSize(int(settings.value("UIPreviewer/pagesize")))) printer.setPageOrder( QPrinter.PageOrder(int(settings.value("UIPreviewer/pageorder")))) printer.setOrientation( QPrinter.Orientation(int( settings.value("UIPreviewer/orientation")))) printer.setColorMode( QPrinter.ColorMode(int(settings.value("UIPreviewer/colormode")))) preview = QPrintPreviewDialog(printer, self) preview.paintRequested.connect(self.__print) preview.exec_()
def __init__(self, PaperSize=QPrinter.A5, Orientation=QPrinter.Orientation(1)): super().__init__(PaperSize, Orientation) self.SetMargins(30, 60, 30, 30) self.CopyInfo = JPPub().getCopysInfo('BillCopys_WarehouseRreceipt') self.Copys = len(self.CopyInfo) self.logo = JPPub().MainForm.logoPixmap self.FillColor = JPPub().getConfigData( )['PrintHighlightBackgroundColor'] self.font_Algerian = QFont("Algerian") self.font_Algerian_11 = QFont(self.font_Algerian) self.font_Algerian_12 = QFont(self.font_Algerian) self.font_Algerian_11.setPointSize(11) self.font_Algerian_12.setPointSize(12) self.font_YaHei = QFont("微软雅黑") self.font_YaHei_8 = QFont(self.font_YaHei) self.font_YaHei_8.setPointSize(8) self.font_YaHei_10 = QFont(self.font_YaHei) self.font_YaHei_10.setPointSize(10) self.font_YaHei_10.setBold(True)
def __init__(self, PaperSize=QPrinter.A4, Orientation=QPrinter.Orientation(0), db=QtSql.QSqlDatabase()): self.TotalPagesCalculated = False self.PaperSize = PaperSize self.Orientation = Orientation self.BoolString = ['是', '否'] self.Margins: QMargins = QMargins(0, 0, 0, 0) self.ReportHeader = _jpSectionReportHeader(self) self.ReportFooter = _jpSectionReportFooter(self) self.PageHeader = _jpSectionPageHeader(self) self.PageFooter = _jpSectionPageFooter(self) self.Detail = _jpSectionDetail(self) self._Copys = 1 self._CurrentPage = 0 self._CurrentCopys = 0 self.__PageCount = 0 self.__DataSource = [] self.__Errors = [] self.__Printer: typing.Any = None self.__PageHeight = 0 self.__Calculated = False self.__Reseted = False self.__SectionPrintBeginY = 0 self.__ExecNewPageTimes = 0 self.__db: QtSql.QSqlDatabase = db self.__FieldTypes = {} self._GroupLinkList = _GroupLinkList(self) self.DataSourceRecord: QSql.QSqlRecord = None
def __init__(self, PaperSize=QPrinter.A4, Orientation=QPrinter.Orientation(1)): super().__init__(PaperSize, Orientation) self.configData = JPPub().getConfigData() self.font_YaHei = QFont("Microsoft YaHei") self.font_YaHei_8 = QFont(self.font_YaHei) self.font_YaHei_8.setPointSize(8) self.font_YaHei_10 = QFont(self.font_YaHei) self.font_YaHei_10.setPointSize(20) self.font_YaHei_10.setBold(True) self.BackColor = JPPub().getConfigData( )['PrintHighlightBackgroundColor'] self.title_detail = [ '序号\nID', '产品名称\nProductName', '规格\nSpesc', '宽\nWidth', '长\nLength', '计量单位\nUint', '剩余库存\nCurrentQuantity', '预警库存\nMinimumStock', '备注\nNote' ] self.fns = [ 'fID', 'fProductName', 'fSpesc', 'fWidth', 'fLength', 'fUint', 'fNote', 'fCurrentQuantity', 'fMinimumStock' ] self.sql = """ select fID,fProductName,fSpesc,fWidth,fLength,fUint,fNote, fCurrentQuantity,fMinimumStock from t_product_information where fCancel=0 order by fID """ self.logo = JPPub().MainForm.logoPixmap self.title = 'Product Information List 产品信息明细表'
def __init__(self, PaperSize=QPrinter.A4, Orientation=QPrinter.Orientation(0)): super().__init__(PaperSize, Orientation) self.configData = JPPub().getConfigData() self.font_YaHei = QFont("Microsoft YaHei") self.font_YaHei_8 = QFont(self.font_YaHei) self.font_YaHei_8.setPointSize(8) self.font_YaHei_12 = QFont(self.font_YaHei) self.font_YaHei_12.setPointSize(12) self.font_YaHei_10 = QFont(self.font_YaHei) self.font_YaHei_10.setPointSize(20) self.font_YaHei_10.setBold(True) self.BackColor = JPPub().getConfigData( )['PrintHighlightBackgroundColor'] self.title_detail = [ '序号\nNO', '日期\nOrderDate', '单据号码\nOrderID', '客商\nMerchants', '入库\nIn', '出库\nOut' ] self.fns = [ 'fOrderDate', '日期Date', '单据号码OrderID', '客商Merchants', '入库In', '出库Out' ] self.logo = JPPub().MainForm.logoPixmap self.title = 'Warehouse in/out Details\n出入库明细表' self.beginDate = None self.endDate = None
def __init__(self, PaperSize=QPrinter.A4, Orientation=QPrinter.Orientation(0)): super().__init__(PaperSize, Orientation) self.configData = JPPub().getConfigData() self.font_YaHei = QFont("Microsoft YaHei") self.font_YaHei_8 = QFont(self.font_YaHei) self.font_YaHei_8.setPointSize(8) self.font_YaHei_12 = QFont(self.font_YaHei) self.font_YaHei_12.setPointSize(12) self.font_YaHei_10 = QFont(self.font_YaHei) self.font_YaHei_10.setPointSize(20) self.font_YaHei_10.setBold(True) self.BackColor = JPPub().getConfigData( )['PrintHighlightBackgroundColor'] self.title_detail = [ ' ', '产品名称ProductName', '入库In', '出库Out', '结余库存\nCurQua', '销售笔数\nBillCount' ] self.fns = [ '序号ID', '产品名称ProductName', '入库数量In', '出库数量Out', '结余库存CurrentQuantity', '销售笔数BillCount' ] self.logo = JPPub().MainForm.logoPixmap self.title = 'Warehouse in/out Details\n出入库明细表' self.beginDate = None self.endDate = None
def PrintCurrentReport(self, pixmap: str): p = QPrinter() p.setPaperSize(QPrinter.A4) p.setOrientation(QPrinter.Orientation(0)) self.SetMargins(0, 0, 0, 0) rect = p.pageRect() self.ReportHeader.AddItem(2, 0, 0, rect.width(), rect.height(), pixmap) super().BeginPrint()
def PrintCurrentReport(self, OrderID: str): self.init_data(OrderID) self.init_ReportHeader_title( title1="报价单Cotação", title2="(ESTE DOCUMENTO É DO USO INTERNO)") self.init_ReportHeader() self.init_ReportHeader_Individualization() self.init_PageHeader() self.init_Detail() self.init_ReportFooter() # 大于6行自动更改纸型 if len(self.DataSource) > 6: self.PaperSize = QPrinter.A4 self.Orientation = QPrinter.Orientation(0) super().BeginPrint()
def __printImage(self): """ Private slot to handle the Print Image menu action. """ if self.mainWidget is None: E5MessageBox.critical( self, self.tr("Print Image"), self.tr("""There is no UI file loaded.""")) return settings = Preferences.Prefs.settings printer = QPrinter(QPrinter.HighResolution) printer.setFullPage(True) printerName = Preferences.getPrinter("UIPreviewer/printername") if printerName: printer.setPrinterName(printerName) printer.setPageSize( QPrinter.PageSize(int(settings.value("UIPreviewer/pagesize")))) printer.setPageOrder( QPrinter.PageOrder(int(settings.value("UIPreviewer/pageorder")))) printer.setOrientation(QPrinter.Orientation( int(settings.value("UIPreviewer/orientation")))) printer.setColorMode( QPrinter.ColorMode(int(settings.value("UIPreviewer/colormode")))) printDialog = QPrintDialog(printer, self) if printDialog.exec_() == QDialog.Accepted: self.statusBar().showMessage(self.tr("Printing the image...")) self.__print(printer) settings.setValue("UIPreviewer/printername", printer.printerName()) settings.setValue("UIPreviewer/pagesize", printer.pageSize()) settings.setValue("UIPreviewer/pageorder", printer.pageOrder()) settings.setValue("UIPreviewer/orientation", printer.orientation()) settings.setValue("UIPreviewer/colormode", printer.colorMode()) self.statusBar().showMessage( self.tr("Image sent to printer..."), 2000)
def __init__(self, flds, myyear, baseon, PaperSize=QPrinter.A3, Orientation=QPrinter.Orientation(1)): super().__init__(PaperSize, Orientation) self.font_YaHei = QFont("微软雅黑") self.font_YaHei_8 = QFont(self.font_YaHei) self.font_YaHei_8.setPointSize(8) self.font_YaHei_10 = QFont(self.font_YaHei) self.font_YaHei_10.setPointSize(20) self.font_YaHei_10.setBold(True) rpt = self rpt.logo = JPPub().MainForm.logoPixmap rpt.ReportHeader.AddItemRect(2, (0, 0, 274, 50), rpt.logo) rpt.ReportHeader.AddItemRect(1, (274, 0, 110 * 13 - 274, 40), 'Year Report 收款年报表', Bolder=False, AlignmentFlag=(Qt.AlignCenter), Font=self.font_YaHei_10) self.ReportHeader.AddItemRect( 1, (274, 30, 110 * 13 - 274, 20), '基于Base on: {baseon} 年度Year: {myyear}'.format(baseon=baseon, myyear=myyear), Bolder=False, AlignmentFlag=(Qt.AlignRight)) title = [fld.Title for fld in flds] fns = [fld.FieldName for fld in flds] cols = len(flds) al_c = Qt.AlignCenter al_r = (Qt.AlignVCenter | Qt.AlignRight) rpt.SetMargins(30, 60, 30, 30) rpt.ReportHeader.AddPrintLables(0, 60, 50, Texts=title, Widths=[110] * cols, Aligns=[al_c] * cols) rpt.Detail.AddPrintFields(0, 0, 25, FieldNames=[fns[0]], Widths=[110], Aligns=[al_c]) for i in range(1, cols): rpt.Detail.AddItemRect(3, (i * 110, 0, 110, 25), fns[i], Font=QFont('Times New Roman', 12), AlignmentFlag=al_r, FormatString='{:,.2f} ') self.PageFooter.AddItemRect(4, (10, 0, 110, 20), '', FormatString='Page: {Page}/{Pages}', Bolder=False, AlignmentFlag=(Qt.AlignLeft | Qt.AlignVCenter), Font=self.font_YaHei_8) self.PageFooter.AddItemRect( 5, (110 * 10, 0, 110 * 3, 20), '', FormatString="PrintTime: %Y-%m-%d %H:%M:%S", Bolder=False, AlignmentFlag=Qt.AlignRight, Font=self.font_YaHei_8)
def __init__(self, PaperSize=QPrinter.A4, Orientation=QPrinter.Orientation(0)): super().__init__(PaperSize, Orientation)
def BeginPrint(self): # 大于9行自动更改纸型 if len(self.DataSource) > 9: self.PaperSize = QPrinter.A4 self.Orientation = QPrinter.Orientation(0) return super().BeginPrint()
def __init__(self, curdate, cur_tab, tongji_tab, dateString, PaperSize=QPrinter.A4, Orientation=QPrinter.Orientation(0)): super().__init__(PaperSize, Orientation) self.configData = JPPub().getConfigData() self.font_YaHei = QFont("Microsoft YaHei") self.font_YaHei_8 = QFont(self.font_YaHei) self.font_YaHei_8.setPointSize(8) self.font_YaHei_10 = QFont(self.font_YaHei) self.font_YaHei_10.setPointSize(20) self.font_YaHei_10.setBold(True) self.BackColor = JPPub().getConfigData( )['PrintHighlightBackgroundColor'] rpt = self rpt.logo = JPPub().MainForm.logoPixmap rpt.ReportHeader.AddItemRect(2, (0, 0, 274, 50), rpt.logo) rpt.ReportHeader.AddItemRect(1, (274, 0, 446, 60), 'de vendas diárias 收款日报表', Bolder=False, AlignmentFlag=(Qt.AlignCenter), Font=self.font_YaHei_10) rpt.ReportHeader.AddItemRect(1, (0, 50, 720, 20), 'Date:{}'.format(curdate), Bolder=False, AlignmentFlag=(Qt.AlignRight), Font=self.font_YaHei_8) title = [ '序号\nID', '客户名\nCliente', '收款额\nAmount', '收款人\nfPayee', '收款方式\nModoPago', '单据号\nOrderID', '备注\nNote' ] fns = [ 'fID', 'fCustomerName', 'fAmountCollected', 'fPayee', 'fPaymentMethod', 'fOrderID', 'fNote' ] cols = 7 al_c = Qt.AlignCenter al_r = (Qt.AlignVCenter | Qt.AlignRight) al_l = (Qt.AlignVCenter | Qt.AlignLeft) rpt.SetMargins(30, 30, 30, 30) rpt.ReportHeader.AddPrintLables(0, 72, 40, Texts=title, Widths=[40, 210, 80, 80, 100, 120, 90], Aligns=[al_c] * cols) rpt.Detail.addPrintRowCountItem(0, 0, 40, 20, AlignmentFlag=al_c, Font=self.font_YaHei_8) rpt.Detail.AddItem( 3, 40, 0, 210, 20, fns[1], FormatString=' {}', AlignmentFlag=al_l, # 超出长度省略 AutoShrinkFont=self.configData['AutoShrinkFonts'], AutoEllipsis=self.configData['AutoEllipsis'], Font=self.font_YaHei_8) rpt.Detail.AddItemRect(3, (250, 0, 80, 20), fns[2], AlignmentFlag=al_r, FormatString='{:,.2f} ', Font=self.font_YaHei_8) rpt.Detail.AddItemRect(3, (330, 0, 80, 20), fns[3], AlignmentFlag=al_c, Font=self.font_YaHei_8) rpt.Detail.AddItemRect(3, (410, 0, 100, 20), fns[4], AlignmentFlag=al_c, Font=self.font_YaHei_8) rpt.Detail.AddItemRect(3, (510, 0, 120, 20), fns[5], AlignmentFlag=al_l, FormatString=' {}', Font=self.font_YaHei_8) rpt.Detail.AddItemRect(3, (630, 0, 90, 20), fns[6], AlignmentFlag=al_l, FormatString=' {}', Font=self.font_YaHei_8) sum_j = 0 for i in range(len(cur_tab)): sum_j += cur_tab.getOnlyData([i, 4]) rpt.ReportFooter.AddPrintLables( 0, 0, 20, Texts=["合计Sum", JPGetDisplayText(sum_j), " "], Widths=[250, 80, 390], Aligns=[al_c, al_r, al_c], FillColor=self.BackColor, Font=self.font_YaHei_8) sql_payable = f""" SELECT SUM(fPayable) AS sumPayable, COUNT(fOrderID) AS countOrderID FROM v_all_sales WHERE (fOrderDate = STR_TO_DATE('{dateString}', '%Y-%m-%d')) """ sql_SKFS = f""" select if(isnull(Q.fPaymentMethod),'Sum合计',Q.fPaymentMethod) as skfs, Q.今日收款,Q.今日收款笔数,Q.DIBOTO,Q.DIBOTO笔数,Q.Prepaid,Q.Prepaid笔数,Q.小计Subtotal,Q.笔数小计Subcount from ( SELECT fPaymentMethod , SUM(if(fOrderID = 'DIBOTO' or fOrderID = 'Prepaid', NULL, fAmountCollected)) AS 今日收款 , COUNT(if(fOrderID = 'DIBOTO' or fOrderID = 'Prepaid', NULL, fAmountCollected)) AS 今日收款笔数 , SUM(if(fOrderID = 'DIBOTO', fAmountCollected, NULL)) AS DIBOTO , COUNT(if(fOrderID = 'DIBOTO', fAmountCollected, NULL)) AS DIBOTO笔数 , SUM(if(fOrderID = 'Prepaid', fAmountCollected, NULL)) AS Prepaid , COUNT(if(fOrderID = 'Prepaid', fAmountCollected, NULL)) AS Prepaid笔数 , SUM(fAmountCollected) AS 小计Subtotal, COUNT(fAmountCollected) AS 笔数小计Subcount FROM v_receivables WHERE fReceiptDate=STR_TO_DATE('{dateString}', '%Y-%m-%d') GROUP BY fPaymentMethod WITH ROLLUP) as Q """ title_height = 20 rpt.ReportFooter.AddItem(1, 0, title_height, 720, 30, "本日结算方式统计Today's settlement statistics", Bolder=False, AlignmentFlag=al_c) title_height += 30 title = [ '方式PM', "收当日订单Today's Order Rec", '收欠款DIBOTO', '预付款Prepaid', '小计SubTotle' ] rpt.ReportFooter.AddPrintLables(0, title_height, 25, title, Widths=[120, 150, 150, 150, 150], Aligns=[al_c] * 5, Font=self.font_YaHei_8) tongji_tab = JPQueryFieldInfo(sql_SKFS) title_height += 25 for r in range(len(tongji_tab)): FillColor = QColor(255, 255, 255) if r < (len(tongji_tab) - 1) else QColor( 194, 194, 194) rpt.ReportFooter.AddItem(1, 0, title_height + r * 20, 120, 20, tongji_tab.getDispText([r, 0]), FormatString=' {}', AlignmentFlag=al_l, Font=self.font_YaHei_8, FillColor=self.BackColor) rpt.ReportFooter.AddItem(1, 120, title_height + r * 20, 100, 20, tongji_tab.getDispText([r, 1]), FormatString='{} ', AlignmentFlag=al_r, Font=self.font_YaHei_8, FillColor=self.BackColor) rpt.ReportFooter.AddItem(1, 220, title_height + r * 20, 50, 20, tongji_tab.getDispText([r, 2]), FormatString='{} ', AlignmentFlag=al_r, Font=self.font_YaHei_8, FillColor=self.BackColor) rpt.ReportFooter.AddItem(1, 270, title_height + r * 20, 100, 20, tongji_tab.getDispText([r, 3]), FormatString='{} ', AlignmentFlag=al_r, Font=self.font_YaHei_8, FillColor=self.BackColor) rpt.ReportFooter.AddItem(1, 370, title_height + r * 20, 50, 20, tongji_tab.getDispText([r, 4]), FormatString='{} ', AlignmentFlag=al_r, Font=self.font_YaHei_8, FillColor=self.BackColor) rpt.ReportFooter.AddItem(1, 420, title_height + r * 20, 100, 20, tongji_tab.getDispText([r, 5]), FormatString='{} ', AlignmentFlag=al_r, Font=self.font_YaHei_8, FillColor=self.BackColor) rpt.ReportFooter.AddItem(1, 520, title_height + r * 20, 50, 20, tongji_tab.getDispText([r, 6]), FormatString='{} ', AlignmentFlag=al_r, Font=self.font_YaHei_8, FillColor=self.BackColor) rpt.ReportFooter.AddItem(1, 570, title_height + r * 20, 100, 20, tongji_tab.getDispText([r, 7]), FormatString='{} ', AlignmentFlag=al_r, Font=self.font_YaHei_8, FillColor=self.BackColor) rpt.ReportFooter.AddItem(1, 670, title_height + r * 20, 50, 20, tongji_tab.getDispText([r, 8]), FormatString='{} ', AlignmentFlag=al_r, Font=self.font_YaHei_8, FillColor=self.BackColor) # 总结部分 title_height += (len(tongji_tab) - 1) * 20 title_height += 40 title = [ "当日订单应付Today's Order Payable", "收当日订单Today's Order Rec", '欠款Arrears', ] rpt.ReportFooter.AddPrintLables(120, title_height, 25, title, Widths=[200, 200, 200], Aligns=[al_c] * 3, Font=self.font_YaHei_8) rpt.ReportFooter.AddItem(1, 0, title_height, 120, 45, '总结\nsummary', FormatString='{} ', AlignmentFlag=al_c, Font=self.font_YaHei_8, FillColor=self.BackColor) title_height += 25 payable_tab = JPQueryFieldInfo(sql_payable) v1 = payable_tab.getOnlyData([0, 0]) v2 = tongji_tab.getOnlyData([len(tongji_tab) - 1, 1]) v3 = '{:,.2f}'.format((v1 if v1 else 0) - (v2 if v2 else 0)) ShouDangRiDingDan = tongji_tab.getDispText([len(tongji_tab) - 1, 1 ]) + " " if v2 else "0 " txt = [ payable_tab.getDispText([0, 0]) + " ", JPGetDisplayText(len(payable_tab), str) + " ", ShouDangRiDingDan, tongji_tab.getDispText([len(tongji_tab) - 1, 2]) + " ", v3 + " " ] rpt.ReportFooter.AddPrintLables(120, title_height, 20, txt, Widths=[150, 50, 150, 50, 200], Aligns=[al_r] * 5, Font=self.font_YaHei_8, FillColor=self.BackColor) # 页脚 self.PageFooter.AddItemRect(4, (10, 0, 100, 20), '', FormatString='Page: {Page}/{Pages}', Bolder=False, AlignmentFlag=Qt.AlignLeft, Font=self.font_YaHei_8) self.PageFooter.AddItemRect( 5, (0, 0, 720, 20), '', FormatString="PrintTime: %Y-%m-%d %H:%M:%S", Bolder=False, AlignmentFlag=Qt.AlignRight, Font=self.font_YaHei_8) self.DataSource = [ cur_tab.getRowValueDict(i) for i in range(len(cur_tab)) ]