Upload files to "/"

This commit is contained in:
thanhtl 2025-07-28 15:38:23 +07:00
parent 84ab38b4de
commit 521e15eeb1
3 changed files with 223 additions and 0 deletions

122
ipcas01.py Normal file
View File

@ -0,0 +1,122 @@
import subprocess
import psutil
import time
from datetime import datetime, timedelta
from pywinauto import Application
# --- Prepare dates
yesterday = (datetime.now() - timedelta(days=1)).strftime("%d/%m/%Y")
yesterday2 = (datetime.now() - timedelta(days=1)).strftime("%Y_%m_%d")
# --- Launch IPCAS2
subprocess.Popen([r"C:\IPCAS2\Bin\ipcas2.exe"])
# --- Login window
app = Application(backend="uia").connect(title_re="Login IPCAS-2 System.*", timeout=10)
window = app.window(title_re="Login IPCAS-2 System.*")
window.wait('visible', timeout=10)
window.set_focus()
window.child_window(auto_id="1004", control_type="Edit").set_text("HQTLTHANH") # Username
window.child_window(auto_id="1003", control_type="Edit").set_text("7qANZQ2qkp2C_oAQ") # Password
window.child_window(auto_id="1002", control_type="Button").wait('enabled').invoke()
# --- Sign in
time.sleep(3)
list_control = app.window(title_re="")
list_control.wait('visible', timeout=10)
list_control.set_focus()
list_control.child_window(title="Sign (F2)", auto_id="1005", control_type="Button").wait('enabled').invoke()
list_control.child_window(auto_id="1007", control_type="Edit").set_text("Abc123")
list_control.child_window(title="OK", auto_id="1", control_type="Button").wait('enabled').invoke()
#comment out if you are using the latest version
list_control.child_window(title="OK", auto_id="2", control_type="Button").wait('enabled').invoke()
list_control.child_window(title="OK", auto_id="1003", control_type="Button").wait('enabled').invoke()
# --- Open main IPCAS window
app = Application(backend="uia").connect(title_re=".*IPCAS System.*", timeout=10)
main_win = app.window(title_re=".*IPCAS System.*")
main_win.wait('visible', timeout=10)
main_win.set_focus()
main_win.child_window(class_name="Edit", found_index=0).type_keys("mshr19")
main_win.child_window(title="Tru so chinh", control_type="ListItem").wait('visible', timeout=30)
# --- Switch to Win32 backend for input handling
app = Application(backend="win32").connect(title_re=".*IPCAS System.*", timeout=10)
main_win = app.window(title_re=".*IPCAS System.*")
main_win.wait('visible', timeout=10)
main_win.set_focus()
# --- Configure report parameters
main_win.child_window(title="1000", class_name="Edit").type_keys("^a{BACKSPACE}9999", with_spaces=True)
main_win.child_window(title="Include Sub Branch", class_name="Button").click_input()
main_win.child_window(title="Detail by branch", class_name="Button").click_input()
main_win.child_window(title=" Show BRCD", class_name="Button").click_input()
#main_win.child_window(title="0-TGNNNN-KHNV", class_name="Edit").type_keys("^a{BACKSPACE}TDHSX_BC15{ENTER}", with_spaces=True)
main_win.child_window(title="0-TGNNNN-KHNV", class_name="Edit").type_keys("^a{BACKSPACE}BTD_KD{ENTER}", with_spaces=True)
main_win.child_window(title="Y - Year", class_name="ComboBox").select("D - Day")
main_win.child_window(class_name="PBEDIT105", found_index=0).type_keys("^a{BACKSPACE}" + yesterday, with_spaces=True)
main_win.child_window(title="Base", class_name="Button").click_input()
main_win.child_window(title="&Make Report", class_name="Button").click_input()
# --- Wait for report generation
app = Application(backend="win32").connect(class_name="FNWND3105")
win = app.window(class_name="FNWND3105")
while True:
matches = win.descendants(title=" Completed Successfully 34 items loaded", class_name="Button")
if matches:
break
time.sleep(0.5)
win.child_window(title="Display All Data", class_name="Button").click_input()
# --- Wait for Info popup
app = Application(backend="win32").connect(class_name="FNWND3105")
main_win = app.window(class_name="FNWND3105")
while True:
try:
info_win = app.window(title="Info", class_name="#32770")
if info_win.exists(timeout=1) and info_win.child_window(title="Finished", class_name="Static").exists(timeout=1):
break
except:
pass
time.sleep(0.5)
info_win.set_focus()
info_win.child_window(title="OK", class_name="Button").click_input()
# --- Export report to Excel
main_win.child_window(title="&Excel", class_name="Button").click_input()
# --- Save file dialog
while True:
try:
save_dialog = app.window(title="Save as File", class_name="#32770")
if save_dialog.exists(timeout=1):
break
except:
pass
time.sleep(0.5)
save_dialog.child_window(class_name="Edit").set_edit_text(yesterday2 + "_TDHSX_BC15")
save_dialog.child_window(title="&Save", class_name="Button").click_input()
from pywinauto import Application
from pywinauto.findwindows import find_windows
time.sleep(5) # wait for Excel to load fully
try:
hwnds = find_windows(title_re=".*Excel", class_name="XLMAIN")
if hwnds:
app = Application(backend="win32").connect(handle=hwnds[0])
app.window(handle=hwnds[0]).close()
except Exception:
pass
subprocess.run(["python", "ipcas02.py"], check=True)

