payroll page mapping finished
This commit is contained in:
@@ -304,18 +304,50 @@ func (l *Luca) GetPageByUrl(url string) (*rod.Page, error) {
|
|||||||
|
|
||||||
return allPages.FindByURL("https://auygs.luca.com.tr/Luca/luca.do")
|
return allPages.FindByURL("https://auygs.luca.com.tr/Luca/luca.do")
|
||||||
}
|
}
|
||||||
func (l *Luca) BordroTableMaping(frame *rod.Page, b *LucaBordro) (string, error) {
|
func (l *Luca) BordroTableMaping(frame *rod.Page, b *LucaBordro) ([]BordroPageScript, error) {
|
||||||
table := frame.MustElements(".i2")
|
table, err := frame.Elements("#scroll > div > table > tbody > tr > td > table > tbody > tr > td") //table kontrol et var mı yok mu diye
|
||||||
for t := 2; t < len(table); t += 2 {
|
if err != nil {
|
||||||
// Satırın özelliklerini al
|
return nil, err
|
||||||
class, _ := table[t].Attribute("class")
|
}
|
||||||
if t == 89 {
|
//table := frame.MustElements(".i2")
|
||||||
|
var mainText string
|
||||||
|
for t := 0; t < len(table); t++ {
|
||||||
|
if t == 150 {
|
||||||
fmt.Print("asda")
|
fmt.Print("asda")
|
||||||
}
|
}
|
||||||
id, _ := table[t+1].Attribute("id")
|
inputElement, err := table[t].Element("input")
|
||||||
|
text, err := table[t].Text()
|
||||||
|
fmt.Print(mainText)
|
||||||
|
if text != "" {
|
||||||
|
mainText = text
|
||||||
|
}
|
||||||
|
if inputElement != nil {
|
||||||
|
if mainText != "" {
|
||||||
|
fmt.Print(t)
|
||||||
|
inputElement, err := table[t+1].Element("input")
|
||||||
|
if inputElement == nil {
|
||||||
|
mainText = ""
|
||||||
|
fmt.Print("Hatalı Text")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
id, err := inputElement.Attribute("id")
|
||||||
|
|
||||||
|
fmt.Print(err)
|
||||||
|
pageScript := BordroPageScript{
|
||||||
|
Value: text,
|
||||||
|
Index: *id,
|
||||||
|
}
|
||||||
|
scriptIndexArray = append(scriptIndexArray, pageScript)
|
||||||
|
fmt.Println("Text:", text)
|
||||||
|
fmt.Println("ID:", *id)
|
||||||
|
fmt.Println("--------------------")
|
||||||
|
mainText = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
// Satırın özelliklerini al
|
||||||
|
|
||||||
// Satırın textini al
|
// Satırın textini al
|
||||||
text, err := table[t].Text()
|
|
||||||
|
|
||||||
fmt.Print(err)
|
fmt.Print(err)
|
||||||
|
|
||||||
@@ -343,31 +375,10 @@ func (l *Luca) BordroTableMaping(frame *rod.Page, b *LucaBordro) (string, error)
|
|||||||
// }
|
// }
|
||||||
// Sonuçları yazdır ///text boşsa id de boş oluyo
|
// Sonuçları yazdır ///text boşsa id de boş oluyo
|
||||||
|
|
||||||
Id := ""
|
|
||||||
if id != nil {
|
|
||||||
Id = *id
|
|
||||||
fmt.Println("ID:", *id)
|
|
||||||
} else {
|
|
||||||
Id = ""
|
|
||||||
}
|
}
|
||||||
if text == "" {
|
return scriptIndexArray, nil
|
||||||
text = "boş Text"
|
|
||||||
}
|
|
||||||
pageScript := BordroPageScript{
|
|
||||||
Value: text,
|
|
||||||
Index: Id,
|
|
||||||
}
|
|
||||||
|
|
||||||
scriptIndexArray = append(scriptIndexArray, pageScript)
|
|
||||||
fmt.Println("Text:", text)
|
|
||||||
fmt.Println("Class:", class)
|
|
||||||
fmt.Println("ID:", Id)
|
|
||||||
fmt.Println("--------------------")
|
|
||||||
}
|
|
||||||
return "", nil
|
|
||||||
}
|
}
|
||||||
|
func (l *Luca) PayrollPageLogin() error {
|
||||||
func (l *Luca) BordroYazPage(month, year int, b *LucaBordro) error {
|
|
||||||
newPage, err := l.GetPageByUrl("https://auygs.luca.com.tr/Luca/luca.do")
|
newPage, err := l.GetPageByUrl("https://auygs.luca.com.tr/Luca/luca.do")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -387,6 +398,7 @@ func (l *Luca) BordroYazPage(month, year int, b *LucaBordro) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
Wait(newPage, 200)
|
||||||
err = ClickItem(frame, "#apy1000m0i1ITD", 1)
|
err = ClickItem(frame, "#apy1000m0i1ITD", 1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -401,11 +413,27 @@ func (l *Luca) BordroYazPage(month, year int, b *LucaBordro) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
Wait(newPage, 1500)
|
Wait(newPage, 1500)
|
||||||
|
|
||||||
err = WaitLoad(frame3)
|
err = WaitLoad(frame3)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *Luca) BordroYaz(month, year int, b *LucaBordro) ([]string, error) {
|
||||||
|
newPage, err := l.GetPageByUrl("https://auygs.luca.com.tr/Luca/luca.do")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
fs3, err := newPage.Element("#frm3")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
frame3, err := fs3.Frame()
|
||||||
|
err = newPage.WaitLoad()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
isyeriId := ""
|
isyeriId := ""
|
||||||
bolumId := ""
|
bolumId := ""
|
||||||
bordroCompanySelectBox, err := frame3.Elements("#isyeriId > option")
|
bordroCompanySelectBox, err := frame3.Elements("#isyeriId > option")
|
||||||
@@ -413,37 +441,39 @@ func (l *Luca) BordroYazPage(month, year int, b *LucaBordro) error {
|
|||||||
text, err := bordroCompanySelectBox[j].Text()
|
text, err := bordroCompanySelectBox[j].Text()
|
||||||
value, err := bordroCompanySelectBox[j].Property("value")
|
value, err := bordroCompanySelectBox[j].Property("value")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
if strings.Trim(text, " ") == b.Sube { //.Sube.Value
|
if strings.Trim(text, " ") == b.Sube { //.Sube.Value
|
||||||
isyeriId = value.String()
|
isyeriId = value.String()
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
fmt.Print(text, value)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
element, err := frame3.Element("#isyeriId")
|
element, err := frame3.Element("#isyeriId")
|
||||||
|
element.WaitLoad()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
selectInput := Select{Element: element, Selector: "#isyeriId"}
|
selectInput := Select{Element: element, Selector: "#isyeriId"}
|
||||||
err = selectInput.SelectItem(isyeriId)
|
err = selectInput.SelectItem(isyeriId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
err = WaitLoad(frame3)
|
err = WaitLoad(frame3)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
bordroDepartmentSelectBox, err := frame3.Elements("#bolumId > option")
|
bordroDepartmentSelectBox, err := frame3.Elements("#bolumId > option")
|
||||||
|
element, err = frame3.Element("#bolumId > option")
|
||||||
|
element.WaitLoad()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
for j := 0; j < len(bordroDepartmentSelectBox); j++ {
|
for j := 0; j < len(bordroDepartmentSelectBox); j++ {
|
||||||
text, err := bordroDepartmentSelectBox[j].Text()
|
text, err := bordroDepartmentSelectBox[j].Text()
|
||||||
value, err := bordroDepartmentSelectBox[j].Property("value")
|
value, err := bordroDepartmentSelectBox[j].Property("value")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
if strings.Trim(text, " ") == b.Bolum { //.Bolum.Value
|
if strings.Trim(text, " ") == b.Bolum { //.Bolum.Value
|
||||||
bolumId = value.String()
|
bolumId = value.String()
|
||||||
@@ -454,39 +484,39 @@ func (l *Luca) BordroYazPage(month, year int, b *LucaBordro) error {
|
|||||||
|
|
||||||
element, err = frame3.Element("#bolumId")
|
element, err = frame3.Element("#bolumId")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
selectInput = Select{Element: element, Selector: "#bolumId"}
|
selectInput = Select{Element: element, Selector: "#bolumId"}
|
||||||
err = selectInput.SelectItem(bolumId)
|
err = selectInput.SelectItem(bolumId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
err = WaitLoad(frame3)
|
err = WaitLoad(frame3)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
err = ClickItem(frame3, "#tr"+strconv.FormatFloat(float64(month), 'f', -1, 64)+" > td:nth-child(1)", 2) //aktarım ayı
|
err = ClickItem(frame3, "#tr"+strconv.FormatFloat(float64(month), 'f', -1, 64)+" > td:nth-child(1)", 2) //aktarım ayı
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
err = WaitLoad(frame3)
|
err = WaitLoad(frame3)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var isEmpty bool = false
|
var isEmpty bool = false
|
||||||
//var targetID string
|
//var targetID string
|
||||||
elems, err := frame3.Elements("#scroll > table > tbody > tr > td[id^='tcKimlikNo']")
|
elems, err := frame3.Elements("#scroll > table > tbody > tr > td[id^='tcKimlikNo']")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
elemsProcess, err := frame3.Elements("#scroll > table > tbody > tr > td > a")
|
elemsProcess, err := frame3.Elements("#scroll > table > tbody > tr > td > a")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
trs, err := frame3.Elements("#scroll > table > tbody > tr")
|
trs, err := frame3.Elements("#scroll > table > tbody > tr")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
var foundIndex int = -1
|
var foundIndex int = -1
|
||||||
if len(elems) == 0 {
|
if len(elems) == 0 {
|
||||||
@@ -495,15 +525,24 @@ func (l *Luca) BordroYazPage(month, year int, b *LucaBordro) error {
|
|||||||
Index: 1,
|
Index: 1,
|
||||||
}
|
}
|
||||||
pageErrors = append(pageErrors, isEmptyError.Error+", Index: "+strconv.Itoa(isEmptyError.Index))
|
pageErrors = append(pageErrors, isEmptyError.Error+", Index: "+strconv.Itoa(isEmptyError.Index))
|
||||||
|
err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(3)", 1)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
err = WaitLoad(frame3)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return pageErrors, err
|
||||||
}
|
}
|
||||||
for j := 0; j < len(elems); j++ {
|
for j := 0; j < len(elems); j++ {
|
||||||
tex, err := elems[j].Text()
|
tex, err := elems[j].Text()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
process, err := elemsProcess[j].Text()
|
process, err := elemsProcess[j].Text()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
}
|
}
|
||||||
if tex == b.TcNo { //.TCKimlikNo.Value
|
if tex == b.TcNo { //.TCKimlikNo.Value
|
||||||
foundIndex = j
|
foundIndex = j
|
||||||
@@ -520,316 +559,107 @@ func (l *Luca) BordroYazPage(month, year int, b *LucaBordro) error {
|
|||||||
Index: 1,
|
Index: 1,
|
||||||
}
|
}
|
||||||
pageErrors = append(pageErrors, isEmptyError.Error+", Index: "+strconv.Itoa(isEmptyError.Index))
|
pageErrors = append(pageErrors, isEmptyError.Error+", Index: "+strconv.Itoa(isEmptyError.Index))
|
||||||
|
err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(3)", 1)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
if foundIndex != -1 {
|
err = WaitLoad(frame3)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return pageErrors, err
|
||||||
|
}
|
||||||
|
if foundIndex != -1 && isEmpty == false {
|
||||||
|
|
||||||
trs[foundIndex].Click(proto.InputMouseButtonLeft, 2)
|
trs[foundIndex].Click(proto.InputMouseButtonLeft, 2)
|
||||||
}
|
}
|
||||||
Wait(newPage, 1500)
|
Wait(newPage, 1500)
|
||||||
err = WaitLoad(frame3)
|
err = WaitLoad(frame3)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, err
|
||||||
|
|
||||||
}
|
}
|
||||||
for k, v := range b.Ucretler {
|
|
||||||
fmt.Print(v, k)
|
|
||||||
//table'da key--> k i bul,
|
|
||||||
//takip eden ilk td'deki ilk input'a v'yi yaz
|
|
||||||
//table'da k'yi bulmazsan ve v de değer varsa hata dön
|
|
||||||
}
|
|
||||||
rsp, err := l.BordroTableMaping(frame3, b)
|
rsp, err := l.BordroTableMaping(frame3, b)
|
||||||
|
if len(rsp) == 0 {
|
||||||
|
//hata ver
|
||||||
|
}
|
||||||
fmt.Print(rsp)
|
fmt.Print(rsp)
|
||||||
//rsp den dönden değerler ile matchlencek ve yazılcak
|
//rsp den dönden değerler ile matchlencek ve yazılcak
|
||||||
for k, v := range b.Ucretler {
|
for k, v := range b.Ucretler {
|
||||||
fmt.Print(v, k)
|
for i := 0; i < len(rsp); i++ {
|
||||||
//table'da key--> k i bul,
|
if k == rsp[i].Value {
|
||||||
//takip eden ilk td'deki ilk input'a v'yi yaz
|
|
||||||
//table'da k'yi bulmazsan ve v de değer varsa hata dön
|
|
||||||
// if strings.Contains(text, k) {
|
|
||||||
// Id := ""
|
|
||||||
// if id != nil {
|
|
||||||
// Id = *id
|
|
||||||
// fmt.Println("ID:", *id)
|
|
||||||
// } else {
|
|
||||||
// Id = ""
|
|
||||||
// }
|
|
||||||
// pageScript := BordroPageScript{
|
|
||||||
// Value: text,
|
|
||||||
// Index: Id,
|
|
||||||
// }
|
|
||||||
|
|
||||||
// scriptIndexArray = append(scriptIndexArray, pageScript)
|
el, err := frame3.Element("#" + rsp[i].Index)
|
||||||
// break
|
if err != nil {
|
||||||
// }
|
return nil, err
|
||||||
|
}
|
||||||
|
err = el.Input(v.String())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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 {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
saveButtonMessage, err := ReceiveDOMMessages(frame3, ".alert-container", "innerText")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if saveButtonMessage != "Bordro hesaplanıyor." {
|
||||||
|
isEmptyError := errorInfo{
|
||||||
|
Error: saveButtonMessage,
|
||||||
|
Index: 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
// for i := 0; i < len(row); i++ {
|
pageErrors = append(pageErrors, isEmptyError.Error+", Index: "+strconv.Itoa(isEmptyError.Index))
|
||||||
// if i != 0 {
|
newBordroPage, err := frame3.Element("body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(4)")
|
||||||
// err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(3)", 1)
|
newBordroPage.WaitLoad()
|
||||||
// if err != nil {
|
if err != nil {
|
||||||
// return err
|
return nil, err
|
||||||
// }
|
}
|
||||||
// }
|
newBordroPage.Click(proto.InputMouseButtonLeft, 1)
|
||||||
|
err = WaitLoad(frame3)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
|
||||||
// table := frame3.MustElements(".i2")
|
}
|
||||||
|
err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(3)", 1)
|
||||||
|
|
||||||
// // Tablodaki tüm satırları al
|
if err != nil {
|
||||||
// // trss := table.MustElements("tr")
|
return nil, err
|
||||||
|
|
||||||
// // Satırları döngü ile işleyerek textleri ve diğer özellikleri al
|
}
|
||||||
// // for t := 0; t < len(table); t++ {
|
return pageErrors, err
|
||||||
// // // Satırın özelliklerini al
|
}
|
||||||
// // class, _ := table[t].Attribute("class")
|
|
||||||
// // id, _ := table[t+1].Attribute("id")
|
|
||||||
|
|
||||||
// // // Satırın textini al
|
err = WaitLoad(frame3)
|
||||||
// // text := table[t].MustText()
|
if err != nil {
|
||||||
// // fmt.Println("Text:", text)
|
return nil, err
|
||||||
// // fmt.Println("Class:", *class)
|
}
|
||||||
// // if id != nil {
|
newBordroPage, err := frame3.Element("body > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(4)")
|
||||||
// // fmt.Println("ID:", *id)
|
newBordroPage.WaitLoad()
|
||||||
// // }
|
if err != nil {
|
||||||
// // fmt.Println("-----------------------------")
|
return nil, err
|
||||||
|
}
|
||||||
|
newBordroPage.Click(proto.InputMouseButtonLeft, 1)
|
||||||
|
err = WaitLoad(frame3)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
|
||||||
// // }
|
}
|
||||||
|
err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(3)", 1)
|
||||||
|
|
||||||
// elements := frame3.MustElements(".i2")
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
|
||||||
// // Elementleri döngü ile işleyerek metinleri ve selectorları al
|
}
|
||||||
// var textsAndSelectors [][]string
|
|
||||||
// for _, el := range elements {
|
|
||||||
// // Elementin metnini al
|
|
||||||
// text := el.MustText()
|
|
||||||
// // Elementin selectorunu al
|
|
||||||
// selector := el.MustEval(`s => {
|
|
||||||
// var path = "";
|
|
||||||
// for (; s && s.nodeType == Node.ELEMENT_NODE; s = s.parentNode)
|
|
||||||
// {
|
|
||||||
// idx = getElementIdx(s);
|
|
||||||
// xname = s.localName.toLowerCase();
|
|
||||||
// path = "/" + xname + "[" + idx + "]" + path;
|
|
||||||
// }
|
|
||||||
// return path;
|
|
||||||
// }`).String()
|
|
||||||
// textsAndSelectors = append(textsAndSelectors, []string{text, selector})
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // Sonuçları yazdır
|
return pageErrors, err
|
||||||
// for _, item := range textsAndSelectors {
|
|
||||||
// fmt.Println("Text:", item[0])
|
|
||||||
// fmt.Println("Selector:", item[1])
|
|
||||||
// }
|
|
||||||
|
|
||||||
// //row[i].FillBordroForm(frame3)
|
|
||||||
// //err yoksa hesapla ba
|
|
||||||
// err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td.right > button", 1)
|
|
||||||
// if err != nil {
|
|
||||||
// log.Fatal(err)
|
|
||||||
// }
|
|
||||||
// err = WaitLoad(frame3)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// newBordroPage, err := frame3.Element("body > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(4)")
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// newBordroPage.Click(proto.InputMouseButtonLeft, 1)
|
|
||||||
// err = WaitLoad(frame3)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// func (l *Luca) BordroYaz(data []*model.Bordro, month float64, year float64) error {
|
|
||||||
// page := l.Page
|
|
||||||
// allPages, err := page.Browser().Pages()
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// newPage, err := allPages.FindByURL("https://auygs.luca.com.tr/Luca/luca.do")
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// fs3, err := newPage.Element("#frm3")
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// frame3, err := fs3.Frame()
|
|
||||||
// err = newPage.WaitLoad()
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
|
|
||||||
// for i := 0; i < len(data); i++ {
|
|
||||||
// if i != 0 {
|
|
||||||
// err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(3)", 1)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// err = WaitLoad(frame3)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// isyeriId := ""
|
|
||||||
// bolumId := ""
|
|
||||||
// bordroCompanySelectBox, err := frame3.Elements("#isyeriId > option")
|
|
||||||
// for j := 0; j < len(bordroCompanySelectBox); j++ {
|
|
||||||
// text, err := bordroCompanySelectBox[j].Text()
|
|
||||||
// value, err := bordroCompanySelectBox[j].Property("value")
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// if strings.Trim(text, " ") == data[i].Sube.Value {
|
|
||||||
// isyeriId = value.String()
|
|
||||||
// break
|
|
||||||
// }
|
|
||||||
// fmt.Print(text, value)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// element, err := frame3.Element("#isyeriId")
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// selectInput := Select{Element: element, Selector: "#isyeriId"}
|
|
||||||
// err = selectInput.SelectItem(isyeriId)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// err = WaitLoad(frame3)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// bordroDepartmentSelectBox, err := frame3.Elements("#bolumId > option")
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// for j := 0; j < len(bordroDepartmentSelectBox); j++ {
|
|
||||||
// text, err := bordroDepartmentSelectBox[j].Text()
|
|
||||||
// value, err := bordroDepartmentSelectBox[j].Property("value")
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// if strings.Trim(text, " ") == data[i].Bolum.Value {
|
|
||||||
// bolumId = value.String()
|
|
||||||
// break
|
|
||||||
// }
|
|
||||||
// fmt.Print(text, value)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// element, err = frame3.Element("#bolumId")
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// selectInput = Select{Element: element, Selector: "#bolumId"}
|
|
||||||
// err = selectInput.SelectItem(bolumId)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// err = WaitLoad(frame3)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// aktarimDonem := strconv.FormatFloat(month, 'f', -1, 64)
|
|
||||||
// err = ClickItem(frame3, "#tr"+aktarimDonem+" > td:nth-child(1)", 2)
|
|
||||||
// if err != nil {
|
|
||||||
// log.Fatal(err)
|
|
||||||
// }
|
|
||||||
// personel := data[i].TCKimlikNo //"54853109724"
|
|
||||||
// fmt.Println(personel)
|
|
||||||
// err = WaitLoad(frame3)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
|
|
||||||
// var isEmpty bool = false
|
|
||||||
// //var targetID string
|
|
||||||
// elems, err := frame3.Elements("#scroll > table > tbody > tr > td[id^='tcKimlikNo']")
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// elemsProcess, err := frame3.Elements("#scroll > table > tbody > tr > td > a")
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// trs, err := frame3.Elements("#scroll > table > tbody > tr")
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// var foundIndex int = -1
|
|
||||||
// if len(elems) == 0 {
|
|
||||||
// isEmptyError := errorInfo{
|
|
||||||
// Error: "Böyle Bir Kullanıcı Bulunamadı",
|
|
||||||
// Index: i,
|
|
||||||
// }
|
|
||||||
// pageErrors = append(pageErrors, isEmptyError.Error+", Index: "+strconv.Itoa(isEmptyError.Index))
|
|
||||||
// continue
|
|
||||||
// }
|
|
||||||
// for j := 0; j < len(elems); j++ {
|
|
||||||
// tex, err := elems[j].Text()
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// process, err := elemsProcess[j].Text()
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// if tex == data[i].TCKimlikNo.Value {
|
|
||||||
// foundIndex = j
|
|
||||||
// if process == "Bordro Sil" {
|
|
||||||
// isEmpty = true
|
|
||||||
// }
|
|
||||||
// break
|
|
||||||
// }
|
|
||||||
// fmt.Print(elems, tex)
|
|
||||||
// }
|
|
||||||
// if isEmpty == true {
|
|
||||||
// isEmptyError := errorInfo{
|
|
||||||
// Error: "Yazılı Bordro Var Lütfen Siliniz",
|
|
||||||
// Index: i,
|
|
||||||
// }
|
|
||||||
// pageErrors = append(pageErrors, isEmptyError.Error+", Index: "+strconv.Itoa(isEmptyError.Index))
|
|
||||||
|
|
||||||
// continue
|
|
||||||
// }
|
|
||||||
// if foundIndex != -1 {
|
|
||||||
|
|
||||||
// trs[foundIndex].Click(proto.InputMouseButtonLeft, 2)
|
|
||||||
// }
|
|
||||||
// err = WaitLoad(frame3)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
|
|
||||||
// }
|
|
||||||
// data[i].FillBordroForm(frame3)
|
|
||||||
// //err yoksa hesapla ba
|
|
||||||
// err = ClickItem(frame3, "body > form > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td.right > button", 1)
|
|
||||||
// if err != nil {
|
|
||||||
// log.Fatal(err)
|
|
||||||
// }
|
|
||||||
// err = WaitLoad(frame3)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// newBordroPage, err := frame3.Element("body > table > tbody > tr.altBar.alt-button-bar > th > table > tbody > tr > td:nth-child(1) > button:nth-child(4)")
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
// }
|
|
||||||
// newBordroPage.Click(proto.InputMouseButtonLeft, 1)
|
|
||||||
// err = WaitLoad(frame3)
|
|
||||||
// if err != nil {
|
|
||||||
// return err
|
|
||||||
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// CloseBrowser(l.Browser)
|
// CloseBrowser(l.Browser)
|
||||||
// return err
|
|
||||||
|
|
||||||
// }
|
|
||||||
|
|
||||||
// func (l *Luca)pageInsert(data, b* model.PageStruct){
|
// func (l *Luca)pageInsert(data, b* model.PageStruct){
|
||||||
|
|
||||||
|
|||||||
@@ -62,6 +62,10 @@ func FillInput(frm *rod.Page, selector string, value string) error {
|
|||||||
func ClickItem(frm *rod.Page, selector string, clickCount int) error {
|
func ClickItem(frm *rod.Page, selector string, clickCount int) error {
|
||||||
// Sayfadan ilgili öğeyi bul
|
// Sayfadan ilgili öğeyi bul
|
||||||
el, err := frm.Element(selector)
|
el, err := frm.Element(selector)
|
||||||
|
err = el.WaitLoad()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
err = el.Click(proto.InputMouseButtonLeft, clickCount)
|
err = el.Click(proto.InputMouseButtonLeft, clickCount)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,7 @@ package model
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
//"github.com/go-rod/rod"
|
||||||
"github.com/go-rod/rod"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type BordroProperty struct {
|
type BordroProperty struct {
|
||||||
@@ -285,33 +284,34 @@ func getPageId(id string) string {
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func (b *Bordro) FillBordroForm(rodForm *rod.Page) error {
|
|
||||||
objValue := reflect.ValueOf(b).Elem()
|
|
||||||
objType := objValue.Type()
|
|
||||||
for i := 0; i < objValue.NumField(); i++ {
|
|
||||||
field := objValue.Field(i)
|
|
||||||
fieldName := objType.Field(i).Name
|
|
||||||
valueField := field.FieldByName("Value")
|
|
||||||
idField := field.FieldByName("Id")
|
|
||||||
idValue := idField.Interface().(string)
|
|
||||||
if idValue != "" {
|
|
||||||
elem, err := rodForm.Element(idField.Interface().(string))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
value := valueField.Interface().(string)
|
|
||||||
// switch expression {
|
|
||||||
// case "input":
|
|
||||||
// //elem.Input(value)
|
|
||||||
|
|
||||||
// }
|
// func (b *Bordro) FillBordroForm(rodForm *rod.Page) error {
|
||||||
elem.Input(value)
|
// objValue := reflect.ValueOf(b).Elem()
|
||||||
}
|
// objType := objValue.Type()
|
||||||
|
// for i := 0; i < objValue.NumField(); i++ {
|
||||||
|
// field := objValue.Field(i)
|
||||||
|
// fieldName := objType.Field(i).Name
|
||||||
|
// valueField := field.FieldByName("Value")
|
||||||
|
// idField := field.FieldByName("Id")
|
||||||
|
// idValue := idField.Interface().(string)
|
||||||
|
// if idValue != "" {
|
||||||
|
// elem, err := rodForm.Element(idField.Interface().(string))
|
||||||
|
// if err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
|
// value := valueField.Interface().(string)
|
||||||
|
// // switch expression {
|
||||||
|
// // case "input":
|
||||||
|
// // //elem.Input(value)
|
||||||
|
|
||||||
fmt.Print(fieldName)
|
// // }
|
||||||
}
|
// elem.Input(value)
|
||||||
return nil
|
// }
|
||||||
}
|
|
||||||
|
// fmt.Print(fieldName)
|
||||||
|
// }
|
||||||
|
// return nil
|
||||||
|
// }
|
||||||
|
|
||||||
// BordroProperty structının tipi de olabilir drop checkbox vs ayrı bir fonksiyon çalışabilir getPageId den dönebilirsin
|
// BordroProperty structının tipi de olabilir drop checkbox vs ayrı bir fonksiyon çalışabilir getPageId den dönebilirsin
|
||||||
func NewFromExcelLine(rows []string) (*Bordro, error) {
|
func NewFromExcelLine(rows []string) (*Bordro, error) {
|
||||||
|
|||||||
@@ -76,6 +76,7 @@ func (s *Srv) Rpa(companyName string, month float64, year float64) error {
|
|||||||
return nil
|
return nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
err = b.PayrollPageLogin()
|
||||||
|
|
||||||
slog.Debug("inputs", "year", year, "month", month)
|
slog.Debug("inputs", "year", year, "month", month)
|
||||||
|
|
||||||
@@ -102,7 +103,7 @@ func (s *Srv) Rpa(companyName string, month float64, year float64) error {
|
|||||||
if rows[0][0] == "" {
|
if rows[0][0] == "" {
|
||||||
rows = rows[1:]
|
rows = rows[1:]
|
||||||
}
|
}
|
||||||
|
var insertMessage []string
|
||||||
// data := make([]*model.Bordro, 0) // []*Bordro türünde bir dilim oluştur
|
// data := make([]*model.Bordro, 0) // []*Bordro türünde bir dilim oluştur
|
||||||
for i := 1; i < len(rows); i++ {
|
for i := 1; i < len(rows); i++ {
|
||||||
brd := &bot.LucaBordro{
|
brd := &bot.LucaBordro{
|
||||||
@@ -125,10 +126,18 @@ func (s *Srv) Rpa(companyName string, month float64, year float64) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = b.BordroYazPage(int(month), int(year), brd)
|
message, err := b.BordroYaz(int(month), int(year), brd)
|
||||||
|
if len(message) > 0 {
|
||||||
|
insertMessage = append(insertMessage, message...)
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
fmt.Print(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if len(insertMessage) > 0 && err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
//emitLog(err.message)
|
//emitLog(err.message)
|
||||||
return err
|
return err
|
||||||
|
|||||||
BIN
app/processFolder/screenshot.png
Normal file
BIN
app/processFolder/screenshot.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
BIN
docs/bordro deneme data.xlsx
Normal file
BIN
docs/bordro deneme data.xlsx
Normal file
Binary file not shown.
Reference in New Issue
Block a user