file transfer occurred #1
@@ -11,3 +11,11 @@ import {Call} from '@wailsio/runtime';
|
||||
export async function Create() {
|
||||
return Call.ByName("company.Company.Create", ...Array.prototype.slice.call(arguments, 0));
|
||||
}
|
||||
|
||||
/**
|
||||
* @function Edit
|
||||
* @returns {Promise<void>}
|
||||
**/
|
||||
export async function Edit() {
|
||||
return Call.ByName("company.Company.Edit", ...Array.prototype.slice.call(arguments, 0));
|
||||
}
|
||||
|
||||
@@ -24,14 +24,27 @@ export async function CreateCompany(name, memberNumber, username, password) {
|
||||
return Call.ByName("srv.Srv.CreateCompany", ...Array.prototype.slice.call(arguments, 0));
|
||||
}
|
||||
|
||||
/**
|
||||
* @function EditCompany
|
||||
* @param id {number}
|
||||
* @param name {string}
|
||||
* @param memberNumber {string}
|
||||
* @param username {string}
|
||||
* @param password {string}
|
||||
* @returns {Promise<void>}
|
||||
**/
|
||||
export async function EditCompany(id, name, memberNumber, username, password) {
|
||||
return Call.ByName("srv.Srv.EditCompany", ...Array.prototype.slice.call(arguments, 0));
|
||||
}
|
||||
|
||||
/**
|
||||
* @function Rpa
|
||||
* @param companyName {string}
|
||||
* @param companyID {number}
|
||||
* @param month {number}
|
||||
* @param year {number}
|
||||
* @returns {Promise<void>}
|
||||
**/
|
||||
export async function Rpa(companyName, month, year) {
|
||||
export async function Rpa(companyID, month, year) {
|
||||
return Call.ByName("srv.Srv.Rpa", ...Array.prototype.slice.call(arguments, 0));
|
||||
}
|
||||
|
||||
|
||||
@@ -40,24 +40,19 @@ defineEmits([
|
||||
const { dialogRef, onDialogHide, onDialogOK, onDialogCancel } = useDialogPluginComponent()
|
||||
|
||||
const props = defineProps({
|
||||
id: Number,
|
||||
name: String,
|
||||
memberNumber: Number,
|
||||
userName: String,
|
||||
password: String
|
||||
// companyName: String,
|
||||
// initialMemberNumber: Number,
|
||||
// username: String,
|
||||
// password: String
|
||||
})
|
||||
const ld = reactive({
|
||||
id : props.id || 0,
|
||||
name: props.name || '',
|
||||
memberNumber: props.memberNumber || 0,
|
||||
userName: props.userName || '',
|
||||
password: props.password || '',
|
||||
})
|
||||
console.log(props)
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
@@ -7,12 +7,18 @@
|
||||
<q-select v-model="ld.companyID"
|
||||
label="Şirket"
|
||||
option-label="Name"
|
||||
option-value="Name"
|
||||
option-value="Id"
|
||||
:options="ld.companies"
|
||||
map-options
|
||||
emit-value
|
||||
>
|
||||
<template v-slot:after>
|
||||
<q-btn
|
||||
label="Düzenle"
|
||||
color="primary"
|
||||
@click="editCompany"
|
||||
no-caps
|
||||
/>
|
||||
<q-btn
|
||||
label="Yeni Şirket Ekle"
|
||||
color="primary"
|
||||
@@ -34,13 +40,6 @@
|
||||
color="secondary"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-shrink">
|
||||
<q-btn label="Düzenle"
|
||||
@click="editCompany"
|
||||
no-caps
|
||||
color="secondary"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-11 text-right">
|
||||
{{ ld.xlsFile }}
|
||||
</div>
|
||||
@@ -82,9 +81,9 @@
|
||||
<script setup>
|
||||
import { onMounted, reactive } from 'vue'
|
||||
import Company from 'components/dlg/Company.vue'
|
||||
import EditCompany from 'components/dlg/EditCompany.vue'
|
||||
import EditCompanyPage from 'components/dlg/EditCompany.vue'
|
||||
import { useQuasar } from 'quasar'
|
||||
import { Companies, CreateCompany, Rpa, UploadExcel } from 'app/bindings/lib/srv/Srv'
|
||||
import { Companies, CreateCompany, Rpa, UploadExcel ,EditCompany} from 'app/bindings/lib/srv/Srv'
|
||||
import * as wails from '@wailsio/runtime'
|
||||
|
||||
const $q = useQuasar()
|
||||
@@ -102,27 +101,27 @@ onMounted(() => {
|
||||
getCompanies()
|
||||
|
||||
wails.Events.On('logProcess', function (ev) {
|
||||
console.log(ev.data)
|
||||
ld.logProcess.push(ev.data)
|
||||
console.log(ld.logProcess)
|
||||
})
|
||||
})
|
||||
|
||||
const editCompany = function () {
|
||||
console.log(ld.companyID)
|
||||
const selectedCompanyID = ld.companyID;
|
||||
const selectedCompany = ld.companies.find(company => company.Id === selectedCompanyID);
|
||||
$q.dialog({
|
||||
component: EditCompany,
|
||||
component: EditCompanyPage,
|
||||
parent: this,
|
||||
componentProps: {
|
||||
name: ld.companyID.Name,
|
||||
memberNumber: ld.companyID.MemberNumber,
|
||||
userName : ld.companyID.Username,
|
||||
password : ld.companyID.Password,
|
||||
id : parseInt(selectedCompany.Id),
|
||||
name: selectedCompany.Name,
|
||||
memberNumber: selectedCompany.MemberNumber,
|
||||
userName : selectedCompany.Username,
|
||||
password : selectedCompany.Password,
|
||||
},
|
||||
// ----------------------
|
||||
// props that are passed to component instance
|
||||
}).onOk(data => {
|
||||
CreateCompany(data.name, initialMemberNumber, data.username, data.password).then(()=>{
|
||||
EditCompany(data.id, data.name, data.memberNumber, data.userName, data.password).then(()=>{
|
||||
getCompanies()
|
||||
})
|
||||
})
|
||||
|
||||
@@ -11,6 +11,8 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/shopspring/decimal"
|
||||
|
||||
"github.com/go-rod/rod"
|
||||
"github.com/go-rod/rod/lib/launcher"
|
||||
"github.com/go-rod/rod/lib/proto"
|
||||
@@ -30,6 +32,7 @@ type errorInfo struct {
|
||||
type BordroPageScript struct {
|
||||
Index string
|
||||
Value string
|
||||
itemType string
|
||||
}
|
||||
|
||||
func (l *Luca) ErrFunc(index bool) {
|
||||
@@ -121,7 +124,7 @@ func VerifyCaptcha(page *rod.Page) error {
|
||||
}
|
||||
func NewLucaBot() *Luca {
|
||||
l := launcher.New().
|
||||
Headless(false).
|
||||
Headless(true).
|
||||
Devtools(true)
|
||||
|
||||
//defer l.Cleanup()
|
||||
@@ -336,35 +339,47 @@ func (l *Luca) BordroTableMaping(frame *rod.Page, b *LucaBordro) ([]BordroPageSc
|
||||
pageScript := BordroPageScript{
|
||||
Value: text,
|
||||
Index: *id,
|
||||
itemType: "input",
|
||||
}
|
||||
scriptIndexArray = append(scriptIndexArray, pageScript)
|
||||
fmt.Println("Text:", text)
|
||||
fmt.Println("ID:", *id)
|
||||
fmt.Println("--------------------")
|
||||
mainText = ""
|
||||
}
|
||||
|
||||
} else {
|
||||
if t <= len(table)-2 {
|
||||
if text != "" {
|
||||
aad, err := table[t+1].Element("input")
|
||||
inputBox, err := table[t+1].Element("input")
|
||||
selectBox, err := table[t+1].Element("select")
|
||||
fmt.Print(err)
|
||||
if aad != nil {
|
||||
aa, err := aad.Attribute("type")
|
||||
if inputBox != nil {
|
||||
types, err := inputBox.Attribute("type")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if *aa != "hidden" {
|
||||
id, err := aad.Attribute("id")
|
||||
if *types != "hidden" {
|
||||
id, err := inputBox.Attribute("id")
|
||||
pageScript := BordroPageScript{
|
||||
Value: text,
|
||||
Index: *id,
|
||||
itemType: "input",
|
||||
}
|
||||
scriptIndexArray = append(scriptIndexArray, pageScript)
|
||||
fmt.Print(aad, err, id, aa)
|
||||
fmt.Print(inputBox, err, id, types)
|
||||
}
|
||||
|
||||
} else if selectBox != nil {
|
||||
id, err := selectBox.Attribute("id")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
pageScript := BordroPageScript{
|
||||
Value: text,
|
||||
Index: *id,
|
||||
itemType: "selectBox",
|
||||
}
|
||||
scriptIndexArray = append(scriptIndexArray, pageScript)
|
||||
}
|
||||
mainText = ""
|
||||
|
||||
}
|
||||
}
|
||||
@@ -590,22 +605,56 @@ func (l *Luca) BordroYaz(month, year int, b *LucaBordro, lastItem bool) error {
|
||||
}
|
||||
fmt.Print(rsp)
|
||||
//rsp den dönden değerler ile matchlencek ve yazılcak
|
||||
firsts := make(map[string]decimal.Decimal)
|
||||
if value, ok := b.Ucretler["Normal Gün"]; ok {
|
||||
// Anahtarı ve değeri yeni map'e ekle
|
||||
firsts["Normal Gün"] = value
|
||||
}
|
||||
|
||||
for k, v := range firsts {
|
||||
fmt.Print(v)
|
||||
for i := 0; i < len(rsp); i++ {
|
||||
if k == rsp[i].Value {
|
||||
el, err := frame3.Element("#" + rsp[i].Index)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = el.Input(v.String())
|
||||
el.Eval(`this.dispatchEvent(new KeyboardEvent('keydown', {'key': 'Enter'}))`)
|
||||
break
|
||||
}
|
||||
}
|
||||
break
|
||||
}
|
||||
for k, v := range b.Ucretler {
|
||||
var elementInsertControl bool = true
|
||||
tt := v.String()
|
||||
fmt.Print(tt)
|
||||
if k == "Normal Gün" {
|
||||
continue
|
||||
}
|
||||
Wait(frame3, 100)
|
||||
for i := 0; i < len(rsp); i++ {
|
||||
|
||||
if k == rsp[i].Value {
|
||||
|
||||
if rsp[i].itemType == "selectBox" {
|
||||
elemBox, err := frame3.Element("#" + rsp[i].Index)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
selectInput = Select{Element: elemBox, Selector: "#" + rsp[i].Index}
|
||||
err = selectInput.SelectItem(v.String())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
elementInsertControl = false
|
||||
break
|
||||
}
|
||||
el, err := frame3.Element("#" + rsp[i].Index)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = el.Input(v.String())
|
||||
elementInsertControl = false
|
||||
//el.Eval(`this.dispatchEvent(new KeyboardEvent('keydown', {'key': 'Enter'}))`)
|
||||
break
|
||||
}
|
||||
}
|
||||
@@ -628,8 +677,6 @@ func (l *Luca) BordroYaz(month, year int, b *LucaBordro, lastItem bool) error {
|
||||
return errors.New(k + " Sütunu Bulunamadı Taslak Hatası, ")
|
||||
}
|
||||
}
|
||||
fmt.Print(v, k)
|
||||
|
||||
}
|
||||
err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td.right > button", 1)
|
||||
if err != nil {
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
)
|
||||
|
||||
type Company struct {
|
||||
Id int `db:"id"`
|
||||
Name string `db:"name"`
|
||||
MemberNumber string `db:"member_number"`
|
||||
Username string `db:"username"`
|
||||
@@ -24,6 +25,17 @@ VALUES (:name, :member_number, :username, :password)
|
||||
_, err := run.DB.NamedExec(sq, &c)
|
||||
return err
|
||||
}
|
||||
func (c *Company) Edit() error {
|
||||
sq := `
|
||||
UPDATE company SET
|
||||
name = :name,
|
||||
member_number = :member_number,
|
||||
username = :username,
|
||||
password = :password
|
||||
WHERE id = :id;`
|
||||
_, err := run.DB.NamedExec(sq, &c)
|
||||
return err
|
||||
}
|
||||
|
||||
//func GetCompany(companyName string) (Company, error) {
|
||||
// sq := `
|
||||
@@ -37,13 +49,13 @@ VALUES (:name, :member_number, :username, :password)
|
||||
//}
|
||||
//
|
||||
|
||||
func GetCompany(companyName string) (Company, error) {
|
||||
func GetCompany(companyID float64) (Company, error) {
|
||||
var company Company
|
||||
|
||||
sq := `
|
||||
SELECT * FROM company WHERE name = ?
|
||||
SELECT * FROM company WHERE id = ?
|
||||
`
|
||||
err := run.DB.Get(&company, sq, companyName)
|
||||
err := run.DB.Get(&company, sq, companyID)
|
||||
if err != nil {
|
||||
return Company{}, err
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ func InitDB(path string) error {
|
||||
|
||||
companySchema := `
|
||||
create table company (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name text not null unique,
|
||||
member_number text not null,
|
||||
username text not null,
|
||||
|
||||
@@ -32,6 +32,17 @@ func (s *Srv) CreateCompany(name, memberNumber, username, password string) error
|
||||
|
||||
return c.Create()
|
||||
}
|
||||
func (s *Srv) EditCompany(id float64, name, memberNumber, username, password string) error {
|
||||
c := &company.Company{
|
||||
Id: int(id),
|
||||
Name: name,
|
||||
MemberNumber: memberNumber,
|
||||
Username: username,
|
||||
Password: password,
|
||||
}
|
||||
|
||||
return c.Edit()
|
||||
}
|
||||
|
||||
func (s *Srv) UploadExcel() string {
|
||||
dialog := application.OpenFileDialog()
|
||||
@@ -51,13 +62,13 @@ type userInfo struct {
|
||||
accountNo string
|
||||
}
|
||||
|
||||
func (s *Srv) Rpa(companyName string, month float64, year float64) error {
|
||||
func (s *Srv) Rpa(companyID float64, month float64, year float64) error {
|
||||
type CompanyInfo struct {
|
||||
company *company.Company // float64.Company türünü gömme
|
||||
month float64 // yeni bir alan ekliyoruz
|
||||
year float64
|
||||
}
|
||||
user, err := company.GetCompany(companyName)
|
||||
user, err := company.GetCompany(companyID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -69,15 +80,14 @@ func (s *Srv) Rpa(companyName string, month float64, year float64) error {
|
||||
|
||||
//todo: readb company details by name
|
||||
b := bot.NewLucaBot()
|
||||
emitLog("Aktarım Başladı")
|
||||
err = b.Login(user, month, year)
|
||||
if err != nil {
|
||||
//todo: inform user about process and errors
|
||||
emitLog("Şifreniz Hatalı")
|
||||
return nil
|
||||
|
||||
}
|
||||
err = b.PayrollPageLogin()
|
||||
|
||||
slog.Debug("inputs", "year", year, "month", month)
|
||||
|
||||
f, err := excelize.OpenFile(s.xlsFileName)
|
||||
@@ -124,8 +134,7 @@ func (s *Srv) Rpa(companyName string, month float64, year float64) error {
|
||||
key := rows[0][ndx]
|
||||
brd.Ucretler[key], err = decimal.NewFromString(col)
|
||||
if err != nil {
|
||||
//todo: kullanıcıya hata logu ver
|
||||
//veya tekrar okuma denebilinir
|
||||
// emitLog(`excel okunurken sorun oluştu`)
|
||||
fmt.Println(err)
|
||||
}
|
||||
}
|
||||
@@ -145,6 +154,7 @@ func (s *Srv) Rpa(companyName string, month float64, year float64) error {
|
||||
}
|
||||
|
||||
}
|
||||
emitLog("İşlem Tamamlandı")
|
||||
b.ClosingBrowserFromExternalLink()
|
||||
return nil
|
||||
}
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 14 KiB |
Reference in New Issue
Block a user