52
ipcas02.py Normal file
View File

@ -0,0 +1,52 @@
import subprocess
import psutil
import time
from datetime import datetime, timedelta
from pywinauto import Application
yesterday2 = (datetime.now() - timedelta(days=1)).strftime("%Y_%m_%d")
# --- Reconnect to IPCAS window
app = Application(backend="win32").connect(title_re=".*IPCAS System.*", timeout=10)
main_win = app.window(title_re=".*IPCAS System.*")
main_win.wait('visible', timeout=10)
main_win.set_focus()
# --- Update to branch 9300 and USD
main_win.child_window(title="9999", class_name="Edit").type_keys("^a{BACKSPACE}9300", with_spaces=True)
main_win.child_window(title="Actual", class_name="Button").wait('enabled').click_input()
main_win.child_window(title="VND", class_name="ComboBox").wait('enabled').select("USD")
# --- Generate report
main_win.child_window(title="&Make Report", class_name="Button").click_input()
# --- Export to Excel
main_win.child_window(title="&Excel", class_name="Button").click_input()
# --- Save file dialog
while True:
try:
save_dialog = app.window(title="Save as File", class_name="#32770")
if save_dialog.exists(timeout=1):
break
except:
pass
time.sleep(0.5)
save_dialog.child_window(class_name="Edit").set_edit_text(yesterday2 + "_9300_USD_TDHSX_BC15")
save_dialog.child_window(title="&Save", class_name="Button").click_input()
from pywinauto import Application
from pywinauto.findwindows import find_windows
time.sleep(5) # wait for Excel to load fully
try:
hwnds = find_windows(title_re=".*Excel", class_name="XLMAIN")
if hwnds:
app = Application(backend="win32").connect(handle=hwnds[0])
app.window(handle=hwnds[0]).close()
except Exception:
pass
subprocess.run(["python", "ipcas03.py"], check=True)

49
ipcas03.py Normal file
View File

@ -0,0 +1,49 @@
import time
import psutil
from datetime import datetime, timedelta
from pywinauto import Application
yesterday2 = (datetime.now() - timedelta(days=1)).strftime("%Y_%m_%d")
# --- Reconnect to IPCAS window
app = Application(backend="win32").connect(title_re=".*IPCAS System.*", timeout=10)
main_win = app.window(title_re=".*IPCAS System.*")
main_win.wait('visible', timeout=10)
main_win.set_focus()
# --- Update to branch 9300 and USD
main_win.child_window(title="USD", class_name="ComboBox").select("KHR")
# --- Generate report
main_win.child_window(title="&Make Report", class_name="Button").click_input()
# --- Export to Excel
main_win.child_window(title="&Excel", class_name="Button").click_input()
# --- Save file dialog
while True:
try:
save_dialog = app.window(title="Save as File", class_name="#32770")
if save_dialog.exists(timeout=1):
break
except:
pass
time.sleep(0.5)
save_dialog.child_window(class_name="Edit").set_edit_text(yesterday2 + "_9300_KHR_TDHSX_BC15")
save_dialog.child_window(title="&Save", class_name="Button").click_input()
from pywinauto import Application
from pywinauto.findwindows import find_windows
time.sleep(5) # wait for Excel to load fully
try:
hwnds = find_windows(title_re=".*Excel", class_name="XLMAIN")
if hwnds:
app = Application(backend="win32").connect(handle=hwnds[0])
app.window(handle=hwnds[0]).close()
except Exception:
pass
main_win.child_window(title="&Exit", class_name="Button").click_input()