mufa

mufa_rys1

Nazwa Kod towaru Jm.

Waga jedn.

[kg]

d

[mm]

L

[mm]

Cena netto
Złączka mufowa bez uszczelki PC-ZKOM-100XXX szt. 0,12 100 100 3,15
Złączka mufowa bez uszczelki PC-ZKOM-125XXX szt. 0,15 125 100 3,33
Złączka mufowa bez uszczelki PC-ZKOM-160XXX szt. 0,20 160 100 3,39
Złączka mufowa bez uszczelki PC-ZKOM-200XXX szt. 0,25 200 100 4,05
Złączka mufowa bez uszczelki PC-ZKOM-250XXX szt. 0,31 250 100
5,94
Złączka mufowa bez uszczelki PC-ZKOM-315XXX szt. 0,40 315 100 6,98
Złączka mufowa bez uszczelki PC-ZKOM-355XXX szt. 0,60 355 100
11,28
Złączka mufowa bez uszczelki PC-ZKOM-400XXX szt. 0,80 400 100 11,96
Złączka mufowa bez uszczelki PC-ZKOM-450XXX szt. 0,90 450 100
14,39
Złączka mufowa bez uszczelki PC-ZKOM-500XXX szt. 1,00 500 100 15,63
Złączka mufowa bez uszczelki PC-ZKOM-560XXX szt. 1,15 560 100
17,99
Złączka mufowa bez uszczelki PC-ZKOM-630XXX szt. 1,30 630 100 20,25
Złączka mufowa bez uszczelki PC-ZKOM-710XXX szt. 2,50 710 100 34,19
Złączka mufowa bez uszczelki PC-ZKOM-800XXX szt. 3,90 800 200
38,85
Złączka mufowa bez uszczelki PC-ZKOM-10*XXX szt. 4,90 1000 200 76,32
Złączka mufowa bez uszczelki PC-ZKOM-12*XXX szt. 10,00 1250 200
92,90
        Powyższe ceny obowiązują od 09.05.2011
Sub Raport()
Dim Answer As String
Dim MyNote As String

    'Place your text here
    MyNote = "Obliczenia mogą potrwać kilka minut, dane w arkuszu Wynik zostaną usunięte. Kontynuować?"

    'Display MessageBox
    Answer = MsgBox(MyNote, vbQuestion + vbYesNo, "Uwaga!")

    If Answer = vbNo Then
        'Code for No button Press
       ' MsgBox "You pressed NO!"
    Else
        'Code for Yes button Press
       Call czescA
    End If

End Sub

Private Sub czescA()
Application.ScreenUpdating = False

'Sprawdzamy czy istnieje arkusz "wynik"
    nazwa = "Wynik"
    On Error Resume Next
    x = Worksheets(nazwa).Name
     If Not Err.Number = 0 Then
            'nieisnieje
            Sheets.Add.Name = nazwa
     End If

'Sprawdzamy czy istnieje arkusz "Raport"
    nazwa = "Raport"
    On Error Resume Next
    x = Worksheets(nazwa).Name
     If Not Err.Number = 0 Then
            'nieisnieje
            Sheets.Add.Name = nazwa
     End If
'Sprawdzamy czy istnieje arkusz "Dane"
    nazwa = "Dane"
    On Error Resume Next
    x = Worksheets(nazwa).Name
     If Not Err.Number = 0 Then
            'nieisnieje
            Sheets.Add.Name = nazwa
     End If
Sheets("Dane").Activate
'Sprawdzamy czy istnieje arkusz "Bledy"
    nazwa = "Bledy"
    On Error Resume Next
    x = Worksheets(nazwa).Name
     If Not Err.Number = 0 Then
            'nieisnieje
            Sheets.Add.Name = nazwa
     End If


'data uruchomienia
    Columns("k:k").TextToColumns Destination:=Range("Ap1"), DataType:=xlFixedWidth _
        , OtherChar:=" ", FieldInfo:=Array(Array(0, 2), Array(10, 9)), _
        TrailingMinusNumbers:=True
    Range("Ap1") = "data uruchomienia"
'data modyfikacji
    Columns("N:N").TextToColumns Destination:=Range("Aq1"), DataType:=xlFixedWidth _
            , OtherChar:=" ", FieldInfo:=Array(Array(0, 2), Array(10, 9)), _
            TrailingMinusNumbers:=True
    Range("Aq1") = "data modyfikacji"

'data od
    Columns("O:O").TextToColumns Destination:=Range("Ar1"), DataType:=xlFixedWidth _
            , OtherChar:=" ", FieldInfo:=Array(Array(0, 2), Array(10, 9)), _
            TrailingMinusNumbers:=True
    Range("Ar1") = "data od"
'##########
Range("as:at").Clear
Sheets("Wynik").Range("a:az").Clear
'1############### rozbiór daty uruchomienia
Set IdentNr = Range("h1")
Set TypKlienta = Range("h1")
Set DlugoscOdcinka = Range("i1")
Set rabat1 = Range("u1")
Set Abonament = Range("x1")
Set Kilometr = Range("y1")
Set Uruchomieniowa = Range("z1")
Set rabat2 = Range("ag1")
Set rabat3 = Range("ah1")
Set rabat4 = Range("ai1")
Set Duruchomienia = Range("ap1")
Set Dmodyfikacji = Range("aq1")
Set Dod = Range("ar1")
Set WypiszWynik = Range("as1") 'sam abonament
Set WypiszUruchomieniowa = Range("at1") 'sama uruchomieniowa
Set Status = Range("au1")
        
        c = 1
        b = 1
        
Do While IdentNr.Offset(b, 0) <> Empty

    a = b
    czymulti = 1
    Do While IdentNr.Offset(a, 0) <> Empty
        If IdentNr.Offset(b, 0) = IdentNr.Offset(a, 0) And b <> a Then
            czymulti = czymulti + 1 'liczymy czy łącze wieloodcinkowe dla danego b
        End If
        a = a + 1
    Loop
   If b = 3 Then
        xx = 1
        End If
    If czymulti > 1 Then
        
        a = b
        Do While IdentNr.Offset(a, 0) <> Empty
            If IdentNr.Offset(b, 0) = IdentNr.Offset(a, 0) And WypiszWynik.Offset(a, 0) = Empty Then
                Call wyliczenia(b, a, c, d)
                licz = licz + 1
            End If
            a = a + 1
        Loop
    Else
        If Range("as1").Offset(b, 0) = Empty Then
            Range("AW1").Offset(b, 0) = "Pojedynczy przypadek (w kolumnie h), wiersz: " & b
        End If
    End If
    b = b + 1
    licz = 0
Loop

'Dim Answer As String
'Dim MyNote As String
'    MyNote = "Czy wykonać raport?"
'    Answer = MsgBox(MyNote, vbQuestion + vbYesNo, "???")
'    If Answer = vbNo Then
'        MsgBox "Autor: Wojciech Arabski, warabski@gmial.com"
'    Else
        
        Call czescB
'    End If

End Sub

Private Sub wyliczenia(b, a, c, d)

Set IdentNr = Range("h1")
'Set TypKlienta = Range("h1")
Set DlugoscOdcinka = Range("i1")
Set Duruchomienia = Range("ap1")
Set Dmodyfikacji = Range("aq1")
Set Dod = Range("ar1")
Set rabat1 = Range("u1")
Set SP_NALICZ_MIN = Range("v1")
Set SP_NALICZ_MAX = Range("w1")
Set Abonament = Range("x1")
Set Kilometr = Range("y1")
Set Uruchomieniowa = Range("z1")
Set rabat2 = Range("ag1")
Set rabat3 = Range("ah1")
Set rabat4 = Range("ai1")
Set WypiszWynik = Range("as1") 'sam abonament
Set WypiszUruchomieniowa = Range("at1") 'sama uruchomieniowa
Set Status = Range("au1")
        
        If SP_NALICZ_MIN.Offset(a, 0) = 0 And SP_NALICZ_MAX.Offset(a, 0) = 0 Then
            DlugoscOdcinkaOD = 0
            DlugoscOdcinkaDO = 999999999
        End If
        If SP_NALICZ_MIN.Offset(a, 0) >= 0 And SP_NALICZ_MAX.Offset(a, 0) > 0 Then
            DlugoscOdcinkaOD = SP_NALICZ_MIN.Offset(a, 0)
            DlugoscOdcinkaDO = SP_NALICZ_MAX.Offset(a, 0)
        End If
        If SP_NALICZ_MIN.Offset(a, 0) > 0 And SP_NALICZ_MAX.Offset(a, 0) = 0 Then
            DlugoscOdcinkaOD = SP_NALICZ_MIN.Offset(a, 0)
            DlugoscOdcinkaDO = 999999999
        End If
            If DlugoscOdcinka.Offset(a, 0) > 0 Then
               ' Range("AW1").Offset(a, 0) = "Długość odcinka = 0"
            
            If (DlugoscOdcinka.Offset(a, 0) >= DlugoscOdcinkaOD And DlugoscOdcinka.Offset(a, 0) < DlugoscOdcinkaDO) Then
                'rozbiór daty uruchomienia
                For i = 1 To 3
                    znak = Mid(Duruchomienia.Offset(a, 0), i, 1)
                    If znak = "/" Then
                       DUmc = Mid(Duruchomienia.Offset(a, 0), 1, i - 1)
                       'DUmc = DUmc + 0
                       Exit For
                    End If
                Next
                For j = i + 1 To i + 3
                    znak = Mid(Duruchomienia.Offset(a, 0), j, 1)
                    If znak = "/" Then
                       DUdd = Mid(Duruchomienia.Offset(a, 0), i + 1, j - (i + 1))
                       'DUdd = DUdd + 0
                       Exit For
                    End If
                Next
                For k = j To j + 3
                    znak = Mid(Duruchomienia.Offset(a, 0), k, 1)
                    If znak = "/" Then
                       DUrr = Mid(Duruchomienia.Offset(a, 0), k + 1, k)
                       'DUrr = DUrr + 0
                       Exit For
                    End If
                Next
                DUsummc = (DUrr - 1 * 12) + DUmc
                '1fin###
                '2############### rozbiór daty modyfikacji
                    For i = 1 To 3
                        znak = Mid(Dmodyfikacji.Offset(a, 0), i, 1)
                        If znak = "/" Then
                           DMmc = Mid(Dmodyfikacji.Offset(a, 0), 1, i - 1)
                          ' DMmc = DMmc + 0
                           Exit For
                        End If
                    Next
                    For j = i + 1 To i + 3
                        znak = Mid(Dmodyfikacji.Offset(a, 0), j, 1)
                        If znak = "/" Then
                           DMdd = Mid(Dmodyfikacji.Offset(a, 0), i + 1, j - (i + 1))
                          ' DMdd = DMdd + 0
                           Exit For
                        End If
                    Next
                    For k = j To j + 3
                        znak = Mid(Dmodyfikacji.Offset(a, 0), k, 1)
                        If znak = "/" Then
                            DMrr = Mid(Dmodyfikacji.Offset(a, 0), k + 1, k)
                           ' DMrr = DMrr + 0
                            Exit For
                        End If
                    Next
                    DMsummc = (DMrr - 1 * 12) + DMmc
                '2fin###
                '3############### rozbiór daty OD
                    For i = 1 To 3
                        znak = Mid(Dod.Offset(a, 0), i, 1)
                        If znak = "/" Then
                           DOmc = Mid(Dod.Offset(a, 0), 1, i - 1)
                           'DOmc = DOmc + 0
                           Exit For
                        End If
                    Next
                    For j = i + 1 To i + 3
                        znak = Mid(Dod.Offset(a, 0), j, 1)
                        If znak = "/" Then
                           DOdd = Mid(Dod.Offset(a, 0), i + 1, j - (i + 1))
                           'DOdd = DOdd + 0
                           Exit For
                        End If
                    Next
                    For k = j To j + 3
                        znak = Mid(Dod.Offset(a, 0), k, 1)
                        If znak = "/" Then
                            DOrr = Mid(Dod.Offset(a, 0), k + 1, k)
                            'DOrr = DOrr + 0
                            Exit For
                        End If
                    Next
                    DOsummc = (DOrr - 1 * 12) + DOmc
                'Obliczenie sumy czterech rabatów
                '    Set rabat1 = Range("u1")
                '    Set rabat2 = Range("ag1")
                '    Set rabat3 = Range("ah1")
                '    Set rabat4 = Range("ai1")
                    RabatSum = rabat1.Offset(a, 0) + rabat2.Offset(a, 0) + rabat3.Offset(a, 0) + rabat4.Offset(a, 0)
    
           '#################
            'rozisanie przypadków
            DoZap = 0
                'nowy przypadek 1
                
               ' If DUsummc + 1 = DMsummc And DUsummc + 3 >= DMsummc Then
                    'Przypadek 1a: K+1>= N  =O -opłata za instalacyjna + opłata abonamentowa za miesiąc K ( proreting)+ opłata abonamentowa za miesiąc N
                    If DUsummc + 1 = DMsummc And DUsummc + 1 = DOsummc Then
                            If DoZap = 0 Then
                                Range("av1").Offset(a, 0) = "Przypadek1a"
                                'wypisanie opłaty uruchomienowej:
                                    WypiszUruchomieniowa.Offset(a, 0) = Uruchomieniowa.Offset(a, 0)
                                'opłata abonamentowa za miesiąc K ( proreting):
                                    DuIloscdni = 31 - DUdd
                                    DuDoZapAbonamentK = DuIloscdni * Abonament.Offset(a, 0) / 30
                                    DuDoZapKmK = (DuIloscdni * Kilometr.Offset(a, 0) / 30) * DlugoscOdcinka.Offset(a, 0)
                                'opłata abonamentowa za miesiąc N:
                                    'DmIloscdni = 30
                                    DmDoZapAbonamentN = Abonament.Offset(a, 0)
                                    DmDoZapKmN = Kilometr.Offset(a, 0) * DlugoscOdcinka.Offset(a, 0)
                                'Obliczenie kwoty do zapłaty:
                                    sumaDoZap = DuDoZapAbonamentK + DuDoZapKmK + DmDoZapAbonamentN + DmDoZapKmN
                                'Zaokrąglenie do dwuch miejsc po przecinku:
                            
                                DoZap = Round(sumaDoZap, 2)
                                'wypisanie wyniku:
                                WypiszWynik.Offset(a, 0) = DoZap
                            Else
                                Sheets("Bledy").Range("a1").Offset(d, 0) = "bląd, komórka DoZap w przypadku 1a nie jest równa 0 dla wiersza" & a + 1
                                Sheets("Bledy").Range("a1").Offset(d, 1) = Range("av1").Offset(a, 0)
                                d = d + 1
                            End If
                        
                    End If
                    
                    'Przypadek 1b: K+2  >=   N  =  O  - opłata instalacyjna + opłata abonamentowa za miesiąc K (proreting)   + opłata abonamentowa za misiąc (K+1) + opłata abonamentowa za miesiąc (K+2)
                     If DUsummc + 2 >= DMsummc And DUsummc + 2 = DOsummc Then
                            If DoZap = 0 Then
                                Range("av1").Offset(a, 0) = "Przypadek1b"
            
                                'wypisanie opłaty uruchomienowej:
                                    WypiszUruchomieniowa.Offset(a, 0) = Uruchomieniowa.Offset(a, 0)
                                'opłata abonamentowa za miesiąc K ( proreting):
                                    DuIloscdni = 31 - DUdd
                                    DuDoZapAbonamentK = DuIloscdni * Abonament.Offset(a, 0) / 30
                                    DuDoZapKmK = (DuIloscdni * Kilometr.Offset(a, 0) / 30) * DlugoscOdcinka.Offset(a, 0)
                                'opłata abonamentowa za miesiąc K+1:
                                    'DuIloscdni = 30
                                    DuDoZapAbonamentK1 = Abonament.Offset(a, 0)
                                    DuDoZapKmK1 = Kilometr.Offset(a, 0) * DlugoscOdcinka.Offset(a, 0)
                                'opłata abonamentowa za miesiąc K+2:
                                    'DuIloscdni = 30
                                    DuDoZapAbonamentK2 = Abonament.Offset(a, 0)
                                    DuDoZapKmK2 = Kilometr.Offset(a, 0) * DlugoscOdcinka.Offset(a, 0)
                                'Obliczenie kwoty do zapłaty:
                                    sumaDoZap = DuDoZapAbonamentK + DuDoZapKmK + DuDoZapAbonamentK1 + DuDoZapKmK1 + DuDoZapAbonamentK2 + DuDoZapKmK2
                                'Zaokrąglenie do dwuch miejsc po przecinku:
                            
                                DoZap = Round(sumaDoZap, 2)
                                'wypisanie wyniku:
                                WypiszWynik.Offset(a, 0) = DoZap
                            Else
                                Sheets("Bledy").Range("a1").Offset(d, 0) = "bląd, komórka DoZap w przypadku 1b nie jest równa 0 dla wiersza" & a + 1
                                Sheets("Bledy").Range("a1").Offset(d, 1) = Range("av1").Offset(a, 0)
                                d = d + 1
                            End If
                    End If
                    'Przypadek 1c: K +3 >= N  =  O- opłata instalacyjna + opłata abonamentowa za misiąc K (proreting) + opłata abonamentowa za misiąc (K+1)+ opłata abonamentowa za misiąc (K+2)+ opłata abonamentowa za miesiąc (K+3)
                     If DUsummc + 3 >= DMsummc And DUsummc + 3 = DOsummc Then
                            If DoZap = 0 Then
                               Range("av1").Offset(a, 0) = "Przypadek 1c"
                            
                               'wypisanie opłaty uruchomienowej:
                                   WypiszUruchomieniowa.Offset(a, 0) = Uruchomieniowa.Offset(a, 0)
                               'opłata abonamentowa za miesiąc K ( proreting):
                                   DuIloscdni = 31 - DUdd
                                   DuDoZapAbonamentK = DuIloscdni * Abonament.Offset(a, 0) / 30
                                   DuDoZapKmK = (DuIloscdni * Kilometr.Offset(a, 0) / 30) * DlugoscOdcinka.Offset(a, 0)
                               'opłata abonamentowa za miesiąc K+1:
                                   'DuIloscdni = 30
                                   DuDoZapAbonamentK1 = Abonament.Offset(a, 0)
                                   DuDoZapKmK1 = Kilometr.Offset(a, 0) * DlugoscOdcinka.Offset(a, 0)
                               'opłata abonamentowa za miesiąc K+2:
                                   'DuIloscdni = 30
                                   DuDoZapAbonamentK2 = Abonament.Offset(a, 0)
                                   DuDoZapKmK2 = Kilometr.Offset(a, 0) * DlugoscOdcinka.Offset(a, 0)
                               'opłata abonamentowa za miesiąc (K+3)
                                   'DuIloscdni = 30
                                   DuDoZapAbonamentK3 = Abonament.Offset(a, 0)
                                   DuDoZapKmK3 = Kilometr.Offset(a, 0) * DlugoscOdcinka.Offset(a, 0)
                               'Obliczenie kwoty do zapłaty:
                                   sumaDoZap = DuDoZapAbonamentK + DuDoZapKmK + DuDoZapAbonamentK1 + DuDoZapKmK1 + DuDoZapAbonamentK2 + DuDoZapKmK2 + DuDoZapAbonamentK3 + DuDoZapKmK3
                               'Zaokrąglenie do dwuch miejsc po przecinku:
                            
                                DoZap = Round(sumaDoZap, 2)
                                'wypisanie wyniku:
                                WypiszWynik.Offset(a, 0) = DoZap
                            Else
                                Sheets("Bledy").Range("a1").Offset(d, 0) = "bląd, komórka DoZap w przypadku 1c nie jest równa 0 dla wiersza" & a + 1
                                Sheets("Bledy").Range("a1").Offset(d, 1) = Range("av1").Offset(a, 0)
                                d = d + 1
                            End If
                        End If
                'Koniec nowy przypdek 1
              '  End If
                
                'Nowy przypadek 2
                'K = N  =O    opłata instalacyjana + opłata abonamentowa
                If DUsummc = DMsummc And DUsummc = DOsummc Then
                     If DoZap = 0 Then
                            Range("av1").Offset(a, 0) = "Przypadek 2"
            
                            'opłata abonamentowa za miesiąc K:
                                DuDoZapAbonamentK = Abonament.Offset(a, 0)
                                DuDoZapKmK = Kilometr.Offset(a, 0) * DlugoscOdcinka.Offset(a, 0)
                            'Obliczenie kwoty do zapłaty:
                                sumaDoZap = DuDoZapAbonamentK + DuDoZapKmK
                            'Zaokrąglenie do dwuch miejsc po przecinku:
                       
                            DoZap = Round(sumaDoZap, 2)
                            'wypisanie wyniku:
                                WypiszWynik.Offset(a, 0) = DoZap
                        Else
                            Sheets("Bledy").Range("a1").Offset(d, 0) = "bląd, komórka DoZap w przypadku 2 nie jest równa 0 dla wiersza" & a + 1
                            Sheets("Bledy").Range("a1").Offset(d, 1) = Range("av1").Offset(a, 0)
                            d = d + 1
                        End If
                'Koniec Nowy przypadek 2
                End If
                
                'Nowy przypadek 3 A
                '(K + 1= N i N < O )   opłata instalacyjna + opłata abonament czerwiec(prorating), opłata abonament lipiec, opłata abonament sierpień, opłata abonament wrzesień
                If DUsummc + 1 = DMsummc And DMsummc < DOsummc Then
                    If DoZap = 0 Then
                            Range("av1").Offset(a, 0) = "Przypadek 3a"
                            'wypisanie opłaty uruchomienowej:
                                WypiszUruchomieniowa.Offset(a, 0) = Uruchomieniowa.Offset(a, 0)
                            'opłata abonament czerwiec(prorating) (miesiąc K)
                                DuIloscdni = 31 - DUdd
   &