Advertisement
penright

Untitled

Oct 3rd, 2023
1,539
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 19.82 KB | None | 0 0
  1.    Sub FixPrtRS_Dev()
  2.         Dim EJPrinter As String
  3.         Dim DispServiceOjbName As String
  4.  
  5.  
  6.         DeleteIfExists("c:\iris\ini\prtrs.ini")
  7.         DeleteIfExists("c:\iris\ini\prtdev.ini")
  8.         Dim PrtRS As New PrivateIniFile("c:\iris\ini\prtrs.ini")
  9.         Dim PrtDev As New PrivateIniFile("c:\iris\ini\prtdev.ini")
  10.         EJPrinter = "rcpt1"
  11.         For xLoop As Integer = 0 To PosMaint.RegisterInformations.Count - 1
  12.             Dim RegInfo As PosMaint10.RegInfo = PosMaint.RegisterInformations(xLoop)
  13.             If RegInfo.HardwareType = eHardwareType.Par7700 Then
  14.                 If RegInfo.DefaultConcept = eDefaultConcept.FreshMarket Then
  15.                     DispServiceOjbName = "ParPoleDisplayUSB"
  16.                 Else
  17.                     DispServiceOjbName = "PARLineDisplay"
  18.                 End If
  19.             ElseIf RegInfo.HardwareType = eHardwareType.Panasonic Then
  20.                 If RegInfo.DefaultConcept = eDefaultConcept.FreshMarket Then
  21.                     DispServiceOjbName = "ParPoleDisplayUSB"
  22.                 Else
  23.                     DispServiceOjbName = "itronLineDisplay"
  24.                 End If
  25.             ElseIf RegInfo.HardwareType = eHardwareType.TCx800 Then
  26.                 If RegInfo.DefaultConcept = eDefaultConcept.FreshMarket Then
  27.                     DispServiceOjbName = "ParPoleDisplayUSB"
  28.                 Else
  29.                     DispServiceOjbName = "TCLineDisplay"
  30.                 End If
  31.             Else
  32.                 DispServiceOjbName = "disp" & RegInfo.RegisterNumber.ToString
  33.             End If
  34.             'If xLoop = 3 Then EJPrinter = "rcpt" & PosMaint.RegisterInfo(xLoop).PrimaryPrinter.ToString
  35.             If RegInfo.PrimaryPrinter > 0 Then
  36.                 PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "pri", "rcpt" & RegInfo.PrimaryPrinter.ToString)
  37.                 If RegInfo.BackUpPrinter > 0 Then PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "rcpt" & RegInfo.PrimaryPrinter.ToString, "rcpt" & RegInfo.BackUpPrinter.ToString & ",")
  38.             End If
  39.             'Panasonic registers require something different in the prtrs.ini in order for the MSR to function properly.
  40.             If RegInfo.HardwareType = eHardwareType.Panasonic Then
  41.                 PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "msr", "PanMSR" & RegInfo.RegisterNumber.ToString)
  42.             ElseIf RegInfo.HardwareType = eHardwareType.TCx800 Then
  43.                 PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "msr", "TCxMSR" & RegInfo.RegisterNumber.ToString)
  44.             Else
  45.                 PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "msr", "msr" & RegInfo.RegisterNumber.ToString)
  46.             End If
  47.  
  48.             If PosMaint.PrtExpoNumberPriName.Substring(0, 3).ToUpper = "RCPT" Then
  49.                 PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "reroutegrill1", PosMaint.PrtExpoNumberPriName)
  50.             Else
  51.                 If PosMaint.PrtExpoNumberBackupName <> "NONE" Then
  52.                     PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "grill1", PosMaint.PrtExpoNumberBackupName)
  53.                 End If
  54.             End If
  55.             If RegInfo.PrinterType <> ePrinterType.None Then
  56.                 PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "cash", "cdrw" & RegInfo.RegisterNumber.ToString)
  57.                 PrtDev.WriteString("rcpt" & RegInfo.RegisterNumber.ToString, "cash", "cdrw" & RegInfo.RegisterNumber.ToString)
  58.                 If RegInfo.PrinterType = ePrinterType.Old Then
  59.                     PrtDev.WriteString("rcpt" & RegInfo.RegisterNumber.ToString, "cashclosed", "1")
  60.                     PrtDev.WriteString("rcpt" & RegInfo.RegisterNumber.ToString, "port", "com1")
  61.                     PrtDev.WriteString("rcpt" & RegInfo.RegisterNumber.ToString, "type", "TMT80")
  62.                     PrtDev.WriteString("rcpt" & RegInfo.RegisterNumber.ToString, "speed", "19200")
  63.  
  64.                 Else
  65.                     'Added Because the MainLine did something on OPOS printers
  66.                     PrtDev.WriteString("rcpt" & RegInfo.RegisterNumber.ToString, "cashclosed", "0")
  67.                     PrtDev.WriteString("rcpt" & RegInfo.RegisterNumber.ToString, "type", RegInfo.PrinterType.ToString.Replace("TM_T88II", "TM-T88III"))
  68.                     PrtDev.WriteString("rcpt" & RegInfo.RegisterNumber.ToString, "connecttype", "OPOS")
  69.                     PrtDev.WriteString("rcpt" & RegInfo.RegisterNumber.ToString, "BeforeCut_FeedLinesCount", "0")
  70.                     PrtDev.WriteString("rcpt" & RegInfo.RegisterNumber.ToString, "OPOS_BeforeCut_FeedLinesCount", "0")
  71.                     'Added Becuase OPOS needed a CD Defined
  72.                     If CIntNull(RegInfo.PrinterType.ToString.Substring(RegInfo.PrinterType.ToString.Length - 1)) > 0 Then
  73.                         PrtDev.WriteString("rcpt" & RegInfo.RegisterNumber.ToString, "cashtype", "Standard" & RegInfo.PrinterType.ToString.Substring(8))
  74.                     Else
  75.                         PrtDev.WriteString("rcpt" & RegInfo.RegisterNumber.ToString, "cashtype", "Standard" & RegInfo.PrinterType.ToString.Substring(RegInfo.PrinterType.ToString.Length - 1))
  76.                     End If
  77.                 End If
  78.             End If
  79.             PrtDev.WriteString("rcpt" & RegInfo.RegisterNumber.ToString, "desc", "Register" & RegInfo.RegisterNumber.ToString & " Receipt")
  80.             '***********************************************
  81.             'Added Print Dev logging. For now use file for switch.
  82.             'keep it?
  83.             If IO.File.Exists("c:\LogSpecPrint.flg") Then
  84.                 PrtDev.WriteString("rcpt" & RegInfo.RegisterNumber.ToString, "Logging", "1")
  85.                 PrtDev.WriteString("rcpt" & RegInfo.RegisterNumber.ToString, "Logfilter", "1")
  86.                 PrtDev.WriteString("rcpt" & RegInfo.RegisterNumber.ToString, "Logfilename", "c:\iris\log\PrtDevExt_Reg" & RegInfo.RegisterNumber.ToString.PadLeft(2, "0"c) & ".Log")
  87.             End If
  88.             '***********************************************
  89.             '**************************************************
  90.             'Paul E. 7/12/2018
  91.             'Setting up the camera for dual lanes
  92.             If RegInfo.DefaultConcept = eDefaultConcept.DualLane1 Then
  93.                 PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "UseCamera", "1")
  94.                 PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "CameraServConnectionRetryTime", "3000")
  95.             ElseIf RegInfo.DefaultConcept = eDefaultConcept.DualLane2 Then
  96.                 PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "UseCamera", "2")
  97.                 PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "CameraServConnectionRetryTime", "3000")
  98.             End If
  99.             '**************************************************
  100.             '**************************************************
  101.             'Paul E. 7/12/2018
  102.             'Setting up the OCB for any drive (Single or Dual Lane)
  103.             If (PosMaint.OutSideDisplay1 <> eOutSideDisplayType.None) And (RegInfo.DefaultConcept = eDefaultConcept.DualLane1 OrElse
  104.                                                                            RegInfo.DefaultConcept = eDefaultConcept.SplitScreen OrElse
  105.                                                                            RegInfo.DefaultConcept = eDefaultConcept.Tender OrElse
  106.                                                                            RegInfo.DefaultConcept = eDefaultConcept.TenderBlockReg) Then
  107.                 'ElseIf PosMaint.OutSideDisplay1 = eOutSideDisplayType.SicomOCU Then
  108.                 '    SicomOCU1(PrtDev, 1)
  109.                 '    SicomOCU1(PrtDev, 2)
  110.                 '    'MDispCurrency=ORDER_TOTAL_FORMATTED|ORDER_TOTAL_SYMBOL|TENDER_FORMATTED|TENDER_SYMBOL
  111.                 '    'MDispCurrency=ORDER_TOTAL_FORMATTED|ORDER_TOTAL_SYMBOL|TENDER_FORMATTED|TENDER_SYMBOL
  112.                 '    PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "mdisp1", "OCBDisp1")
  113.                 '                mdisp = OCBDisp1
  114.                 '                mdispdestmask = 4
  115.                 '                MDispDesc =Default
  116.                 'MDispVersion = 200
  117.                 '                MDispCurrency = ORDER_TOTAL_FORMATTED|ORDER_TOTAL_SYMBOL|TENDER_FORMATTED|TENDER_SYMBOL
  118.  
  119.                 ';mdisp1=OCBDisp1
  120.                 ';mdisp2=OCBDisp2
  121.                 ';mdispDefault=mdisp1
  122.                 'numgreet = 0
  123.                 '                displayraw = 0
  124.                 DispThis("OCBDisp1: " & PosMaint.OutSideDisplay1.ToString & NewLine)
  125.                 If PosMaint.OutSideDisplay1 = eOutSideDisplayType.SicomDigitalDisplay Then
  126.                     PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "mdisp", "OCBDisp1")
  127.                     PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "mdispdestmask", "4")
  128.                     PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "MDispDesc", "Default")
  129.                     PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "MDispVersion", "200")
  130.                     PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "MDispCurrency", "ORDER_TOTAL_FORMATTED|ORDER_TOTAL_SYMBOL|TENDER_FORMATTED|TENDER_SYMBOL")
  131.                 Else
  132.                     PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "mdisp1", "OCBDisp1")
  133.                     PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "mdisp2", "OCBDisp2")
  134.                     PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "mdispDefault", "mdisp1")
  135.                     'Added for the 10 register dual lane configuration so that Reg7 can be another order taker.
  136.                     If RegInfo.DefaultConcept = eDefaultConcept.TenderBlockReg AndAlso PosMaint.IsDualLane Then
  137.                         PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "UseCamera", "1")
  138.                         PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "CameraServConnectionRetryTime", "3000")
  139.                     End If
  140.                 End If
  141.             ElseIf (PosMaint.OutSideDisplay2 <> eOutSideDisplayType.None) And RegInfo.DefaultConcept = eDefaultConcept.DualLane2 Then
  142.                 DispThis("OCBDisp2: " & PosMaint.OutSideDisplay2.ToString & NewLine)
  143.                 PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "mdisp1", "OCBDisp1")
  144.                 PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "mdisp2", "OCBDisp2")
  145.                 'PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "MdispCurrency", "ORDER_TOTAL_FORMATTED|TENDER_FORMATTED")
  146.                 PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "mdispDefault", "mdisp2")
  147.             Else
  148.                 PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "mdisp", "disp" & RegInfo.RegisterNumber.ToString)
  149.                 PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "cdispdesc", "0")
  150.                 PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "mdispversion", "200")
  151.                 PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "mdispdestmask", "4294967295")
  152.                 PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "MdispCurrency", "ORDER_TOTAL_FORMATTED|TENDER_FORMATTED|TENDER_SYMBOL")
  153.             End If
  154.             '**************************************************
  155.             PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "numgreet", "0")
  156.             PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "displayraw", "0")
  157.             PrtDev.WriteString("disp" & RegInfo.RegisterNumber.ToString, "Type", "OPOSLineDisplay")
  158.             PrtDev.WriteString("disp" & RegInfo.RegisterNumber.ToString, "OPOSDeviceName", DispServiceOjbName)
  159.             PrtDev.WriteString("disp" & RegInfo.RegisterNumber.ToString, "MAXCLIENTS", "1")
  160.             PrtDev.WriteString("disp" & RegInfo.RegisterNumber.ToString, "RunningTotal", "1")
  161.             PrtDev.WriteString("disp" & RegInfo.RegisterNumber.ToString, "DisplayChildItems", "0")
  162.             PrtDev.WriteString("disp" & RegInfo.RegisterNumber.ToString, "DisplayPricedChildItems", "1")
  163.             PrtDev.WriteString("disp" & RegInfo.RegisterNumber.ToString, "NoOrderActivityTimeout", "200000")
  164.             If IO.File.Exists("c:\LogCdisp.flg") Then
  165.                 PrtDev.WriteString("disp" & RegInfo.RegisterNumber.ToString, "Logging", "1")
  166.             Else
  167.                 PrtDev.WriteString("disp" & RegInfo.RegisterNumber.ToString, "Logging", "0")
  168.             End If
  169.             PrtDev.WriteString("disp" & RegInfo.RegisterNumber.ToString, "Tracing", "1")
  170.             PrtDev.WriteString("disp" & RegInfo.RegisterNumber.ToString, "LogFilter", "127")
  171.             PrtDev.WriteString("disp" & RegInfo.RegisterNumber.ToString, "LogFileName", "C:\Iris\log\OCS.log")
  172.             PrtDev.WriteString("disp" & RegInfo.RegisterNumber.ToString, "Greet", """     Welcome To""")
  173.             PrtDev.WriteString("disp" & RegInfo.RegisterNumber.ToString, "Greet2", """       Braums""")
  174.             PrtDev.WriteString("disp" & RegInfo.RegisterNumber.ToString, "Closed", """     WELCOME TO""")
  175.             PrtDev.WriteString("disp" & RegInfo.RegisterNumber.ToString, "Closed2", """       BRAUMS""")
  176.  
  177.             If RegInfo.ScannerType = eScannerType.PSC Then
  178.                 PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "scanner", RegInfo.ScannerServiceObjectName)
  179.                 PrtRS.WriteString("Reg" & RegInfo.RegisterNumber.ToString, "scale", RegInfo.ScaleServiceObjectName)
  180.                 Dim tmpFileinfo As New IO.FileInfo("c:\braumsrecovery\bat\psc_sc232.dll")
  181.                 If tmpFileinfo.LastWriteTime.Year > 2005 Then
  182.                     PrtDev.WriteString(RegInfo.ScaleServiceObjectName, "AsyncMode", "0")
  183.                     PrtDev.WriteString(RegInfo.ScaleServiceObjectName, "Logging", "1")
  184.                     PrtDev.WriteString(RegInfo.ScaleServiceObjectName, "LogFilter", "127")
  185.                 End If
  186.             End If
  187.         Next
  188.  
  189.         If EJPrinter.Length > 0 Then PrtRS.WriteString("Reg99", "pri", EJPrinter)
  190.         If PosMaint.OutSideDisplay1 = eOutSideDisplayType.AccuviewNG Then
  191.             AccuviewNG(PrtDev, 1)
  192.             AccuviewNG(PrtDev, 2)
  193.             PrtRS.WriteString("OCBDisp1", "MdispCurrency", "ORDER_TOTAL_FORMATTED|TENDER_FORMATTED")
  194.             PrtRS.WriteString("OCBDisp2", "MdispCurrency", "ORDER_TOTAL_FORMATTED|TENDER_FORMATTED")
  195.         ElseIf PosMaint.OutSideDisplay1 = eOutSideDisplayType.SicomOCU Then
  196.             SicomOCU(PrtDev, 1)
  197.             SicomOCU(PrtDev, 2)
  198.             SicomOCU(PrtRS, 1)
  199.             SicomOCU(PrtRS, 2)
  200.         ElseIf PosMaint.OutSideDisplay1 = eOutSideDisplayType.SicomDigitalDisplay Then
  201.             SicomDigitalDisplay(PrtDev, 1)
  202.             SicomDigitalDisplay(PrtDev, 2)
  203.         End If
  204.  
  205.         'PrtRS.DeleteSection "General"
  206.         PrtRS.WriteString("General", "Pserve", "-1")
  207.         Select Case PosMaint.PrtExpoNumberPriName.ToUpper
  208.             Case "NONE"
  209.             Case "CHIT"
  210.                 PrtDev.WriteString("Grill1", "Port", PosMaint.PrtExpoNumberRegCom.ToString)
  211.                 PrtDev.WriteString("Grill1", "Type", "TMT80")
  212.                 PrtDev.WriteString("Grill1", "speed", "19200")
  213.                 PrtDev.WriteString("Grill1", "Desc", "Chit Printer")
  214.             Case "CHITIP"
  215.                 PrtDev.WriteString("Grill1", "Type", "TM-T88IIIE_Chit")
  216.                 PrtDev.WriteString("Grill1", "connecttype", "OPOS")
  217.                 PrtDev.WriteString("Grill1", "Desc", "Chit Printer")
  218.                 PrtDev.WriteString("Grill", "PrtrDelay", "15000")
  219.             Case Else
  220.                 PrtDev.WriteString("Grill1", "Desc", "Chit Printer")
  221.         End Select
  222.  
  223.         PrtDev.WriteString("Grill", "ProcessRefunds", "1")
  224.  
  225.         '*****************************************************************
  226.         'Starting with 3.7.14 we need to set postticketlinefeed to 5 else 0
  227.         If PosMaint10.IrisVersion = "3.7.7.1" Then
  228.             PrtDev.WriteString("Grill", "postticketlinefeed", "0")
  229.         Else
  230.             PrtDev.WriteString("Grill", "postticketlinefeed", "5")
  231.         End If
  232.         '*****************************************************************
  233.  
  234.         '*****************************************************************
  235.         'PE 12/14/2020
  236.         'Fixing Online printing receipt
  237.         PrtDev.WriteString("Grill", "receiptdestexclude", "curbside")
  238.         '*****************************************************************
  239.  
  240.  
  241.         '*****************************************************************
  242.         'Added Print serv loging. For now use file for switch.
  243.         'keep it?
  244.         If IO.File.Exists("c:\LogSpecPrint.flg") Then
  245.             PrtDev.WriteString("Grill", "Logging", "1")
  246.             PrtDev.WriteString("Grill", "Logfilter", "1")
  247.             PrtDev.WriteString("Grill", "Logfilename", "c:\iris\log\PrtServ.Log")
  248.         End If
  249.         '*****************************************************************
  250.  
  251.         For xLoop As Integer = 0 To PosMaint.RegisterInformations.Count - 1
  252.             Dim RegInfo As RegInfo = PosMaint.RegisterInformations(xLoop)
  253.             IO.File.Copy("c:\iris\ini\prtrs.ini", "c:\iris\reginfo\Reg" & PosMaint.RegisterInformations(xLoop).RegisterNumber.ToString & "\ini\prtrs.ini", True)
  254.             IO.File.Copy("c:\iris\ini\prtdev.ini", "c:\iris\reginfo\Reg" & PosMaint.RegisterInformations(xLoop).RegisterNumber.ToString & "\ini\prtdev.ini", True)
  255.             PrtDev.SetFileName("c:\iris\reginfo\Reg" & PosMaint.RegisterInformations(xLoop).RegisterNumber.ToString & "\ini\prtdev.ini")
  256.             'PE 7/7/29/2020
  257.             'When changing to the new multi route scheme, we do not think the different printer scheme are needed aymore.
  258.             '    They are back up and if all works can be delete at some future date
  259.             '*****************************************************************************************************************************
  260.             'Need to fix Chit by using Dest Instead of mask.
  261.             PrtDev.WriteInteger("Grill", "Grill1", PosMaint.MonitorDef("Expedite").Mask(0))
  262.             PrtDev.WriteString("Grill", "Grill1Dest", PosMaint.MonitorDef("Expedite").DestMaskFlags(0))
  263.             PrtDev.WriteString("Grill", "Count", "4")
  264.             PrtDev.WriteString("Grill", "Parent", "0")
  265.             PrtDev.WriteString("Grill", "separategrillitems", "1")
  266.  
  267.             '-----------------------------------------------------------------------------------------------------
  268.             '   Backup on 7/29/2020 and this section can be deleted at some future date.
  269.             'PrtDev.WriteInteger("Grill", "Grill1", PosMaint.MonitorDef("Expedite").Mask)
  270.             'PrtDev.WriteInteger("Grill<2>", "Grill1", PosMaint.MonitorDef("Expedite").Mask)
  271.             'PrtDev.WriteInteger("Grill<3>", "Grill1", PosMaint.MonitorDef("Expedite").Mask)
  272.             'PrtDev.WriteString("Grill", "Grill1Dest", PosMaint.MonitorDef("Expedite").DestMaskFlags)
  273.             'PrtDev.WriteString("Grill<2>", "Grill1Dest", PosMaint.MonitorDef("Expedite").DestMaskFlags)
  274.             'PrtDev.WriteString("Grill<3>", "Grill1Dest", PosMaint.MonitorDef("Expedite").DestMaskFlags)
  275.             'PrtDev.WriteString("Grill", "Count", "4")
  276.             'PrtDev.WriteString("Grill", "Parent", "0")
  277.             'PrtDev.WriteString("Grill", "separategrillitems", "1")
  278.             'PrtDev.WriteString("Grill<2>", "Count", "4")
  279.             'PrtDev.WriteString("Grill<2>", "Parent", "0")
  280.             'PrtDev.WriteString("Grill<2>", "separategrillitems", "1")
  281.             'PrtDev.WriteString("Grill<2>", "postticketlinefeed", "0")
  282.             'PrtDev.WriteString("Grill<3>", "Count", "4")
  283.             'PrtDev.WriteString("Grill<3>", "Parent", "0")
  284.             'PrtDev.WriteString("Grill<3>", "separategrillitems", "1")
  285.             'PrtDev.WriteString("Grill<3>", "postticketlinefeed", "0")
  286.             '-----------------------------------------------------------------------------------------------------
  287.             '*****************************************************************************************************************************
  288.         Next
  289.         PrtRS = Nothing
  290.         PrtDev = Nothing
  291.  
  292.     End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement